summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--00_404/index.md4
-rw-r--r--010_me/index.md53
-rw-r--r--080_blog/00013_Old-Software-Fools-Mediawiki-Content/index.md391
-rw-r--r--080_blog/00015_Admin/00005_Miscellanous/index.md (renamed from 080_blog/00015_Miscellanous/index.md)391
-rw-r--r--080_blog/00015_Admin/00010_Various-Cheat-Sheets/00105_GNU-Screen-Multiplexer-Keyboard-Shortcuts/index.md (renamed from 080_blog/00010_Various-Cheat-Sheets/00105_GNU-Screen-Multiplexer-Keyboard-Shortcuts/index.md)0
-rw-r--r--080_blog/00015_Admin/00010_Various-Cheat-Sheets/00110_Midnight-Commander-Cheatsheet/index.md (renamed from 080_blog/00010_Various-Cheat-Sheets/00110_Midnight-Commander-Cheatsheet/index.md)0
-rw-r--r--080_blog/00015_Admin/00010_Various-Cheat-Sheets/index.md (renamed from 080_blog/00010_Various-Cheat-Sheets/index.md)0
-rw-r--r--080_blog/00015_Admin/00070_Password-Management-on-the-Command-Line/index.md (renamed from 080_blog/00070_Password-Management-on-the-Command-Line/index.md)0
-rw-r--r--080_blog/00015_Admin/00090_Miguels-KVM-Adventures/index.md (renamed from 080_blog/00090_Miguels-KVM-Adventures/index.md)0
-rw-r--r--080_blog/00015_Admin/00090_Miguels-KVM-Adventures/ipv4.png (renamed from 080_blog/00090_Miguels-KVM-Adventures/ipv4.png)bin123475 -> 123475 bytes
-rw-r--r--080_blog/00015_Admin/index.md2
-rw-r--r--080_blog/00020_WWW-Projects-and-Apps/aquarelle.jpgbin0 -> 26481 bytes
-rw-r--r--080_blog/00020_WWW-Projects-and-Apps/atenefunds.pngbin0 -> 231690 bytes
-rw-r--r--080_blog/00020_WWW-Projects-and-Apps/atenefunds2.jpgbin0 -> 28192 bytes
-rw-r--r--080_blog/00020_WWW-Projects-and-Apps/atenefunds3.jpgbin0 -> 32643 bytes
-rw-r--r--080_blog/00020_WWW-Projects-and-Apps/atenefunds4.jpgbin0 -> 14992 bytes
-rw-r--r--080_blog/00020_WWW-Projects-and-Apps/atenekom.jpgbin0 -> 6732 bytes
-rw-r--r--080_blog/00020_WWW-Projects-and-Apps/aufbau.jpgbin0 -> 279483 bytes
-rw-r--r--080_blog/00020_WWW-Projects-and-Apps/austria-org-pl-old.pngbin0 -> 581535 bytes
-rw-r--r--080_blog/00020_WWW-Projects-and-Apps/austria-org-pl.pngbin0 -> 431793 bytes
-rw-r--r--080_blog/00020_WWW-Projects-and-Apps/austrian-wine.pngbin0 -> 500283 bytes
-rw-r--r--080_blog/00020_WWW-Projects-and-Apps/balbuza.pngbin0 -> 479725 bytes
-rw-r--r--080_blog/00020_WWW-Projects-and-Apps/bildershopping.jpgbin0 -> 41078 bytes
-rw-r--r--080_blog/00020_WWW-Projects-and-Apps/bildershopping.pngbin0 -> 570595 bytes
-rw-r--r--080_blog/00020_WWW-Projects-and-Apps/bildershopping2.pngbin0 -> 708693 bytes
-rw-r--r--080_blog/00020_WWW-Projects-and-Apps/breitbandausschreibungen1.pngbin0 -> 329626 bytes
-rw-r--r--080_blog/00020_WWW-Projects-and-Apps/breitbandausschreibungen2.pngbin0 -> 408084 bytes
-rw-r--r--080_blog/00020_WWW-Projects-and-Apps/brlr1.pngbin0 -> 176063 bytes
-rw-r--r--080_blog/00020_WWW-Projects-and-Apps/bunzlauer.pngbin0 -> 1810734 bytes
-rw-r--r--080_blog/00020_WWW-Projects-and-Apps/bunzlauershop.pngbin0 -> 452369 bytes
-rw-r--r--080_blog/00020_WWW-Projects-and-Apps/captainsdinner.pngbin0 -> 190249 bytes
-rw-r--r--080_blog/00020_WWW-Projects-and-Apps/casamila.pngbin0 -> 3172147 bytes
-rw-r--r--080_blog/00020_WWW-Projects-and-Apps/condition-red.pngbin0 -> 464616 bytes
-rw-r--r--080_blog/00020_WWW-Projects-and-Apps/copterwerk.pngbin0 -> 841318 bytes
-rw-r--r--080_blog/00020_WWW-Projects-and-Apps/cornea.jpgbin0 -> 30996 bytes
-rw-r--r--080_blog/00020_WWW-Projects-and-Apps/cornea.pngbin0 -> 120721 bytes
-rw-r--r--080_blog/00020_WWW-Projects-and-Apps/cqs.jpgbin0 -> 299525 bytes
-rw-r--r--080_blog/00020_WWW-Projects-and-Apps/cuadro.pngbin0 -> 674510 bytes
-rw-r--r--080_blog/00020_WWW-Projects-and-Apps/flipper.jpgbin0 -> 27938 bytes
-rw-r--r--080_blog/00020_WWW-Projects-and-Apps/flipper2.jpgbin0 -> 53303 bytes
-rw-r--r--080_blog/00020_WWW-Projects-and-Apps/foto-pschill.pngbin0 -> 200807 bytes
-rw-r--r--080_blog/00020_WWW-Projects-and-Apps/ikm.jpgbin0 -> 40688 bytes
-rw-r--r--080_blog/00020_WWW-Projects-and-Apps/immoconnect.pngbin0 -> 531589 bytes
-rw-r--r--080_blog/00020_WWW-Projects-and-Apps/index.md (renamed from 080_blog/020_WWW-Projects/index.md)105
-rw-r--r--080_blog/00020_WWW-Projects-and-Apps/kulturmanag.jpgbin0 -> 49488 bytes
-rw-r--r--080_blog/00020_WWW-Projects-and-Apps/kunst-stuecke.pngbin0 -> 175802 bytes
-rw-r--r--080_blog/00020_WWW-Projects-and-Apps/lev.jpgbin0 -> 39240 bytes
-rw-r--r--080_blog/00020_WWW-Projects-and-Apps/link-all.pngbin0 -> 371759 bytes
-rw-r--r--080_blog/00020_WWW-Projects-and-Apps/maiden.jpgbin0 -> 25425 bytes
-rw-r--r--080_blog/00020_WWW-Projects-and-Apps/maiden2.pngbin0 -> 290072 bytes
-rw-r--r--080_blog/00020_WWW-Projects-and-Apps/mazury.pngbin0 -> 1056601 bytes
-rw-r--r--080_blog/00020_WWW-Projects-and-Apps/meersalzgrotte.pngbin0 -> 918115 bytes
-rw-r--r--080_blog/00020_WWW-Projects-and-Apps/mmtour.pngbin0 -> 1280083 bytes
-rw-r--r--080_blog/00020_WWW-Projects-and-Apps/nadler.pngbin0 -> 311992 bytes
-rw-r--r--080_blog/00020_WWW-Projects-and-Apps/nadler2.pngbin0 -> 595521 bytes
-rw-r--r--080_blog/00020_WWW-Projects-and-Apps/norti.pngbin0 -> 2158182 bytes
-rw-r--r--080_blog/00020_WWW-Projects-and-Apps/panner-admin.pngbin0 -> 56668 bytes
-rw-r--r--080_blog/00020_WWW-Projects-and-Apps/panner.jpgbin0 -> 27992 bytes
-rw-r--r--080_blog/00020_WWW-Projects-and-Apps/platin.pngbin0 -> 1680027 bytes
-rw-r--r--080_blog/00020_WWW-Projects-and-Apps/preschl.jpgbin0 -> 24415 bytes
-rw-r--r--080_blog/00020_WWW-Projects-and-Apps/ringy.pngbin0 -> 774379 bytes
-rw-r--r--080_blog/00020_WWW-Projects-and-Apps/sensor.pngbin0 -> 2363605 bytes
-rw-r--r--080_blog/00020_WWW-Projects-and-Apps/telenetprofi.pngbin0 -> 1095670 bytes
-rw-r--r--080_blog/00020_WWW-Projects-and-Apps/textlabor.jpgbin0 -> 30542 bytes
-rw-r--r--080_blog/00020_WWW-Projects-and-Apps/todoapp.pngbin0 -> 905957 bytes
-rw-r--r--080_blog/00020_WWW-Projects-and-Apps/wekkaprojekt.pngbin0 -> 1123569 bytes
-rw-r--r--080_blog/00020_WWW-Projects-and-Apps/werbereich.pngbin0 -> 432046 bytes
-rw-r--r--080_blog/00040_Haskell-Projects/00040_Graham-Scan/index.md (renamed from 080_blog/00040_Haskell-Projects/00040_Graham-Scan-(Haskell)/index.md)0
-rw-r--r--080_blog/00040_Haskell-Projects/00065_Base64-Encoder/index.md (renamed from 080_blog/00040_Haskell-Projects/00065_Base64-Encoder-(Haskell)/index.md)0
-rw-r--r--080_blog/00040_Haskell-Projects/00120_Lambda-Calculus/index.md (renamed from 080_blog/00040_Haskell-Projects/00120_Lambda-Calculus-(Haskell)/index.md)0
-rw-r--r--080_blog/00040_Haskell-Projects/00130_Calculator-on-Parsec-and-GTK/calc.glade312
-rw-r--r--080_blog/00040_Haskell-Projects/00130_Calculator-on-Parsec-and-GTK/calc.hs74
-rw-r--r--080_blog/00040_Haskell-Projects/00130_Calculator-on-Parsec-and-GTK/calc.pngbin0 -> 22734 bytes
-rw-r--r--080_blog/00040_Haskell-Projects/00130_Calculator-on-Parsec-and-GTK/index.md (renamed from 080_blog/00040_Haskell-Projects/00130_Calculator-on-Parsec-and-GTK-(Haskell)/index.md)16
-rw-r--r--080_blog/00040_Haskell-Projects/00140_Minimalistic-SVG-Generator/SimpleSvg.hs (renamed from 080_blog/00040_Haskell-Projects/00140_Minimalistic-SVG-Generator-(Haskell)/SimpleSvg.hs)0
-rw-r--r--080_blog/00040_Haskell-Projects/00140_Minimalistic-SVG-Generator/index.md (renamed from 080_blog/00040_Haskell-Projects/00140_Minimalistic-SVG-Generator-(Haskell)/index.md)0
-rw-r--r--080_blog/00040_Haskell-Projects/00140_Minimalistic-SVG-Generator/svg.png (renamed from 080_blog/00040_Haskell-Projects/00140_Minimalistic-SVG-Generator-(Haskell)/svg.png)bin13130 -> 13130 bytes
-rw-r--r--080_blog/00040_Haskell-Projects/100_Estatico-Page-Maker/index.md35
-rw-r--r--080_blog/00040_Haskell-Projects/100_Static-Page-Maker-in-Haskell/index.md121
-rw-r--r--080_blog/00100_Webkit-Keyboardless-Navigation/index.md (renamed from 080_blog/0100_Webkit-Keyboardless-Navigation/index.md)0
-rw-r--r--080_blog/00100_Webkit-Keyboardless-Navigation/v1.mp4 (renamed from 080_blog/0100_Webkit-Keyboardless-Navigation/v1.mp4)bin947491 -> 947491 bytes
-rw-r--r--080_blog/00100_Webkit-Keyboardless-Navigation/v1.ogv (renamed from 080_blog/0100_Webkit-Keyboardless-Navigation/v1.ogv)bin1005278 -> 1005278 bytes
-rw-r--r--080_blog/00_garbage/00010_Monospace-Font-Bitmap-Generator/index.md64
-rw-r--r--080_blog/00_garbage/00020_About-Software-Fools/index.md54
-rw-r--r--080_blog/00_garbage/00020_Notes-on-Mail-Clients/index.md144
-rw-r--r--080_blog/00_garbage/00025_Open-Source-Gaming-on-Linux/index.md33
-rw-r--r--080_blog/00_garbage/index.md5
-rw-r--r--080_blog/index.md3
-rw-r--r--Michal-Idziorek.jpg (renamed from 010_me/Michal-Idziorek.jpg)bin8381 -> 8381 bytes
-rw-r--r--Michal_Idziorek_CV.pdf (renamed from 010_me/Michal_Idziorek_CV.pdf)bin1444412 -> 1444412 bytes
-rw-r--r--index.md53
-rw-r--r--template.html2
92 files changed, 931 insertions, 931 deletions
diff --git a/00_404/index.md b/00_404/index.md
index 6e50e7d..d0832ab 100644
--- a/00_404/index.md
+++ b/00_404/index.md
@@ -2,7 +2,6 @@ Page Request resulted in 404
=============================
We are sorry, but the requested page could not be found.
-If you think something went wrong feel free to [contact](/contact) me.
Move along
----------
@@ -11,6 +10,3 @@ Just use one of the Links below to continue browsing this Website:
* [Go Home](/)
* [Read the Blog](/blog)
-* [Browse my projects](/projects)
-* [Check my Portfolio](/work)
-* [Contact me](/contact)
diff --git a/010_me/index.md b/010_me/index.md
deleted file mode 100644
index ec17625..0000000
--- a/010_me/index.md
+++ /dev/null
@@ -1,53 +0,0 @@
-###>>>KWD Michal Idziorek, Michał Idziorek, Michael Idziorek, Idziorek
-###>>>DSC Everything you ever wanted to know about Michal Idziorek. This Website acts as a central Hub hosting his notes, projects, achievements as well as utter failiures.
-###>>>TITLE Michal Idziorek
-Michal Idziorek
-===============
-
-<div itemscope itemtype="http://schema.org/Person">
-Hello and Welcome to the virtual home of <span itemprop="name">Michal Idziorek</span>,
-known as <em itemprop='alternateName'>Miguel the Red Scorpio</em>, a
-<span itemprop="description">developer, software engineer, scientist, philosopher,
-as well as self-proclaimed artist and culinarian</span>.
-Michal Idziorek graduated from the _Vienna University of Technology_
-and holds a _Master of Science_ degree in _Media and Computer Science_.
-
-Over the years Michal professionally engaged in multidisciplinary
-academic, corporate and freelance activities, acquiring a broad toolkit of
-skills, he is continuously and passionately extending.
-
-<div itemprop="image" itemscope itemtype="http://schema.org/ImageObject">
-<figure>
-![](Michal-Idziorek.jpg){itemprop="contentUrl" .img-fluid alt="Michal Idziorek smiling in front of green grass" title="~~ But youth smiles without any reason. It is one of its chiefest charms. ~~"}
-<figcaption itemprop="name">_Michal Idziorek smiling_</figcaption>
-</figure>
-</div>
-
-What is this Website About?
-===========================
-
-This website serves as shelter for some of my [notes](/blog) on a variety
-of subjects and hosts a somehow random selection of my works and projects.
-Please keep in mind, that this website is essentially under sustained
-construction and more content is scheduled to follow.
-
-Contact
-=======
-
-You can Contact me in English, German, Polish or Klingon via any of the following channels:
-
-* email: [m.i@gmx.at](mailto:m.i@gmx.at)
-* XMPP: miguel (on the softwarefools.com server)
-* IRC: oo\_miguel (on freenode or oftc)
-
-Feel free to send questions or suggestions.
-
-CV
-==
-
-Download a PDF version of my Curriculum Vitae:
-
-[Michal\_Idziorek\_CV.pdf](/DATA/Michal_Idziorek_CV.pdf)
-
-It is likely out of date, sorry.
-
diff --git a/080_blog/00013_Old-Software-Fools-Mediawiki-Content/index.md b/080_blog/00013_Old-Software-Fools-Mediawiki-Content/index.md
deleted file mode 100644
index cb6581f..0000000
--- a/080_blog/00013_Old-Software-Fools-Mediawiki-Content/index.md
+++ /dev/null
@@ -1,391 +0,0 @@
-Fool’s Wiki Knowledge
-=====================
-
- February 24, 2016
-
-Migrated from our former Mediawiki:
-
-Welcome to the Foolo-Pedia! Foolo-Pedia is a growing collection of interesting, important, ridiculous or useless information gathered and refined by the SoftwareFools team for all Friends of Fools. We decided to mainly keep this Wiki in english to be compatible with all our costumers and friends. Some destinct pages maybe in polish, german or klingon.
-
-Articles which might be of universal interest, divided by area and topic.
-
-## Minilinux
-
- software fools minimal linux
-
- 1. usb stick
- 2. create one big partition (2gb)
- 3. mkefs.ext4 /dev/sdx1
- 4. mount /dev/sdx1 /mnt
- 5. compile kernel
- 6. cp bzImage /mnt
- 7. boot
-
- 8.
- grub> search /bzImage
- grub> linux /bzImage root=??
-
- PROBLEMS WITH kernel config!
-
-## Kernel Building
-
- cd linux-source-[xxx]
- make mrproper
- cp someconfig .config -i
- make oldconfig
- make menuconfig
- make localmodconfig
- make localyesconfig
- make
- (OPT) make modules
- su
- make install
- (OPT) make modules_install
- (OPT) update-intiramfs -c -k [kernel-postfix]
-
- (REMOVE UNWANTED FILES FROM BOOT!)
- update-grub
- grub-install /dev/sda
- reboot
-
-## GDB
-
- http://www.cprogramming.com/debuggers.html
-
- use gcc or clang with : -ggdb -O0
-
- h - help
-
- r - run
- c - continue
- n - next
- s - step
-
- b - break <line>
- p - print <var>
-
- wa - watch <var>
-
- bt
- frame <number>
- list
- info locals
-
- set <var> = <value>
- set substitute-path FROM TO
-
- call <func>
-
-## clang
-
- http://llvm.org/releases/3.7.0/docs/CMake.html
- http://clang.llvm.org/get_started.html
- put MAKEFLAGS="-j8" or similar in front of your CMake invocations.
-
- extracted llvm to ~/temp/clang/llvm-3.7.0.src/
- extracted clang to ~/temp/clang/llvm-3.7.0.src/tools/clang/
- extracted compiler-rt to ~/temp/clang/llvm-3.7.0.src/projects/compiler-rt
- extracted libcxx to ~/temp/clang/llvm-3.7.0.src/projects/libcxx
-
- $ cd ~/temp/clang/llvm-3.7.0-build
- $ cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/home/miguel/opt/llvm-3.7.0 ../llvm-3.7.0.src
- $ cmake --build .
- $ cmake --build . --target install
-
-## XMPP
-
-### Idea
-
-Today I figured out, once again, that there are many open-source and free (as in freedom) alternatives to all those chat clients and their proprietary protocols, which we dislike and want to avoid. Taking it seriously I decided to set up a XMPP Server on our Softwarefools Server (http://www.softwarefools.com) to finally enable secure and comfortable communication between me, myself and my fellow peers.
-
-### Starting Point
-
-* We have a Debian Virtual Private Server (VPS) Running wheezy (stable)
-* I just found that tutorial: http://wiki.linuxwall.info/doku.php/en:ressources:articles:ejabberd
-
-### I. get package
-
- # apt-get install ejabberd
-
-### II. adapt config
-
-In /etc/ejabberd/ejabberd.cfg adapt the hosts line as that: (if you wonder this is Erlang)
-
- %% Hostname
- {hosts, ["softwarefools.com"]}.
-
-### III. setup certificate
-
- # mkdir /etc/ejabberd/certs
-
-For now we skip the rest of that step and proceed with the self-signed certificate provided by Debian. (/etc/ejabberd/ejabberd.pem)
-
-### IV. restart server
-
- # /etc/init.d/ejabberd restart
-
-### V. create user
-
- # ejabberdctl register miguel softwarefools.com 'pass123'
- # ejabberdctl register niki softwarefools.com 'pass321'
-
-### VI. open ports
-
- # iptables -I INPUT -p tcp --dport 5222 -j ACCEPT
- # iptables -I INPUT -p tcp --dport 5269 -j ACCEPT
-
-TODO: in fact we need more here!
-
-### VII. connect with client
-
-* Get Pidgin http://www.pidgin.im/
-* Connect & Enjoy 
-
-### Further Work
-* certificate
-* dns configuration – should provide xmpp info (?
-
-
-## Benchmark
-
-### Tools for Stress Testing your RIG
-
- May 12, 2017
-
- Some nice tools to stress-test your computer:
-
- CPU: Prime95
- GPU: FurMark
- RAM: MemTest86+
- HDD/SSD: S.M.A.R.T
-
- Ref: http://www.pcworld.com/article/2028882/keep-it-stable-stupid-how-to-stress-test-your-pc-hardware.html
-
-### Networking
-
- 1. Connected my [laptop] and [desktop] via 5meter cat5e cable -> 1000mbit full duplex link
- 2. created ~1.5G ramdisks with tmpfs on each.
- 3. created a 1 giga file with data from /dev/urandom on [desktop]
- 4. copied file with scp from [desktop] to [laptop]
- 5. copied file with scp from [laptop] to [desktop]
- 6. repeated 4 & 5 10 times : average speed ~70+MB/s from desk & 80+MB/s to desk, link stays up all the time. ping around 0.2-0.3ms
- 7. repeated 1-6 with my other 3meter ethernet cable.
- 8. tried both direction simultanously which gave a total data throughput even over 100MB/s
-
-### Hard Disk
-
-To get some information about the disk run:
-
-Request identification info directly from the drive, which is displayed in a new expanded format with considerably more detail than with the older -i option.
-
- $ hdparm -I /dev/sda
-
-Timings
-
- $ hdparm -tT /dev/sda
-
-Clear Cache
-
- $ echo 3 > /proc/sys/vm/drop_caches
-
-I am using this block-size and count which results in ~2GB:
-
- $ dd [...] bs=1048576 count=2048
-
-READ:
-
- $ dd if=test of=/dev/null
- $ dd if=/dev/sdX of=/dev/null
-
-WRTIE:
-
- $ dd if=/dev/zero of=test
- $ dd if=/dev/zero of=/dev/sdX
-
-smartmontools:
-
- seatage:
- Raw_Read_Error_Rate
- Seek_Error_Rate
-
- example:
- % python
- >>> 200009354607 & 0xFFFFFFFF
- 2440858991 <---- total number
- >>> (200009354607 & 0xFFFF00000000) >> 32
- 46 <--- number of errors
-
-## Fixing HDD after Free Falling
-
-So you also dropped your hard-disk and some of your secotrs got damaged,
-probably by the head hitting the platter? The following short text outlines,
-how I approached fixing my disk after it hit the floor. Of course I would
-not rely on this disk for mission critical data anymore, but it
-might serve as a scratch/temporarily/redundant space.
-
-Backup all your data in advance because the disk will almost certainly
-require reformatting and repartitoning after follwing this procedure!
-
-Some Tools/Programms I used:
-
-* smartctl
-* hdparm
-* grep
-
-### smartctl
-
-Try from fastest to slowest to find faulty sector: replace LBAi\_START,LBA\_END with meaningful values.
-
- smartctl -t [long|conveyence|short|select,LBA_START-LBA_END] -C /dev/sda
-
-The following did not work for me. Resulted in ‘interrupted by host’ for some reason.
-Probably the disks goes to sleep or something. Issueing some read operations every minute might fix this(?)
-
- -C to run test in foreground mode!
-
-### hdparm
-
-You can bi-search via –read-sector if complete ranges are affected (As in my case) and then fix them in one step:
-
- for i in {36312851..36312886}; do hdparm --write-sector $i /dev/sda; done
-
-### Example
-
-Exemplary session fixing one sector:
-
-**WARNING: this will destroy your data !**
-
- 1) # smartctl -a /dev/sda | egrep 'Pend|Real|Offline_Unc'
-
- 5 Reallocated_Sector_Ct 0x0033 100 100 036 Pre-fail Always - 4
- 197 Current_Pending_Sector 0x0012 098 098 000 Old_age Always - 47
- 198 Offline_Uncorrectable 0x0010 098 098 000 Old_age Offline - 47
-
- 2) # smartctl -t short /dev/sda
-
- 3) # smartctl -l selftest /dev/sda
-
- [...] 1 Short offline Completed: read failure 90% 10632 152076520
-
- 4) # hdparm --read-sector 152076520 /dev/sda # verification
-
- [...] reading sector 152076520: FAILED: Input/output error
-
- 5) # hdparm --write-sector 152076520 /dev/sda
-
- 6) # smartctl -a /dev/sda | egrep 'Pend|Real|Offline_Unc'
-
- 5 Reallocated_Sector_Ct 0x0033 100 100 036 Pre-fail Always - 4
- 197 Current_Pending_Sector 0x0012 098 098 000 Old_age Always - 46
- 198 Offline_Uncorrectable 0x0010 098 098 000 Old_age Offline - 46
-
-## Raid and LVM
-
-
- Also refer to: http://www.tldp.org/LDP/Linux-Filesystem-Hierarchy/html/foreward.html
-
- Here I will write down some of my considarations about setting up a RAID
- and LVM.
-
- We want to get a performance boost and minimize the ssd wear-out.
- Also we will not put there any mission-critical files, because the content
- of the ssd will not be mirrored. beside regular backups of course.
- We also need to take the limited diskspace into account.
- while our hdd’s are 2*2TB we only have a single 250MB sdd.
-
- So we will be looking at files that are:
-
- * not updated very often
- * read often
- * not critical if they get lost.
- * not too huge
-
- So I consider for my usecase
- * /bin
- * /sbin
- * /boot
- * /lib{,32,64}
-
- * /usr (without /usr/local)
-
- That directories will reside on our raid1 since they contain important files:
- * /home/miguel
- * /root
- * /opt
- * /usr/local
-
- Finally we will mount the following things in ram for superfast and temporary space:
-
- * /tmp
- * /var/log (unless you care about logs)
-
- What about that directories?
- consider speed vs. security vs. drive wear-out
-
- * /etc
- * /var
-
- Never mount swap on your ssd!
-
- == extending logical volume and fs ==
- * https://wiki.archlinux.org/index.php/LVM
-
- # lvextend -L +20G VolGroup00/lvolhome
-
- resize fs (ext2, ext3 or ext4)
- for ext4 this can be done even without unmounting the device
-
- # resize2fs /dev//
-
-## Some RAID Problems on my old Desktop
-
- https://www.thomas-krenn.com/en/wiki/Mdadm_checkarray
- https://plone.lucidsolutions.co.nz/linux/io/ssd-on-nvidia-sata-port-generates-error-eh-in-swncq-mode-and-failed-command-read-fpdma-queued/view
- https://www.howtoforge.com/replacing_hard_disks_in_a_raid1_array
-
- Kernel options: sata_nv.swncq=0
-
- [ 8625.896029] ata5.00: exception Emask 0x0 SAct 0x0 SErr 0x0 action 0x6 frozen
- [ 8625.896035] ata5.00: failed command: WRITE DMA EXT
- [ 8625.896040] ata5.00: cmd 35/00:08:50:06:b0/00:00:13:00:00/e0 tag 0 dma 4096 out
- res 40/00:00:00:4f:c2/00:00:00:00:00/40 Emask 0x4 (timeout)
- [ 8625.896043] ata5.00: status: { DRDY }
- [ 8625.896048] ata5: hard resetting link
- [ 8625.896050] ata5: nv: skipping hardreset on occupied port
- [ 8626.364038] ata5: SATA link up 3.0 Gbps (SStatus 123 SControl 300)
- [ 8631.372026] ata5.00: qc timeout (cmd 0x27)
- [ 8631.372031] ata5.00: failed to read native max address (err_mask=0x4)
- [ 8631.372033] ata5.00: HPA support seems broken, skipping HPA handling
- [ 8631.372035] ata5.00: revalidation failed (errno=-5)
- [ 8631.372042] ata5: hard resetting link
- [ 8631.372044] ata5: nv: skipping hardreset on occupied port
- [ 8631.840045] ata5: SATA link up 3.0 Gbps (SStatus 123 SControl 300)
- [ 8631.864140] ata5.00: configured for UDMA/133
- [ 8631.864146] ata5.00: device reported invalid CHS sector 0
- [ 8631.864154] ata5: EH complete
- [ 8662.888029] ata5.00: exception Emask 0x0 SAct 0x0 SErr 0x0 action 0x6 frozen
- [ 8662.888036] ata5.00: failed command: WRITE DMA EXT
- [ 8662.888041] ata5.00: cmd 35/00:08:50:06:b0/00:00:13:00:00/e0 tag 0 dma 4096 out
- res 40/00:00:00:4f:c2/00:00:00:00:00/40 Emask 0x4 (timeout)
- [ 8662.888043] ata5.00: status: { DRDY }
- [ 8662.888049] ata5: hard resetting link
- [ 8662.888051] ata5: nv: skipping hardreset on occupied port
- [ 8663.356038] ata5: SATA link up 3.0 Gbps (SStatus 123 SControl 300)
- [ 8663.396135] ata5.00: configured for UDMA/133
- [ 8663.396141] ata5.00: device reported invalid CHS sector 0
- [ 8663.396151] ata5: EH complete
- [ 8693.864031] ata5.00: exception Emask 0x0 SAct 0x0 SErr 0x0 action 0x6 frozen
- [ 8693.864038] ata5.00: failed command: WRITE DMA EXT
- [ 8693.864043] ata5.00: cmd 35/00:08:50:06:b0/00:00:13:00:00/e0 tag 0 dma 4096 out
- res 40/00:00:00:4f:c2/00:00:00:00:00/40 Emask 0x4 (timeout)
- [ 8693.864045] ata5.00: status: { DRDY }
- [ 8693.864051] ata5: hard resetting link
- [ 8693.864052] ata5: nv: skipping hardreset on occupied port
- [ 8694.332036] ata5: SATA link up 3.0 Gbps (SStatus 123 SControl 300)
- [ 8694.356134] ata5.00: configured for UDMA/133
- [ 8694.356141] ata5.00: device reported invalid CHS sector 0
- [ 8694.356150] ata5: EH complete
- [ 8724.840030] ata5: limiting SATA link speed to 1.5 Gbps
-
-
-
diff --git a/080_blog/00015_Miscellanous/index.md b/080_blog/00015_Admin/00005_Miscellanous/index.md
index eaaba3a..d247e7e 100644
--- a/080_blog/00015_Miscellanous/index.md
+++ b/080_blog/00015_Admin/00005_Miscellanous/index.md
@@ -473,3 +473,394 @@ Windows Specific Notes
; Specify the number of turns between autoSaves. 0 means no autosave.
AutoSaveInterval = 1
+Fool’s Wiki Knowledge
+=====================
+
+ February 24, 2016
+
+Migrated from our former Mediawiki:
+
+Welcome to the Foolo-Pedia! Foolo-Pedia is a growing collection of interesting, important, ridiculous or useless information gathered and refined by the SoftwareFools team for all Friends of Fools. We decided to mainly keep this Wiki in english to be compatible with all our costumers and friends. Some destinct pages maybe in polish, german or klingon.
+
+Articles which might be of universal interest, divided by area and topic.
+
+## Minilinux
+
+ software fools minimal linux
+
+ 1. usb stick
+ 2. create one big partition (2gb)
+ 3. mkefs.ext4 /dev/sdx1
+ 4. mount /dev/sdx1 /mnt
+ 5. compile kernel
+ 6. cp bzImage /mnt
+ 7. boot
+
+ 8.
+ grub> search /bzImage
+ grub> linux /bzImage root=??
+
+ PROBLEMS WITH kernel config!
+
+## Kernel Building
+
+ cd linux-source-[xxx]
+ make mrproper
+ cp someconfig .config -i
+ make oldconfig
+ make menuconfig
+ make localmodconfig
+ make localyesconfig
+ make
+ (OPT) make modules
+ su
+ make install
+ (OPT) make modules_install
+ (OPT) update-intiramfs -c -k [kernel-postfix]
+
+ (REMOVE UNWANTED FILES FROM BOOT!)
+ update-grub
+ grub-install /dev/sda
+ reboot
+
+## GDB
+
+ http://www.cprogramming.com/debuggers.html
+
+ use gcc or clang with : -ggdb -O0
+
+ h - help
+
+ r - run
+ c - continue
+ n - next
+ s - step
+
+ b - break <line>
+ p - print <var>
+
+ wa - watch <var>
+
+ bt
+ frame <number>
+ list
+ info locals
+
+ set <var> = <value>
+ set substitute-path FROM TO
+
+ call <func>
+
+## clang
+
+ http://llvm.org/releases/3.7.0/docs/CMake.html
+ http://clang.llvm.org/get_started.html
+ put MAKEFLAGS="-j8" or similar in front of your CMake invocations.
+
+ extracted llvm to ~/temp/clang/llvm-3.7.0.src/
+ extracted clang to ~/temp/clang/llvm-3.7.0.src/tools/clang/
+ extracted compiler-rt to ~/temp/clang/llvm-3.7.0.src/projects/compiler-rt
+ extracted libcxx to ~/temp/clang/llvm-3.7.0.src/projects/libcxx
+
+ $ cd ~/temp/clang/llvm-3.7.0-build
+ $ cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/home/miguel/opt/llvm-3.7.0 ../llvm-3.7.0.src
+ $ cmake --build .
+ $ cmake --build . --target install
+
+## XMPP
+
+### Idea
+
+Today I figured out, once again, that there are many open-source and free (as in freedom) alternatives to all those chat clients and their proprietary protocols, which we dislike and want to avoid. Taking it seriously I decided to set up a XMPP Server on our Softwarefools Server (http://www.softwarefools.com) to finally enable secure and comfortable communication between me, myself and my fellow peers.
+
+### Starting Point
+
+* We have a Debian Virtual Private Server (VPS) Running wheezy (stable)
+* I just found that tutorial: http://wiki.linuxwall.info/doku.php/en:ressources:articles:ejabberd
+
+### I. get package
+
+ # apt-get install ejabberd
+
+### II. adapt config
+
+In /etc/ejabberd/ejabberd.cfg adapt the hosts line as that: (if you wonder this is Erlang)
+
+ %% Hostname
+ {hosts, ["softwarefools.com"]}.
+
+### III. setup certificate
+
+ # mkdir /etc/ejabberd/certs
+
+For now we skip the rest of that step and proceed with the self-signed certificate provided by Debian. (/etc/ejabberd/ejabberd.pem)
+
+### IV. restart server
+
+ # /etc/init.d/ejabberd restart
+
+### V. create user
+
+ # ejabberdctl register miguel softwarefools.com 'pass123'
+ # ejabberdctl register niki softwarefools.com 'pass321'
+
+### VI. open ports
+
+ # iptables -I INPUT -p tcp --dport 5222 -j ACCEPT
+ # iptables -I INPUT -p tcp --dport 5269 -j ACCEPT
+
+TODO: in fact we need more here!
+
+### VII. connect with client
+
+* Get Pidgin http://www.pidgin.im/
+* Connect & Enjoy 
+
+### Further Work
+* certificate
+* dns configuration – should provide xmpp info (?
+
+
+## Benchmark
+
+### Tools for Stress Testing your RIG
+
+ May 12, 2017
+
+ Some nice tools to stress-test your computer:
+
+ CPU: Prime95
+ GPU: FurMark
+ RAM: MemTest86+
+ HDD/SSD: S.M.A.R.T
+
+ Ref: http://www.pcworld.com/article/2028882/keep-it-stable-stupid-how-to-stress-test-your-pc-hardware.html
+
+### Networking
+
+ 1. Connected my [laptop] and [desktop] via 5meter cat5e cable -> 1000mbit full duplex link
+ 2. created ~1.5G ramdisks with tmpfs on each.
+ 3. created a 1 giga file with data from /dev/urandom on [desktop]
+ 4. copied file with scp from [desktop] to [laptop]
+ 5. copied file with scp from [laptop] to [desktop]
+ 6. repeated 4 & 5 10 times : average speed ~70+MB/s from desk & 80+MB/s to desk, link stays up all the time. ping around 0.2-0.3ms
+ 7. repeated 1-6 with my other 3meter ethernet cable.
+ 8. tried both direction simultanously which gave a total data throughput even over 100MB/s
+
+### Hard Disk
+
+To get some information about the disk run:
+
+Request identification info directly from the drive, which is displayed in a new expanded format with considerably more detail than with the older -i option.
+
+ $ hdparm -I /dev/sda
+
+Timings
+
+ $ hdparm -tT /dev/sda
+
+Clear Cache
+
+ $ echo 3 > /proc/sys/vm/drop_caches
+
+I am using this block-size and count which results in ~2GB:
+
+ $ dd [...] bs=1048576 count=2048
+
+READ:
+
+ $ dd if=test of=/dev/null
+ $ dd if=/dev/sdX of=/dev/null
+
+WRTIE:
+
+ $ dd if=/dev/zero of=test
+ $ dd if=/dev/zero of=/dev/sdX
+
+smartmontools:
+
+ seatage:
+ Raw_Read_Error_Rate
+ Seek_Error_Rate
+
+ example:
+ % python
+ >>> 200009354607 & 0xFFFFFFFF
+ 2440858991 <---- total number
+ >>> (200009354607 & 0xFFFF00000000) >> 32
+ 46 <--- number of errors
+
+## Fixing HDD after Free Falling
+
+So you also dropped your hard-disk and some of your secotrs got damaged,
+probably by the head hitting the platter? The following short text outlines,
+how I approached fixing my disk after it hit the floor. Of course I would
+not rely on this disk for mission critical data anymore, but it
+might serve as a scratch/temporarily/redundant space.
+
+Backup all your data in advance because the disk will almost certainly
+require reformatting and repartitoning after follwing this procedure!
+
+Some Tools/Programms I used:
+
+* smartctl
+* hdparm
+* grep
+
+### smartctl
+
+Try from fastest to slowest to find faulty sector: replace LBAi\_START,LBA\_END with meaningful values.
+
+ smartctl -t [long|conveyence|short|select,LBA_START-LBA_END] -C /dev/sda
+
+The following did not work for me. Resulted in ‘interrupted by host’ for some reason.
+Probably the disks goes to sleep or something. Issueing some read operations every minute might fix this(?)
+
+ -C to run test in foreground mode!
+
+### hdparm
+
+You can bi-search via –read-sector if complete ranges are affected (As in my case) and then fix them in one step:
+
+ for i in {36312851..36312886}; do hdparm --write-sector $i /dev/sda; done
+
+### Example
+
+Exemplary session fixing one sector:
+
+**WARNING: this will destroy your data !**
+
+ 1) # smartctl -a /dev/sda | egrep 'Pend|Real|Offline_Unc'
+
+ 5 Reallocated_Sector_Ct 0x0033 100 100 036 Pre-fail Always - 4
+ 197 Current_Pending_Sector 0x0012 098 098 000 Old_age Always - 47
+ 198 Offline_Uncorrectable 0x0010 098 098 000 Old_age Offline - 47
+
+ 2) # smartctl -t short /dev/sda
+
+ 3) # smartctl -l selftest /dev/sda
+
+ [...] 1 Short offline Completed: read failure 90% 10632 152076520
+
+ 4) # hdparm --read-sector 152076520 /dev/sda # verification
+
+ [...] reading sector 152076520: FAILED: Input/output error
+
+ 5) # hdparm --write-sector 152076520 /dev/sda
+
+ 6) # smartctl -a /dev/sda | egrep 'Pend|Real|Offline_Unc'
+
+ 5 Reallocated_Sector_Ct 0x0033 100 100 036 Pre-fail Always - 4
+ 197 Current_Pending_Sector 0x0012 098 098 000 Old_age Always - 46
+ 198 Offline_Uncorrectable 0x0010 098 098 000 Old_age Offline - 46
+
+## Raid and LVM
+
+
+ Also refer to: http://www.tldp.org/LDP/Linux-Filesystem-Hierarchy/html/foreward.html
+
+ Here I will write down some of my considarations about setting up a RAID
+ and LVM.
+
+ We want to get a performance boost and minimize the ssd wear-out.
+ Also we will not put there any mission-critical files, because the content
+ of the ssd will not be mirrored. beside regular backups of course.
+ We also need to take the limited diskspace into account.
+ while our hdd’s are 2*2TB we only have a single 250MB sdd.
+
+ So we will be looking at files that are:
+
+ * not updated very often
+ * read often
+ * not critical if they get lost.
+ * not too huge
+
+ So I consider for my usecase
+ * /bin
+ * /sbin
+ * /boot
+ * /lib{,32,64}
+
+ * /usr (without /usr/local)
+
+ That directories will reside on our raid1 since they contain important files:
+ * /home/miguel
+ * /root
+ * /opt
+ * /usr/local
+
+ Finally we will mount the following things in ram for superfast and temporary space:
+
+ * /tmp
+ * /var/log (unless you care about logs)
+
+ What about that directories?
+ consider speed vs. security vs. drive wear-out
+
+ * /etc
+ * /var
+
+ Never mount swap on your ssd!
+
+ == extending logical volume and fs ==
+ * https://wiki.archlinux.org/index.php/LVM
+
+ # lvextend -L +20G VolGroup00/lvolhome
+
+ resize fs (ext2, ext3 or ext4)
+ for ext4 this can be done even without unmounting the device
+
+ # resize2fs /dev//
+
+## Some RAID Problems on my old Desktop
+
+ https://www.thomas-krenn.com/en/wiki/Mdadm_checkarray
+ https://plone.lucidsolutions.co.nz/linux/io/ssd-on-nvidia-sata-port-generates-error-eh-in-swncq-mode-and-failed-command-read-fpdma-queued/view
+ https://www.howtoforge.com/replacing_hard_disks_in_a_raid1_array
+
+ Kernel options: sata_nv.swncq=0
+
+ [ 8625.896029] ata5.00: exception Emask 0x0 SAct 0x0 SErr 0x0 action 0x6 frozen
+ [ 8625.896035] ata5.00: failed command: WRITE DMA EXT
+ [ 8625.896040] ata5.00: cmd 35/00:08:50:06:b0/00:00:13:00:00/e0 tag 0 dma 4096 out
+ res 40/00:00:00:4f:c2/00:00:00:00:00/40 Emask 0x4 (timeout)
+ [ 8625.896043] ata5.00: status: { DRDY }
+ [ 8625.896048] ata5: hard resetting link
+ [ 8625.896050] ata5: nv: skipping hardreset on occupied port
+ [ 8626.364038] ata5: SATA link up 3.0 Gbps (SStatus 123 SControl 300)
+ [ 8631.372026] ata5.00: qc timeout (cmd 0x27)
+ [ 8631.372031] ata5.00: failed to read native max address (err_mask=0x4)
+ [ 8631.372033] ata5.00: HPA support seems broken, skipping HPA handling
+ [ 8631.372035] ata5.00: revalidation failed (errno=-5)
+ [ 8631.372042] ata5: hard resetting link
+ [ 8631.372044] ata5: nv: skipping hardreset on occupied port
+ [ 8631.840045] ata5: SATA link up 3.0 Gbps (SStatus 123 SControl 300)
+ [ 8631.864140] ata5.00: configured for UDMA/133
+ [ 8631.864146] ata5.00: device reported invalid CHS sector 0
+ [ 8631.864154] ata5: EH complete
+ [ 8662.888029] ata5.00: exception Emask 0x0 SAct 0x0 SErr 0x0 action 0x6 frozen
+ [ 8662.888036] ata5.00: failed command: WRITE DMA EXT
+ [ 8662.888041] ata5.00: cmd 35/00:08:50:06:b0/00:00:13:00:00/e0 tag 0 dma 4096 out
+ res 40/00:00:00:4f:c2/00:00:00:00:00/40 Emask 0x4 (timeout)
+ [ 8662.888043] ata5.00: status: { DRDY }
+ [ 8662.888049] ata5: hard resetting link
+ [ 8662.888051] ata5: nv: skipping hardreset on occupied port
+ [ 8663.356038] ata5: SATA link up 3.0 Gbps (SStatus 123 SControl 300)
+ [ 8663.396135] ata5.00: configured for UDMA/133
+ [ 8663.396141] ata5.00: device reported invalid CHS sector 0
+ [ 8663.396151] ata5: EH complete
+ [ 8693.864031] ata5.00: exception Emask 0x0 SAct 0x0 SErr 0x0 action 0x6 frozen
+ [ 8693.864038] ata5.00: failed command: WRITE DMA EXT
+ [ 8693.864043] ata5.00: cmd 35/00:08:50:06:b0/00:00:13:00:00/e0 tag 0 dma 4096 out
+ res 40/00:00:00:4f:c2/00:00:00:00:00/40 Emask 0x4 (timeout)
+ [ 8693.864045] ata5.00: status: { DRDY }
+ [ 8693.864051] ata5: hard resetting link
+ [ 8693.864052] ata5: nv: skipping hardreset on occupied port
+ [ 8694.332036] ata5: SATA link up 3.0 Gbps (SStatus 123 SControl 300)
+ [ 8694.356134] ata5.00: configured for UDMA/133
+ [ 8694.356141] ata5.00: device reported invalid CHS sector 0
+ [ 8694.356150] ata5: EH complete
+ [ 8724.840030] ata5: limiting SATA link speed to 1.5 Gbps
+
+
+
diff --git a/080_blog/00010_Various-Cheat-Sheets/00105_GNU-Screen-Multiplexer-Keyboard-Shortcuts/index.md b/080_blog/00015_Admin/00010_Various-Cheat-Sheets/00105_GNU-Screen-Multiplexer-Keyboard-Shortcuts/index.md
index 80b24b1..80b24b1 100644
--- a/080_blog/00010_Various-Cheat-Sheets/00105_GNU-Screen-Multiplexer-Keyboard-Shortcuts/index.md
+++ b/080_blog/00015_Admin/00010_Various-Cheat-Sheets/00105_GNU-Screen-Multiplexer-Keyboard-Shortcuts/index.md
diff --git a/080_blog/00010_Various-Cheat-Sheets/00110_Midnight-Commander-Cheatsheet/index.md b/080_blog/00015_Admin/00010_Various-Cheat-Sheets/00110_Midnight-Commander-Cheatsheet/index.md
index eedc66a..eedc66a 100644
--- a/080_blog/00010_Various-Cheat-Sheets/00110_Midnight-Commander-Cheatsheet/index.md
+++ b/080_blog/00015_Admin/00010_Various-Cheat-Sheets/00110_Midnight-Commander-Cheatsheet/index.md
diff --git a/080_blog/00010_Various-Cheat-Sheets/index.md b/080_blog/00015_Admin/00010_Various-Cheat-Sheets/index.md
index ee779fa..ee779fa 100644
--- a/080_blog/00010_Various-Cheat-Sheets/index.md
+++ b/080_blog/00015_Admin/00010_Various-Cheat-Sheets/index.md
diff --git a/080_blog/00070_Password-Management-on-the-Command-Line/index.md b/080_blog/00015_Admin/00070_Password-Management-on-the-Command-Line/index.md
index 1b45b02..1b45b02 100644
--- a/080_blog/00070_Password-Management-on-the-Command-Line/index.md
+++ b/080_blog/00015_Admin/00070_Password-Management-on-the-Command-Line/index.md
diff --git a/080_blog/00090_Miguels-KVM-Adventures/index.md b/080_blog/00015_Admin/00090_Miguels-KVM-Adventures/index.md
index f69989b..f69989b 100644
--- a/080_blog/00090_Miguels-KVM-Adventures/index.md
+++ b/080_blog/00015_Admin/00090_Miguels-KVM-Adventures/index.md
diff --git a/080_blog/00090_Miguels-KVM-Adventures/ipv4.png b/080_blog/00015_Admin/00090_Miguels-KVM-Adventures/ipv4.png
index 3dac4ed..3dac4ed 100644
--- a/080_blog/00090_Miguels-KVM-Adventures/ipv4.png
+++ b/080_blog/00015_Admin/00090_Miguels-KVM-Adventures/ipv4.png
Binary files differ
diff --git a/080_blog/00015_Admin/index.md b/080_blog/00015_Admin/index.md
new file mode 100644
index 0000000..fe5bd15
--- /dev/null
+++ b/080_blog/00015_Admin/index.md
@@ -0,0 +1,2 @@
+Admin Stuff
+===========
diff --git a/080_blog/00020_WWW-Projects-and-Apps/aquarelle.jpg b/080_blog/00020_WWW-Projects-and-Apps/aquarelle.jpg
new file mode 100644
index 0000000..be593be
--- /dev/null
+++ b/080_blog/00020_WWW-Projects-and-Apps/aquarelle.jpg
Binary files differ
diff --git a/080_blog/00020_WWW-Projects-and-Apps/atenefunds.png b/080_blog/00020_WWW-Projects-and-Apps/atenefunds.png
new file mode 100644
index 0000000..c3086b2
--- /dev/null
+++ b/080_blog/00020_WWW-Projects-and-Apps/atenefunds.png
Binary files differ
diff --git a/080_blog/00020_WWW-Projects-and-Apps/atenefunds2.jpg b/080_blog/00020_WWW-Projects-and-Apps/atenefunds2.jpg
new file mode 100644
index 0000000..802410b
--- /dev/null
+++ b/080_blog/00020_WWW-Projects-and-Apps/atenefunds2.jpg
Binary files differ
diff --git a/080_blog/00020_WWW-Projects-and-Apps/atenefunds3.jpg b/080_blog/00020_WWW-Projects-and-Apps/atenefunds3.jpg
new file mode 100644
index 0000000..de42e2c
--- /dev/null
+++ b/080_blog/00020_WWW-Projects-and-Apps/atenefunds3.jpg
Binary files differ
diff --git a/080_blog/00020_WWW-Projects-and-Apps/atenefunds4.jpg b/080_blog/00020_WWW-Projects-and-Apps/atenefunds4.jpg
new file mode 100644
index 0000000..c4cb241
--- /dev/null
+++ b/080_blog/00020_WWW-Projects-and-Apps/atenefunds4.jpg
Binary files differ
diff --git a/080_blog/00020_WWW-Projects-and-Apps/atenekom.jpg b/080_blog/00020_WWW-Projects-and-Apps/atenekom.jpg
new file mode 100644
index 0000000..1ad56c7
--- /dev/null
+++ b/080_blog/00020_WWW-Projects-and-Apps/atenekom.jpg
Binary files differ
diff --git a/080_blog/00020_WWW-Projects-and-Apps/aufbau.jpg b/080_blog/00020_WWW-Projects-and-Apps/aufbau.jpg
new file mode 100644
index 0000000..28dc716
--- /dev/null
+++ b/080_blog/00020_WWW-Projects-and-Apps/aufbau.jpg
Binary files differ
diff --git a/080_blog/00020_WWW-Projects-and-Apps/austria-org-pl-old.png b/080_blog/00020_WWW-Projects-and-Apps/austria-org-pl-old.png
new file mode 100644
index 0000000..22437e5
--- /dev/null
+++ b/080_blog/00020_WWW-Projects-and-Apps/austria-org-pl-old.png
Binary files differ
diff --git a/080_blog/00020_WWW-Projects-and-Apps/austria-org-pl.png b/080_blog/00020_WWW-Projects-and-Apps/austria-org-pl.png
new file mode 100644
index 0000000..1aae36a
--- /dev/null
+++ b/080_blog/00020_WWW-Projects-and-Apps/austria-org-pl.png
Binary files differ
diff --git a/080_blog/00020_WWW-Projects-and-Apps/austrian-wine.png b/080_blog/00020_WWW-Projects-and-Apps/austrian-wine.png
new file mode 100644
index 0000000..4f71c98
--- /dev/null
+++ b/080_blog/00020_WWW-Projects-and-Apps/austrian-wine.png
Binary files differ
diff --git a/080_blog/00020_WWW-Projects-and-Apps/balbuza.png b/080_blog/00020_WWW-Projects-and-Apps/balbuza.png
new file mode 100644
index 0000000..7716c40
--- /dev/null
+++ b/080_blog/00020_WWW-Projects-and-Apps/balbuza.png
Binary files differ
diff --git a/080_blog/00020_WWW-Projects-and-Apps/bildershopping.jpg b/080_blog/00020_WWW-Projects-and-Apps/bildershopping.jpg
new file mode 100644
index 0000000..4967066
--- /dev/null
+++ b/080_blog/00020_WWW-Projects-and-Apps/bildershopping.jpg
Binary files differ
diff --git a/080_blog/00020_WWW-Projects-and-Apps/bildershopping.png b/080_blog/00020_WWW-Projects-and-Apps/bildershopping.png
new file mode 100644
index 0000000..b020599
--- /dev/null
+++ b/080_blog/00020_WWW-Projects-and-Apps/bildershopping.png
Binary files differ
diff --git a/080_blog/00020_WWW-Projects-and-Apps/bildershopping2.png b/080_blog/00020_WWW-Projects-and-Apps/bildershopping2.png
new file mode 100644
index 0000000..6492d85
--- /dev/null
+++ b/080_blog/00020_WWW-Projects-and-Apps/bildershopping2.png
Binary files differ
diff --git a/080_blog/00020_WWW-Projects-and-Apps/breitbandausschreibungen1.png b/080_blog/00020_WWW-Projects-and-Apps/breitbandausschreibungen1.png
new file mode 100644
index 0000000..6dff0b7
--- /dev/null
+++ b/080_blog/00020_WWW-Projects-and-Apps/breitbandausschreibungen1.png
Binary files differ
diff --git a/080_blog/00020_WWW-Projects-and-Apps/breitbandausschreibungen2.png b/080_blog/00020_WWW-Projects-and-Apps/breitbandausschreibungen2.png
new file mode 100644
index 0000000..eae90d5
--- /dev/null
+++ b/080_blog/00020_WWW-Projects-and-Apps/breitbandausschreibungen2.png
Binary files differ
diff --git a/080_blog/00020_WWW-Projects-and-Apps/brlr1.png b/080_blog/00020_WWW-Projects-and-Apps/brlr1.png
new file mode 100644
index 0000000..f1396ad
--- /dev/null
+++ b/080_blog/00020_WWW-Projects-and-Apps/brlr1.png
Binary files differ
diff --git a/080_blog/00020_WWW-Projects-and-Apps/bunzlauer.png b/080_blog/00020_WWW-Projects-and-Apps/bunzlauer.png
new file mode 100644
index 0000000..e3b1d70
--- /dev/null
+++ b/080_blog/00020_WWW-Projects-and-Apps/bunzlauer.png
Binary files differ
diff --git a/080_blog/00020_WWW-Projects-and-Apps/bunzlauershop.png b/080_blog/00020_WWW-Projects-and-Apps/bunzlauershop.png
new file mode 100644
index 0000000..7bac117
--- /dev/null
+++ b/080_blog/00020_WWW-Projects-and-Apps/bunzlauershop.png
Binary files differ
diff --git a/080_blog/00020_WWW-Projects-and-Apps/captainsdinner.png b/080_blog/00020_WWW-Projects-and-Apps/captainsdinner.png
new file mode 100644
index 0000000..b7e9143
--- /dev/null
+++ b/080_blog/00020_WWW-Projects-and-Apps/captainsdinner.png
Binary files differ
diff --git a/080_blog/00020_WWW-Projects-and-Apps/casamila.png b/080_blog/00020_WWW-Projects-and-Apps/casamila.png
new file mode 100644
index 0000000..969a0d8
--- /dev/null
+++ b/080_blog/00020_WWW-Projects-and-Apps/casamila.png
Binary files differ
diff --git a/080_blog/00020_WWW-Projects-and-Apps/condition-red.png b/080_blog/00020_WWW-Projects-and-Apps/condition-red.png
new file mode 100644
index 0000000..8e0b5df
--- /dev/null
+++ b/080_blog/00020_WWW-Projects-and-Apps/condition-red.png
Binary files differ
diff --git a/080_blog/00020_WWW-Projects-and-Apps/copterwerk.png b/080_blog/00020_WWW-Projects-and-Apps/copterwerk.png
new file mode 100644
index 0000000..ca71d3a
--- /dev/null
+++ b/080_blog/00020_WWW-Projects-and-Apps/copterwerk.png
Binary files differ
diff --git a/080_blog/00020_WWW-Projects-and-Apps/cornea.jpg b/080_blog/00020_WWW-Projects-and-Apps/cornea.jpg
new file mode 100644
index 0000000..47fe6b1
--- /dev/null
+++ b/080_blog/00020_WWW-Projects-and-Apps/cornea.jpg
Binary files differ
diff --git a/080_blog/00020_WWW-Projects-and-Apps/cornea.png b/080_blog/00020_WWW-Projects-and-Apps/cornea.png
new file mode 100644
index 0000000..77c1c1d
--- /dev/null
+++ b/080_blog/00020_WWW-Projects-and-Apps/cornea.png
Binary files differ
diff --git a/080_blog/00020_WWW-Projects-and-Apps/cqs.jpg b/080_blog/00020_WWW-Projects-and-Apps/cqs.jpg
new file mode 100644
index 0000000..9d87742
--- /dev/null
+++ b/080_blog/00020_WWW-Projects-and-Apps/cqs.jpg
Binary files differ
diff --git a/080_blog/00020_WWW-Projects-and-Apps/cuadro.png b/080_blog/00020_WWW-Projects-and-Apps/cuadro.png
new file mode 100644
index 0000000..ceac93d
--- /dev/null
+++ b/080_blog/00020_WWW-Projects-and-Apps/cuadro.png
Binary files differ
diff --git a/080_blog/00020_WWW-Projects-and-Apps/flipper.jpg b/080_blog/00020_WWW-Projects-and-Apps/flipper.jpg
new file mode 100644
index 0000000..b1caa57
--- /dev/null
+++ b/080_blog/00020_WWW-Projects-and-Apps/flipper.jpg
Binary files differ
diff --git a/080_blog/00020_WWW-Projects-and-Apps/flipper2.jpg b/080_blog/00020_WWW-Projects-and-Apps/flipper2.jpg
new file mode 100644
index 0000000..34e908d
--- /dev/null
+++ b/080_blog/00020_WWW-Projects-and-Apps/flipper2.jpg
Binary files differ
diff --git a/080_blog/00020_WWW-Projects-and-Apps/foto-pschill.png b/080_blog/00020_WWW-Projects-and-Apps/foto-pschill.png
new file mode 100644
index 0000000..e624ac1
--- /dev/null
+++ b/080_blog/00020_WWW-Projects-and-Apps/foto-pschill.png
Binary files differ
diff --git a/080_blog/00020_WWW-Projects-and-Apps/ikm.jpg b/080_blog/00020_WWW-Projects-and-Apps/ikm.jpg
new file mode 100644
index 0000000..06539ca
--- /dev/null
+++ b/080_blog/00020_WWW-Projects-and-Apps/ikm.jpg
Binary files differ
diff --git a/080_blog/00020_WWW-Projects-and-Apps/immoconnect.png b/080_blog/00020_WWW-Projects-and-Apps/immoconnect.png
new file mode 100644
index 0000000..ad49532
--- /dev/null
+++ b/080_blog/00020_WWW-Projects-and-Apps/immoconnect.png
Binary files differ
diff --git a/080_blog/020_WWW-Projects/index.md b/080_blog/00020_WWW-Projects-and-Apps/index.md
index 7264d62..fff14bc 100644
--- a/080_blog/020_WWW-Projects/index.md
+++ b/080_blog/00020_WWW-Projects-and-Apps/index.md
@@ -1,11 +1,15 @@
-Portfolio
-=========
+WWW and Apps
+============
A random selection of Web-sites, Web-shops, Web-portals and Mobile Apps.
+Most of this constitute contracted work.
-<!--TODO: backlinks/contact
-team: julka + matjas + niki
-(+koko projects)
+<!--
+
+TODOS/IDEAS:
+
+backlinks/contact
+team: julka + matjas + niki (+koko projects?)
vienna-warsaw-berlin
form/tel/contact
@@ -15,12 +19,15 @@ architekturawnetrz
krzysztofidziorek
todo-app screenshot
+
+...
+
-->
<div class="row">
{BEGIN:CARD}
-/DATA/GEN/www/casamila.png
+casamila.png
Casamila - Architects
casamila.pl
2018
@@ -33,7 +40,7 @@ Extensive Template customization according to client requirements.
{END:CARD}
{BEGIN:CARD}
-/DATA/GEN/www/shop/bunzlauer.png
+bunzlauershop.png
Web Shop - Bunzlauer
bunzlauer.shop
2018
@@ -46,7 +53,7 @@ shipping of beautiful handcrafted polish pottery.
{END:CARD}
{BEGIN:CARD}
-/DATA/GEN/www/aquarelle.jpg
+aquarelle.jpg
G. Mueller Watercolors
gerhard-mueller-aquarelle.de
2018
@@ -58,7 +65,7 @@ Website of Gerhard Müller hosting his watarcolour paintings. Relaunched 2018. F
{END:CARD}
{BEGIN:CARD}
-/DATA/GEN/www/mmtour.png
+mmtour.png
Mille Miglia - Blog
mmtour.krzysztofidziorek.pl
2017
@@ -71,7 +78,7 @@ roads of the historic Mille Miglia race in Fall 2017.
{END:CARD}
{BEGIN:CARD}
-/DATA/GEN/apps/atenefunds.png
+atenefunds.png
AteneKOM Funds
GooglePlay / AppStore
2018
@@ -86,7 +93,7 @@ Entries are continually updated and expanded and can be filtered by topics.
{END:CARD}
{BEGIN:CARD}
-/DATA/GEN/www/mazury.png
+mazury.png
Ratuj Mazury
ratuj-mazury.pl
2016
@@ -99,7 +106,7 @@ Masurian area. Template was designed from scratch.
{BEGIN:CARD}
-/DATA/GEN/www/wekkaprojekt.png
+wekkaprojekt.png
Wekka Projekt - Architects
wekka-projekt.pl
2016
@@ -112,7 +119,7 @@ Template was designed from scratch.
{BEGIN:CARD}
-/DATA/GEN/www/norti.png
+norti.png
Norton Motorcycles Fan Club
nortonmotorcycles.co.uk
2018
@@ -125,7 +132,7 @@ Relaunched 2018 on Wordpress. Fomer TYPO3.
{BEGIN:CARD}
-/DATA/GEN/www/bunzlauer.png
+bunzlauer.png
Bunzlauer Keramik
bunzlauerkeramik.at
2018
@@ -138,7 +145,7 @@ Relaunched 2018 on Wordpress. Fomer TYPO3.
{END:CARD}
{BEGIN:CARD}
-/DATA/GEN/apps/cornea.png
+cornea.png
Cornea Franz
GooglePlay / AppStore
2013
@@ -152,7 +159,7 @@ Mobile App with a simple Backend porviding legal News.
{BEGIN:CARD}
-/DATA/GEN/www/shop/link-all.png
+link-all.png
Link-All Software
link-all.eu
2013
@@ -165,7 +172,7 @@ Customized OsCommerce.
{BEGIN:CARD}
-/DATA/GEN/www/shop/bildershopping.png
+bildershopping.png
Bilder Shop - Art Prints
bildershopping.at
2010
@@ -177,7 +184,7 @@ Custom OsCommerce Webshop selling various Art Prints
{BEGIN:CARD}
-/DATA/GEN/www/shop/nadler.png
+nadler.png
Nadler - Wine Shop
nadler-hanny.at
2007
@@ -189,7 +196,7 @@ In 2007 coded the super-light custom PHP Shop for the Website of this Austrian W
{BEGIN:CARD}
-/DATA/GEN/www/shop/panner.jpg
+panner.jpg
Panner - Stamp Shop
panner.net
2006
@@ -201,7 +208,7 @@ backend for user management and analysis.
{END:CARD}
{BEGIN:CARD}
-/DATA/GEN/www/shop/panner-admin.png
+panner-admin.png
Stamp Shop Backend
panner.net/admin
2006
@@ -212,7 +219,7 @@ Custom extensiv backend for the panner.net stamps webshop with complex user mana
{END:CARD}
{BEGIN:CARD}
-/DATA/GEN/www/maiden.jpg
+maiden.jpg
Maiden Entertainment
maidenentertainment.com
2005
@@ -223,7 +230,7 @@ Website of an independent Music and Video Producer.
{END:CARD}
{BEGIN:CARD}
-/DATA/GEN/www/flipper2.jpg
+flipper2.jpg
Flipper Grafik
flipper-grafik.at
2004
@@ -233,10 +240,8 @@ flipper-grafik.at
Advertising Agency in Vienna, Austria.
{END:CARD}
-
-
{BEGIN:CARD}
-/DATA/GEN/www/cqs.jpg
+cqs.jpg
Complex Quantum Systems
coqus.at
2006
@@ -248,7 +253,7 @@ Website of the Doctoral Program on Complex Quantum Systems of the University Vie
{BEGIN:CARD}
-/DATA/GEN/www/ikm.jpg
+ikm.jpg
Institut fuer Kulturmanagement
mdw.ac.at/ikm/
2003
@@ -261,7 +266,7 @@ Advanced book-browsing tools for the Insitutes library.
{BEGIN:CARD}
-/DATA/GEN/www/preschl.jpg
+preschl.jpg
Claudia Preschl
personal.mdw.ac.at/preschl/
2004
@@ -272,7 +277,7 @@ Website of Prof. Claudia Preschl of the University of Music and Performing Arts,
{BEGIN:CARD}
-/DATA/GEN/www/textlabor.jpg
+textlabor.jpg
Textlabor
textlabor.at
2006
@@ -284,7 +289,7 @@ Website of Jolande Peck-Himmel, PR Consultant specializing in Print and Online M
{BEGIN:CARD}
-/DATA/GEN/www/lev.jpg
+lev.jpg
LEV Wien
levwien.at
2006
@@ -296,7 +301,7 @@ Website of the Parents Council of Music Shools of Vienna.
{BEGIN:CARD}
-/DATA/GEN/www/meersalzgrotte.png
+meersalzgrotte.png
Saliseum
meersalzgrotte.at
2008
@@ -308,7 +313,7 @@ Very light custom PHP Website of the Sea-Salt-Cave Saliseum in Vienna.
{BEGIN:CARD}
-/DATA/GEN/www/telenetprofi.png
+telenetprofi.png
Telenet Profi
telenetprofi.at
2011
@@ -319,7 +324,7 @@ Website of a Cell Phone Store in Vienna.
{BEGIN:CARD}
-/DATA/GEN/www/breitbandausschreibungen1.png
+breitbandausschreibungen1.png
Broadband Tenders Germany
breitbandausschreibungen.de
2014
@@ -332,7 +337,7 @@ Platform for Coorindation of German Broadband Tender Programmes.
{END:CARD}
{BEGIN:CARD}
-/DATA/GEN/www/maiden2.png
+maiden2.png
Maiden Reloaded
maidenenterteinmanet.com
2010
@@ -343,7 +348,7 @@ Reloaded version of the Website of the indy Video and Music producer Maiden Ente
{END:CARD}
{BEGIN:CARD}
-/DATA/GEN/www/brlr1.png
+brlr1.png
BRLR Monitoring
breitbandbuero.de/monitoring/
2011
@@ -356,7 +361,7 @@ Monitoring of Broadband projects according to the "Bundesrahmenregeleung Leerror
{BEGIN:CARD}
-/DATA/GEN/www/atenekom.jpg
+atenekom.jpg
AteneKOM Website
atenekom.eu
2012
@@ -368,7 +373,7 @@ Former Website of the atene KOM Agency.
{BEGIN:CARD}
-/DATA/GEN/www/todoapp.png
+todoapp.png
Online Task Management
Intranet
2013
@@ -379,7 +384,7 @@ Browser-based tool for Assignment and Monitoring of Tasks within the Company.
{BEGIN:CARD}
-/DATA/GEN/www/sensor.png
+sensor.png
Sensor for GIS
Intranet
2013
@@ -392,7 +397,7 @@ Tool for spatial Analysis of Broadband related Customer Data.
{BEGIN:CARD}
-/DATA/GEN/www/ringy.png
+ringy.png
ZT Ringsmuth
zt-ringsmuth.at
2015
@@ -403,7 +408,7 @@ Website of Civil Engineer Ernst Ringsmuth.
{END:CARD}
{BEGIN:CARD}
-/DATA/GEN/www/platin.png
+platin.png
Platin - Billard & Darts
platin-billard.at
2009
@@ -414,7 +419,7 @@ Platin Bar. Works included taking Photographs for this Website as well.
{END:CARD}
{BEGIN:CARD}
-/DATA/GEN/www/balbuza.png
+balbuza.png
Broetchenstube
broetchenstube-baden.at
2007
@@ -425,7 +430,7 @@ Website of a Catering Company located in Baden, Austria.
{END:CARD}
{BEGIN:CARD}
-/DATA/GEN/www/aufbau.jpg
+aufbau.jpg
Cultural Administration Studies
mdw.ac.at/ikm/kulturmanagement/
2007
@@ -436,7 +441,7 @@ Lightweight Website of postgradual studies at the University of Music and Perfor
{END:CARD}
{BEGIN:CARD}
-/DATA/GEN/www/kunst-stuecke.png
+kunst-stuecke.png
Kunst-Stuecke Art Gallery
kunst-stuecke.at
2007
@@ -448,7 +453,7 @@ Light CMS driven Website for an art gallery in Vienna.
{BEGIN:CARD}
-/DATA/GEN/www/cuadro.png
+cuadro.png
Cuadro Architects
cuadro.com.pl
2006
@@ -459,7 +464,7 @@ Architecture Website for Cuadro
{END:CARD}
{BEGIN:CARD}
-/DATA/GEN/www/foto-pschill.png
+foto-pschill.png
Gallery for Fotografie Pschill
fotografie-pschill.at
2006
@@ -470,7 +475,7 @@ Create a PHP Gallery for this Photographers website.
{END:CARD}
{BEGIN:CARD}
-/DATA/GEN/www/werbereich.png
+werbereich.png
Werbereich Creative Agency
werbereich.at
2006
@@ -481,7 +486,7 @@ Technical implementation of the Website of this Creative Agency
{END:CARD}
{BEGIN:CARD}
-/DATA/GEN/www/immoconnect.png
+immoconnect.png
Immoconnect Real Estate
immoconnect.net
2006
@@ -491,7 +496,7 @@ Light single-page Website for an Austrian Real Estate Agency.
{END:CARD}
{BEGIN:CARD}
-/DATA/GEN/www/austria-org-pl.png
+austria-org-pl.png
Austrian Cultural Forum
austria.org.pl
2007
@@ -502,7 +507,7 @@ Impleneted the news archive for the Austrian Cultural Forum located in Warsaw.
{END:CARD}
{BEGIN:CARD}
-/DATA/GEN/www/condition-red.png
+condition-red.png
Condition Red - Band
condition-red.com
2005
@@ -513,7 +518,7 @@ Flash driven Website of the Rock and Metal Band: Condition RED.
{END:CARD}
{BEGIN:CARD}
-/DATA/GEN/www/austrian-wine.png
+austrian-wine.png
Austrian Wine
austrian-wine.at
2005
@@ -523,7 +528,7 @@ Website for an exporter of Austrian Wines.
{END:CARD}
{BEGIN:CARD}
-/DATA/GEN/www/copterwerk.png
+copterwerk.png
Copterwerk - Drone Services
copterwerk.com
2011
diff --git a/080_blog/00020_WWW-Projects-and-Apps/kulturmanag.jpg b/080_blog/00020_WWW-Projects-and-Apps/kulturmanag.jpg
new file mode 100644
index 0000000..72dd403
--- /dev/null
+++ b/080_blog/00020_WWW-Projects-and-Apps/kulturmanag.jpg
Binary files differ
diff --git a/080_blog/00020_WWW-Projects-and-Apps/kunst-stuecke.png b/080_blog/00020_WWW-Projects-and-Apps/kunst-stuecke.png
new file mode 100644
index 0000000..9c18cbc
--- /dev/null
+++ b/080_blog/00020_WWW-Projects-and-Apps/kunst-stuecke.png
Binary files differ
diff --git a/080_blog/00020_WWW-Projects-and-Apps/lev.jpg b/080_blog/00020_WWW-Projects-and-Apps/lev.jpg
new file mode 100644
index 0000000..f593824
--- /dev/null
+++ b/080_blog/00020_WWW-Projects-and-Apps/lev.jpg
Binary files differ
diff --git a/080_blog/00020_WWW-Projects-and-Apps/link-all.png b/080_blog/00020_WWW-Projects-and-Apps/link-all.png
new file mode 100644
index 0000000..9c91285
--- /dev/null
+++ b/080_blog/00020_WWW-Projects-and-Apps/link-all.png
Binary files differ
diff --git a/080_blog/00020_WWW-Projects-and-Apps/maiden.jpg b/080_blog/00020_WWW-Projects-and-Apps/maiden.jpg
new file mode 100644
index 0000000..0763489
--- /dev/null
+++ b/080_blog/00020_WWW-Projects-and-Apps/maiden.jpg
Binary files differ
diff --git a/080_blog/00020_WWW-Projects-and-Apps/maiden2.png b/080_blog/00020_WWW-Projects-and-Apps/maiden2.png
new file mode 100644
index 0000000..fa8d565
--- /dev/null
+++ b/080_blog/00020_WWW-Projects-and-Apps/maiden2.png
Binary files differ
diff --git a/080_blog/00020_WWW-Projects-and-Apps/mazury.png b/080_blog/00020_WWW-Projects-and-Apps/mazury.png
new file mode 100644
index 0000000..1698950
--- /dev/null
+++ b/080_blog/00020_WWW-Projects-and-Apps/mazury.png
Binary files differ
diff --git a/080_blog/00020_WWW-Projects-and-Apps/meersalzgrotte.png b/080_blog/00020_WWW-Projects-and-Apps/meersalzgrotte.png
new file mode 100644
index 0000000..4fca764
--- /dev/null
+++ b/080_blog/00020_WWW-Projects-and-Apps/meersalzgrotte.png
Binary files differ
diff --git a/080_blog/00020_WWW-Projects-and-Apps/mmtour.png b/080_blog/00020_WWW-Projects-and-Apps/mmtour.png
new file mode 100644
index 0000000..3d8d953
--- /dev/null
+++ b/080_blog/00020_WWW-Projects-and-Apps/mmtour.png
Binary files differ
diff --git a/080_blog/00020_WWW-Projects-and-Apps/nadler.png b/080_blog/00020_WWW-Projects-and-Apps/nadler.png
new file mode 100644
index 0000000..884e3e9
--- /dev/null
+++ b/080_blog/00020_WWW-Projects-and-Apps/nadler.png
Binary files differ
diff --git a/080_blog/00020_WWW-Projects-and-Apps/nadler2.png b/080_blog/00020_WWW-Projects-and-Apps/nadler2.png
new file mode 100644
index 0000000..d362a5d
--- /dev/null
+++ b/080_blog/00020_WWW-Projects-and-Apps/nadler2.png
Binary files differ
diff --git a/080_blog/00020_WWW-Projects-and-Apps/norti.png b/080_blog/00020_WWW-Projects-and-Apps/norti.png
new file mode 100644
index 0000000..23e2b3d
--- /dev/null
+++ b/080_blog/00020_WWW-Projects-and-Apps/norti.png
Binary files differ
diff --git a/080_blog/00020_WWW-Projects-and-Apps/panner-admin.png b/080_blog/00020_WWW-Projects-and-Apps/panner-admin.png
new file mode 100644
index 0000000..168dc5c
--- /dev/null
+++ b/080_blog/00020_WWW-Projects-and-Apps/panner-admin.png
Binary files differ
diff --git a/080_blog/00020_WWW-Projects-and-Apps/panner.jpg b/080_blog/00020_WWW-Projects-and-Apps/panner.jpg
new file mode 100644
index 0000000..164308b
--- /dev/null
+++ b/080_blog/00020_WWW-Projects-and-Apps/panner.jpg
Binary files differ
diff --git a/080_blog/00020_WWW-Projects-and-Apps/platin.png b/080_blog/00020_WWW-Projects-and-Apps/platin.png
new file mode 100644
index 0000000..e245f8c
--- /dev/null
+++ b/080_blog/00020_WWW-Projects-and-Apps/platin.png
Binary files differ
diff --git a/080_blog/00020_WWW-Projects-and-Apps/preschl.jpg b/080_blog/00020_WWW-Projects-and-Apps/preschl.jpg
new file mode 100644
index 0000000..34585ed
--- /dev/null
+++ b/080_blog/00020_WWW-Projects-and-Apps/preschl.jpg
Binary files differ
diff --git a/080_blog/00020_WWW-Projects-and-Apps/ringy.png b/080_blog/00020_WWW-Projects-and-Apps/ringy.png
new file mode 100644
index 0000000..684d41e
--- /dev/null
+++ b/080_blog/00020_WWW-Projects-and-Apps/ringy.png
Binary files differ
diff --git a/080_blog/00020_WWW-Projects-and-Apps/sensor.png b/080_blog/00020_WWW-Projects-and-Apps/sensor.png
new file mode 100644
index 0000000..1846c46
--- /dev/null
+++ b/080_blog/00020_WWW-Projects-and-Apps/sensor.png
Binary files differ
diff --git a/080_blog/00020_WWW-Projects-and-Apps/telenetprofi.png b/080_blog/00020_WWW-Projects-and-Apps/telenetprofi.png
new file mode 100644
index 0000000..776a503
--- /dev/null
+++ b/080_blog/00020_WWW-Projects-and-Apps/telenetprofi.png
Binary files differ
diff --git a/080_blog/00020_WWW-Projects-and-Apps/textlabor.jpg b/080_blog/00020_WWW-Projects-and-Apps/textlabor.jpg
new file mode 100644
index 0000000..ad47518
--- /dev/null
+++ b/080_blog/00020_WWW-Projects-and-Apps/textlabor.jpg
Binary files differ
diff --git a/080_blog/00020_WWW-Projects-and-Apps/todoapp.png b/080_blog/00020_WWW-Projects-and-Apps/todoapp.png
new file mode 100644
index 0000000..8753f35
--- /dev/null
+++ b/080_blog/00020_WWW-Projects-and-Apps/todoapp.png
Binary files differ
diff --git a/080_blog/00020_WWW-Projects-and-Apps/wekkaprojekt.png b/080_blog/00020_WWW-Projects-and-Apps/wekkaprojekt.png
new file mode 100644
index 0000000..faa19c7
--- /dev/null
+++ b/080_blog/00020_WWW-Projects-and-Apps/wekkaprojekt.png
Binary files differ
diff --git a/080_blog/00020_WWW-Projects-and-Apps/werbereich.png b/080_blog/00020_WWW-Projects-and-Apps/werbereich.png
new file mode 100644
index 0000000..47e5838
--- /dev/null
+++ b/080_blog/00020_WWW-Projects-and-Apps/werbereich.png
Binary files differ
diff --git a/080_blog/00040_Haskell-Projects/00040_Graham-Scan-(Haskell)/index.md b/080_blog/00040_Haskell-Projects/00040_Graham-Scan/index.md
index 195dbe1..195dbe1 100644
--- a/080_blog/00040_Haskell-Projects/00040_Graham-Scan-(Haskell)/index.md
+++ b/080_blog/00040_Haskell-Projects/00040_Graham-Scan/index.md
diff --git a/080_blog/00040_Haskell-Projects/00065_Base64-Encoder-(Haskell)/index.md b/080_blog/00040_Haskell-Projects/00065_Base64-Encoder/index.md
index 830ed8d..830ed8d 100644
--- a/080_blog/00040_Haskell-Projects/00065_Base64-Encoder-(Haskell)/index.md
+++ b/080_blog/00040_Haskell-Projects/00065_Base64-Encoder/index.md
diff --git a/080_blog/00040_Haskell-Projects/00120_Lambda-Calculus-(Haskell)/index.md b/080_blog/00040_Haskell-Projects/00120_Lambda-Calculus/index.md
index 25c6b83..25c6b83 100644
--- a/080_blog/00040_Haskell-Projects/00120_Lambda-Calculus-(Haskell)/index.md
+++ b/080_blog/00040_Haskell-Projects/00120_Lambda-Calculus/index.md
diff --git a/080_blog/00040_Haskell-Projects/00130_Calculator-on-Parsec-and-GTK/calc.glade b/080_blog/00040_Haskell-Projects/00130_Calculator-on-Parsec-and-GTK/calc.glade
new file mode 100644
index 0000000..db09761
--- /dev/null
+++ b/080_blog/00040_Haskell-Projects/00130_Calculator-on-Parsec-and-GTK/calc.glade
@@ -0,0 +1,312 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- Generated with glade 3.20.0 -->
+<interface>
+ <requires lib="gtk+" version="3.20"/>
+ <object class="GtkWindow" id="mainWindow">
+ <property name="can_focus">False</property>
+ <child>
+ <object class="GtkBox">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="orientation">vertical</property>
+ <property name="homogeneous">True</property>
+ <child>
+ <object class="GtkBox">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="orientation">vertical</property>
+ <child>
+ <object class="GtkScrolledWindow" id=" ">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="shadow_type">in</property>
+ <child>
+ <object class="GtkTextView" id="hist">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkTextView" id="output">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="editable">False</property>
+ <property name="cursor_visible">False</property>
+ </object>
+ <packing>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkGrid">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="row_homogeneous">True</property>
+ <property name="column_homogeneous">True</property>
+ <child>
+ <object class="GtkButton" id="1">
+ <property name="label" translatable="yes">1</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">True</property>
+ </object>
+ <packing>
+ <property name="left_attach">0</property>
+ <property name="top_attach">2</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkButton" id="2">
+ <property name="label" translatable="yes">2</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">True</property>
+ </object>
+ <packing>
+ <property name="left_attach">1</property>
+ <property name="top_attach">2</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkButton" id="3">
+ <property name="label" translatable="yes">3</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">True</property>
+ </object>
+ <packing>
+ <property name="left_attach">2</property>
+ <property name="top_attach">2</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkButton" id="4">
+ <property name="label" translatable="yes">4</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">True</property>
+ </object>
+ <packing>
+ <property name="left_attach">0</property>
+ <property name="top_attach">1</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkButton" id="5">
+ <property name="label" translatable="yes">5</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">True</property>
+ </object>
+ <packing>
+ <property name="left_attach">1</property>
+ <property name="top_attach">1</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkButton" id="6">
+ <property name="label" translatable="yes">6</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">True</property>
+ </object>
+ <packing>
+ <property name="left_attach">2</property>
+ <property name="top_attach">1</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkButton" id="7">
+ <property name="label" translatable="yes">7</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">True</property>
+ </object>
+ <packing>
+ <property name="left_attach">0</property>
+ <property name="top_attach">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkButton" id="8">
+ <property name="label" translatable="yes">8</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">True</property>
+ </object>
+ <packing>
+ <property name="left_attach">1</property>
+ <property name="top_attach">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkButton" id="9">
+ <property name="label" translatable="yes">9</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">True</property>
+ </object>
+ <packing>
+ <property name="left_attach">2</property>
+ <property name="top_attach">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkButton" id="0">
+ <property name="label" translatable="yes">0</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">True</property>
+ </object>
+ <packing>
+ <property name="left_attach">0</property>
+ <property name="top_attach">3</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkButton" id=".">
+ <property name="label" translatable="yes">.</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">True</property>
+ </object>
+ <packing>
+ <property name="left_attach">1</property>
+ <property name="top_attach">3</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkButton" id="=">
+ <property name="label" translatable="yes">=</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">True</property>
+ </object>
+ <packing>
+ <property name="left_attach">3</property>
+ <property name="top_attach">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkButton" id="(">
+ <property name="label" translatable="yes">(</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">True</property>
+ </object>
+ <packing>
+ <property name="left_attach">2</property>
+ <property name="top_attach">3</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkButton" id="+">
+ <property name="label" translatable="yes">+</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">True</property>
+ </object>
+ <packing>
+ <property name="left_attach">0</property>
+ <property name="top_attach">4</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkButton" id="-">
+ <property name="label" translatable="yes">-</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">True</property>
+ </object>
+ <packing>
+ <property name="left_attach">1</property>
+ <property name="top_attach">4</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkButton" id="*">
+ <property name="label" translatable="yes">*</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">True</property>
+ </object>
+ <packing>
+ <property name="left_attach">2</property>
+ <property name="top_attach">4</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkButton" id="/">
+ <property name="label" translatable="yes">/</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">True</property>
+ </object>
+ <packing>
+ <property name="left_attach">3</property>
+ <property name="top_attach">4</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkButton" id="CLR">
+ <property name="label" translatable="yes">CLR</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">True</property>
+ </object>
+ <packing>
+ <property name="left_attach">3</property>
+ <property name="top_attach">1</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkButton" id="DEL">
+ <property name="label" translatable="yes">DEL</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">True</property>
+ </object>
+ <packing>
+ <property name="left_attach">3</property>
+ <property name="top_attach">2</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkButton" id=")">
+ <property name="label" translatable="yes">)</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">True</property>
+ </object>
+ <packing>
+ <property name="left_attach">3</property>
+ <property name="top_attach">3</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </object>
+ </child>
+ </object>
+</interface>
diff --git a/080_blog/00040_Haskell-Projects/00130_Calculator-on-Parsec-and-GTK/calc.hs b/080_blog/00040_Haskell-Projects/00130_Calculator-on-Parsec-and-GTK/calc.hs
new file mode 100644
index 0000000..ec47e05
--- /dev/null
+++ b/080_blog/00040_Haskell-Projects/00130_Calculator-on-Parsec-and-GTK/calc.hs
@@ -0,0 +1,74 @@
+-- Simple Stupid Calculator demonstrating basic gtk/glade and parsec parser usage --
+-- Hacked togeter by Miguel on May 3, 2018
+
+{-# LANGUAGE PackageImports #-}
+import "gtk3" Graphics.UI.Gtk
+import Control.Monad.IO.Class
+import Data.ByteString.Char8 (pack,unpack)
+import Numeric
+import Text.Parsec
+import Text.Parsec.Expr
+import Text.Parsec.Language
+import Text.Parsec.Number (fractional2)
+import Text.Parsec.Token
+
+-- parse calculation --
+calc s = case parse expr "" s of Right x -> showFFloat Nothing x ""
+ _ -> "?"
+
+table = [ [binary "*" (*) AssocLeft, binary "/" (/) AssocLeft ]
+ , [binary "+" (+) AssocLeft, binary "-" (-) AssocLeft ] ]
+
+lexer = makeTokenParser haskellDef
+expr = buildExpressionParser table term <?> "expression"
+term = parens lexer expr <|> fractional2 False <?> "simple expression"
+
+binary name fun assoc = Infix (do{ reservedOp lexer name; return fun }) assoc
+
+-- gui for the calculator --
+main = do initGUI
+ builder <- builderNew
+ builderAddFromFile builder "calc.glade"
+ window <- builderGetObject builder castToWindow "mainWindow"
+ output <- builderGetObject builder castToTextView "output"
+ outputBuff <- textViewGetBuffer output
+ hist <- builderGetObject builder castToTextView "hist"
+ histBuff <- textViewGetBuffer hist
+ end<-textBufferGetEndIter histBuff
+ histMark <- textBufferCreateMark histBuff Nothing end True
+
+ let conn = connBtn builder outputBuff
+ connA = connBtnAct builder outputBuff
+
+ -- connecting buttons --
+ sequence_ $ conn <$> map show [0..9] ++ ["+","-","/","*","(",")","."]
+
+ connA "CLR" $ textBufferSetByteString outputBuff (pack "")
+ connA "DEL" $ manipTextBuff outputBuff (\x -> case x of [] -> []; xs -> init xs)
+ connA "=" $ do txt<-getTextBuff outputBuff
+ manipTextBuff outputBuff calc
+ res<-getTextBuff outputBuff
+ manipTextBuff histBuff (\x -> x++txt++" = "++res++"\n")
+ end<-textBufferGetEndIter histBuff
+ textBufferMoveMark histBuff histMark end
+ textViewScrollToMark hist histMark 0 $ Just (0,1)
+ return ()
+
+ -- handler to run on window destruction
+ window `on` deleteEvent $ do liftIO mainQuit
+ return False
+ widgetShowAll window
+ mainGUI
+
+getTextBuff outputBuff = do start<-textBufferGetStartIter outputBuff
+ end<-textBufferGetEndIter outputBuff
+ unpack <$> textBufferGetByteString outputBuff start end True
+
+manipTextBuff outputBuff action = do txt<-getTextBuff outputBuff
+ textBufferSetByteString outputBuff (pack $ action $ txt)
+
+connBtn builder buff label = connBtnAct builder buff label $
+ textBufferInsertByteStringAtCursor buff (pack label)
+
+connBtnAct builder buff label act = do btn <- builderGetObject builder castToButton label
+ btn `on` buttonActivated $ act
diff --git a/080_blog/00040_Haskell-Projects/00130_Calculator-on-Parsec-and-GTK/calc.png b/080_blog/00040_Haskell-Projects/00130_Calculator-on-Parsec-and-GTK/calc.png
new file mode 100644
index 0000000..7cb35c3
--- /dev/null
+++ b/080_blog/00040_Haskell-Projects/00130_Calculator-on-Parsec-and-GTK/calc.png
Binary files differ
diff --git a/080_blog/00040_Haskell-Projects/00130_Calculator-on-Parsec-and-GTK-(Haskell)/index.md b/080_blog/00040_Haskell-Projects/00130_Calculator-on-Parsec-and-GTK/index.md
index 9701481..381b017 100644
--- a/080_blog/00040_Haskell-Projects/00130_Calculator-on-Parsec-and-GTK-(Haskell)/index.md
+++ b/080_blog/00040_Haskell-Projects/00130_Calculator-on-Parsec-and-GTK/index.md
@@ -3,7 +3,7 @@ Simple Calculator on Parsec and GTK
May 3, 2018
-![](/DATA/haskell/calc/calc.png){.img-fluid .border}
+![](calc.png){.img-fluid .border}
Today I implemented this simple stupid calulator as a side effect of playing
around with parsec [1] and haskells gtk3 [2] bindings, as well as glade [3] -
@@ -12,17 +12,11 @@ an interactive user interface designer.
Source Files
------------
-* [calc.hs](/DATA/haskell/calc/calc.hs)
-* [calc.glade](/DATA/haskell/calc/calc.glade)
+* [calc.hs](calc.hs)
+* [calc.glade](calc.glade)
-calc.hs Listing
----------------
-
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ {.haskell .numberLines}
-{BEGIN:SOURCE}
-./DATA/haskell/calc/calc.hs
-{END:SOURCE}
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+Ref
+---
[1] https://hackage.haskell.org/package/parsec
[2] https://hackage.haskell.org/package/gtk3
diff --git a/080_blog/00040_Haskell-Projects/00140_Minimalistic-SVG-Generator-(Haskell)/SimpleSvg.hs b/080_blog/00040_Haskell-Projects/00140_Minimalistic-SVG-Generator/SimpleSvg.hs
index 7b44557..7b44557 100644
--- a/080_blog/00040_Haskell-Projects/00140_Minimalistic-SVG-Generator-(Haskell)/SimpleSvg.hs
+++ b/080_blog/00040_Haskell-Projects/00140_Minimalistic-SVG-Generator/SimpleSvg.hs
diff --git a/080_blog/00040_Haskell-Projects/00140_Minimalistic-SVG-Generator-(Haskell)/index.md b/080_blog/00040_Haskell-Projects/00140_Minimalistic-SVG-Generator/index.md
index 8211ba2..8211ba2 100644
--- a/080_blog/00040_Haskell-Projects/00140_Minimalistic-SVG-Generator-(Haskell)/index.md
+++ b/080_blog/00040_Haskell-Projects/00140_Minimalistic-SVG-Generator/index.md
diff --git a/080_blog/00040_Haskell-Projects/00140_Minimalistic-SVG-Generator-(Haskell)/svg.png b/080_blog/00040_Haskell-Projects/00140_Minimalistic-SVG-Generator/svg.png
index d679fad..d679fad 100644
--- a/080_blog/00040_Haskell-Projects/00140_Minimalistic-SVG-Generator-(Haskell)/svg.png
+++ b/080_blog/00040_Haskell-Projects/00140_Minimalistic-SVG-Generator/svg.png
Binary files differ
diff --git a/080_blog/00040_Haskell-Projects/100_Estatico-Page-Maker/index.md b/080_blog/00040_Haskell-Projects/100_Estatico-Page-Maker/index.md
new file mode 100644
index 0000000..04bb46a
--- /dev/null
+++ b/080_blog/00040_Haskell-Projects/100_Estatico-Page-Maker/index.md
@@ -0,0 +1,35 @@
+# Estático - A Static Website Genertor coded in Haskell
+
+ April 12, 2018
+
+About two weeks ago, for personal reasons, I decided to switch my website
+from a well known PHP driven CMS solution, to a light and static set
+of html pages.
+
+I used this fact to write my own simple static website generator.
+And, Yes... I know there are already hundereds of such genertors
+out there, but I wanted to practice Haskell and my masturbatory solution
+fits in about 200 lines of code, including comments and type signatures.
+
+I use pandoc for all the heavy work, as syntax highlighting and parsing
+of the markdown files, anyway.
+
+## Features
+
+* No Database
+* Static Content
+* Sitemap derived from Directory Tree
+* Simple Markdown Files
+
+## Try It
+You can find the most recent version here and build it with _stack_.
+
+* [https://gitweb.softwarefools.com/?p=miguel/staticuswww.git](https://gitweb.softwarefools.com/?p=miguel/staticuswww.git)
+
+__Do not forget to adapt the Makefile to your requirements__
+
+## Examples
+The only example I know of, is this very page: _idziorek.net_
+You can find it's sources here:
+
+* [https://gitweb.softwarefools.com/?p=miguel/idziorek\_net.git](https://gitweb.softwarefools.com/?p=miguel/idziorek_net.git)
diff --git a/080_blog/00040_Haskell-Projects/100_Static-Page-Maker-in-Haskell/index.md b/080_blog/00040_Haskell-Projects/100_Static-Page-Maker-in-Haskell/index.md
deleted file mode 100644
index 0619078..0000000
--- a/080_blog/00040_Haskell-Projects/100_Static-Page-Maker-in-Haskell/index.md
+++ /dev/null
@@ -1,121 +0,0 @@
-# Static Haskell Website Creator - Miguel's Lair
-
- April 12, 2018
-
-About two weeks ago, for personal reasons, I decided to switch my homepage
-from a well known PHP driven CMS solution, to a light and static set
-of html pages.
-
-I used this fact as a pretence to write my own simple static website
-generator. And, Yes.. I know there are already hundereds of such genertors
-out there, but I wanted to practice haskell and my masturbatory solution
-fits in under 100 lines of code. (Including comments and type signatures)
-
-I use pandoc for all the heavy work, as syntax highlighting and conversion of
-markdown to html, anyway.
-
-## Features
-
-* No Documentation
-* No Database
-* Sitemap derived from Directory Tree
-* Simple Markdown Files for Content
-
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ {.haskell .numberLines}
---
--- Staticus WWW - A minimalistic yet undocumented static website generator
--- coded in April 2018 by Michal Idziorek <m.i@gmx.at>
---
-
-module StaticusWWW where
-
-import Control.Exception
-import Control.Monad.Reader
-import Data.List
-import Data.List.Split
-import Data.List.Utils
-import Data.Maybe
-import Data.Text(pack,unpack)
-import Data.Tree
-import System.Directory
-import Text.Pandoc
-
--- generate a HTML link from a href & title
-htmlLink :: String -> String -> String
-htmlLink href title="<a href='"++href++"'>"++replace "_" " " title++"</a>"
-
--- generate HTML breadcrumbs from a list of page titles
-genBrc :: [String] -> String
-genBrc b | length b < 2 = ""
- | otherwise = fst $ foldl lnk ("",0) b
- where lnk (a,c) v = (a++" / "++html c v,c+1)
- html c = htmlLink (concat (replicate (length b-c-1) "../"))
-
--- pure function that generates a single HTML page from:
--- a html template, description, keywords, breadcrumbs, topMenue & submenue
-genPage :: String->String->String->[String]->[String]->[String]->String->String
-genPage tmpl dsc kw brc top chld md =
- foldr rplc tmpl (replacers content (menu "/" top) (menu "./" chld) (genBrc brc) title dsc kw)
- where content = either (const "error") unpack res
- where res = runPure $ do doc <- readMarkdown def{readerExtensions=(enableExtension Ext_raw_html pandocExtensions )} $ pack md
- writeHtml5String def doc
- rplc v = replace ("##" ++ fst v ++ "##") (snd v)
- title = if null brc then "Home" else replace "_" " " $ last brc
- menu p = foldr (fm p) ""
- fm p s a = "<li>"++htmlLink (p++s) s ++"</li>"++a
- replacers c m m2 b t d k=
- [("CONTENT", c)
- ,("LOGO", "/DATA/logo.png")
- ,("STYLESHEET", "/DATA/style.css")
- ,("SITE_TITLE", "Miguel's Lair")
- ,("SITE_SUBTITLE", "<br />where information sleepzzZZZzz ...")
- ,("TITLE", t)
- ,("DESCRIPTION", d)
- ,("KEYWORDS", k)
- ,("AUTHOR", "Michal Idziorek")
- ,("MENU", m)
- ,("SUB_MENU", m2)
- ,("BREADCRUMBS", b)
- ,("FOOTER", "(c) by Miguel 2018")]
-
--- get list of subdirectories in given directory, with full relative path
-getDirList :: FilePath -> IO [FilePath]
-getDirList d = map ((d++"/")++) <$> listDirectory d
- >>= filterM doesDirectoryExist
-
--- sequence IO Action 'f' for each subdirectory of 'fp' recursively
-trvDirTree :: FilePath -> (FilePath -> [FilePath] -> IO()) -> IO ()
-trvDirTree fp f = unfoldTreeM unf fp >>= sequence_
- where unf p = getDirList p >>= \s -> f p s >>= \l ->
- return (return l, s)
-
--- write the HTML page generated from current diectory by 'genPage'
-wrtPage :: FilePath -> FilePath -> String -> [FilePath] -> FilePath -> [FilePath] -> IO ()
-wrtPage idx out tmpl top p chld = do
-
- when (not home) (createDirectory outdir)
-
- md <- readFile $ p ++ "/index.md"
- cfg <- (map ((\(x:xs) -> (x,unwords xs)).words).lines)
- <$> catch (readFile $ p++"/config")
- ((\_ -> return "") :: IOException -> IO String)
-
- writeFile (outdir++"/index.html")
- (genPage tmpl (lkp cfg "dsc") (lkp cfg "kwd")
- brc (menu top) (if home then [] else menu chld) md)
-
- where home = outdir==out++"/"
- remUnder = filter (not.null) . map (dropWhile(=='_').dropWhile(/='_'))
- lkp cfg k = fromMaybe "" (lookup k cfg)
- menu = remUnder . filter (not . isPrefixOf "00_") . map (last.splitOn "/") . sort
- outdir = out ++ "/" ++ intercalate "/" brc
- brc = remUnder $ splitOn "/" (drop (length idx) p)
-
--- Main IO action: traverses index recursively and calls wrtPage in each
--- subdir, which in turn generates the output directories and html pages
-main :: IO ()
-main = do tmpl <- readFile "./DATA/template.html"
- top <- getDirList "./INDEX"
- trvDirTree "./INDEX" (wrtPage "./INDEX" "./OUT" tmpl top)
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
diff --git a/080_blog/0100_Webkit-Keyboardless-Navigation/index.md b/080_blog/00100_Webkit-Keyboardless-Navigation/index.md
index 5299563..5299563 100644
--- a/080_blog/0100_Webkit-Keyboardless-Navigation/index.md
+++ b/080_blog/00100_Webkit-Keyboardless-Navigation/index.md
diff --git a/080_blog/0100_Webkit-Keyboardless-Navigation/v1.mp4 b/080_blog/00100_Webkit-Keyboardless-Navigation/v1.mp4
index a7755f4..a7755f4 100644
--- a/080_blog/0100_Webkit-Keyboardless-Navigation/v1.mp4
+++ b/080_blog/00100_Webkit-Keyboardless-Navigation/v1.mp4
Binary files differ
diff --git a/080_blog/0100_Webkit-Keyboardless-Navigation/v1.ogv b/080_blog/00100_Webkit-Keyboardless-Navigation/v1.ogv
index a086103..a086103 100644
--- a/080_blog/0100_Webkit-Keyboardless-Navigation/v1.ogv
+++ b/080_blog/00100_Webkit-Keyboardless-Navigation/v1.ogv
Binary files differ
diff --git a/080_blog/00_garbage/00010_Monospace-Font-Bitmap-Generator/index.md b/080_blog/00_garbage/00010_Monospace-Font-Bitmap-Generator/index.md
deleted file mode 100644
index 3df7719..0000000
--- a/080_blog/00_garbage/00010_Monospace-Font-Bitmap-Generator/index.md
+++ /dev/null
@@ -1,64 +0,0 @@
-monospaced font bitmaps
-=======================
- July 4, 2017
-
-Since once in a while I have the need to generate my own simple bitmap fonts, which I might embed directly in my code (as in this little class, for example), today I publish this simple python script that will convert a textfile filled with ‘X’es and spaces into an array of integers
-
-* space = bit off
-* ‘X’ = bit on
-
-![Example usage of bitmap fonts in my simple experimental FoolOS Operating System, which I might write about some other time.](/DATA/foolos.png){.img-fluid}
-
-
-The script has some severe limitations but easily can be extended:
-
-* works for 5×5 bitmaps only
-* every 6th lines is skipped (used for commenting)
-* reads a file called “fonts.txt” from same directory
-
-~~~~~~~~~~~~~~~~~~~~~ {.bash .numberLines}
-# filename: convert.py
-f = open('fonts.txt','r');
-
-i=0;
-value=(2**25)-1;
-
-for line in f:
- if (i % 6 ==0):
- c=0;
- if(i>0):
- print(str(value)+",");
- value=0
- else:
- for j in range(0,5):
- if j<len(line):
- bit=24-(c*5+j);
- if(line[j]=='X'):
- value+=2**bit;
-
- c+=1;
- i+=1;
-~~~~~~~~~~~~~~~~~~~~~
-
-Example input file (fonts.txt) with 2 letters only:
-
-~~~~~~~~~~~~~~~~~~~~~ {.bash}
-// A (this is a comment line)
-XXXXX
-X X
-XXXXX
-X X
-X X
-// B (this is a comment line)
-XXXX
-X X
-XXXX
-X X
-XXXX
-~~~~~~~~~~~~~~~~~~~~~
-
-Run ‘python convert.py’ in the same directory to get an array of integers you can easily embed in C/C++/Java etc.
-
-~~~~~~~~~~~~~~~~~~~~~ {.bash}
-python convert.py
-~~~~~~~~~~~~~~~~~~~~~
diff --git a/080_blog/00_garbage/00020_About-Software-Fools/index.md b/080_blog/00_garbage/00020_About-Software-Fools/index.md
deleted file mode 100644
index 394b67e..0000000
--- a/080_blog/00_garbage/00020_About-Software-Fools/index.md
+++ /dev/null
@@ -1,54 +0,0 @@
-The Software Fools
-==================
-
-A highly creative team consisting of software & hardware engineers, quantum physicians, data scientists,
-cooks, painters, programmers, writers, philosophers, full stack developers, photographers, heavy drinkers, game designers and musicians,... among many others.
-
-It was formed in 1994 and consist, in it's very core and from the very
-beginnings, by it's fouding fathers: Miguel & Nick.
-
-Most notable part-time members of the SoftwareFools include: Matjas & Juls.
-
-Some of the old SoftwareFools logos emerged around the turn of the millenium,
-probably in the early 2000s:
-
-![](/DATA/sf/logo0.jpg){.img-fluid}
-
-![](/DATA/sf/logo2.jpg){.img-fluid}
-
-![](/DATA/sf/logo2b.jpg){.img-fluid}
-
-![](/DATA/sf/logo1.jpg){.img-fluid}
-
-![](/DATA/sf/fool2007.jpg){.img-fluid}
-
-![](/DATA/sf/fool2011.jpg){.img-fluid}
-
-The Logo of the glorious Software Fools Tangible Tabletop Division, engaging
-successfully in bleeding edge hardware designs:
-
-![](/DATA/sf/logo3.jpg){.img-fluid}
-
-And here antoher one:
-
-![](/DATA/sf/hardwarefool.jpg){.img-fluid}
-
-Interestingly the Division suddenly ceased to exist, on the very verge of its success.
-
-The logo of the famous Software Fools Mediawiki, base of universal knowledge covering a broad range of topics:
-
-![](/DATA/sf/wikifool.jpg){.img-fluid}
-
-The software fools 2bit logo:
-
-![](/DATA/sf/logo_pixel.jpg){.img-fluid style="width:380px;'"}
-
-and some webdesign logos used mainly by nick for branding:
-
-![](/DATA/sf/webdesign1.jpg){.img-fluid}
-
-![](/DATA/sf/webdesign2.jpg){.img-fluid}
-
-
-
-
diff --git a/080_blog/00_garbage/00020_Notes-on-Mail-Clients/index.md b/080_blog/00_garbage/00020_Notes-on-Mail-Clients/index.md
deleted file mode 100644
index 68a7be8..0000000
--- a/080_blog/00_garbage/00020_Notes-on-Mail-Clients/index.md
+++ /dev/null
@@ -1,144 +0,0 @@
-## Mail Clients
-
-### Overview
-
-The Softwarefools Mailserver (SFMS) handles various domains and users. The
-communication between the clients and the server is encrypted by TLS (better
-known as SSL3.1+) to guarantee maximum security. Even though all common
-major mailservices (GMX,Yahoo!, etc.) function the same way and through the
-same technology, connecting to an encrypted server can be somehow tricky. This
-is a result of various encryption standards that are often used simultaneously
-by client programmers. To make this process as short and effective as possible,
-we have summed up the working connection settings for all Mail User Agents
-(MUAs) / Mail Retrieval Agents (MRAs) / Mail Transport Agent (MTAs) we have
-tested so far. A good explanation on the differences between MUAs, MRAs and
-MTAs can be found here: http://dev.mutt.org/trac/wiki/MailConcept
-
-The SFMS supports the IMAP protocol to remotely handle all incoming mail. This
-allows you to keep your mailfolder in order on all devices and interfaces you
-plan to access the server with. Outoging mail is pushed on the SFMS via the
-SMTPD protocol.
-
-### Fingerprints
-
-To ensure highest possible security you should check the server keys fingeprints (see below), before accepting them through your favourite client. Note that you should also access this wiki over TLS/SSL to avoid the possibility of a man-in-the-middle attack.
-
- IMAP on port 993:
-
- MD5: 02:B0:72:78:F7:F1:28:40:C4:DB:37:3F:18:BB:E1:AF
- SHA1: 36:6E:E3:8A:FD:C2:AF:F9:70:4F:B2:F3:E1:D1:03:AB:B7:7E:31:9B
-
- SMTPD on port 25:
-
- MD5: 49:D9:B8:49:44:73:B6:74:C0:BE:7A:5D:7D:46:44:C0
- SHA1: 9F:2C:40:51:AA:17:CF:2B:F1:EA:B9:E4:20:57:76:84:38:CC:33:5C
-
-### General Settings
-
-The general settings to access your mail account are your username (the full
-main mail address on SFMS, e.g. name@domain) and your password. We
-emphasize using IMAP as method to receive mail because it much more complys
-with todays multi device accessibility. If you prefer using POP3 you have to
-think about setting the “Keep mail on server” settings in your client so you
-won’t come to a point of loosing important mails on the server. SFMS can
-operate in both methods. In general there is only one address that is important
-both as incoming and outgoing mailserver address: mail.softwarefools.com But to
-be ready for future expansion of the Software Fools Universe we recommend to
-use imap.softwarefools.com or pop.softwarefools.com (depending on your prefered
-Inbox method) and smtp.softwarefools.com.
-
-Alternatively you can always use the corresponding subdomains with your domain
-(e.g. imap.gotsche.at, smtp.copterwerk.com)
-
-The security method used is SSL/TSL on both servers. Our SMTP server requires
-authentification with the same username and password as the incoming
-mailserver. For specific adresses of all supported domains see Domains managed
-by SF.
-
-### Agents
-
-#### Squirrel Webmail
-
-The easiest way of connecting to the SFMS is directly visiting Squirrel Webmail interface. The Squirrelmail interface allowes you to send emails and access your recived mails with an IMAP connection. You can customize your personal Squirrelmail interface as much as you like in the Options. We recommend the Theme Classic Blue with Font Verdana 12
-
-To access the Squirrelmail interface visit the following link and enter your login data: https://secure.softwarefools.com/squirrelmail/
-
-For some domains we created some easy-to-remember shortcuts to this page (e.g. http://webmail.gotsche.at).
-
-It is important to note that the webaccess to the mails should always happen encrypted through https. The certificate for https://secure.softwarefools.com is registered so all major Browsers should accept it immediately. If not, it might be important to accept the certificate specifically to access the https page.
-
-#### Microsoft Outlook
-
-One of the most common mailclients in use is Microsoft Outlook of the MS-Office bundle. As all major mail clients it offers to access multiple mail accounts as well as managing schedules and contacts. To connect to SFMS with outlook you have to enter the Account management …. (tbc)
-
-Link: http://support.microsoft.com/kb/829918
-
-#### Mozilla Thunderbird
-
-A free and increasingly popular mailclient is Thunderbird of the Mozilla community. As MS-O it offers access to multiple eMail accounts. Also the usability of Schedules and Contact management have been cloned. This makes Thunderbird a client of choice for everybody not owning MS-Office. To configure a new email account follow these steps:
-
-* Enter Edit > Account Settings
-* In the Account-Actions Dropdown select New eMail Account
-* Enter your full Name, your email address (also aliases work) and your password and click Continue
-* Thunderbird will now try out typical mailserver settings, if this processis not succesfull or if you want to configure yourself click Manual Setting
-* For the Incoming mailserver select IMAP. As server address Thunderbird will use the domain of the Mail adress entered above, complete it to imap.softwarefools.com (alternativly imap.yourdomain will also work). As Security Method select SSL/TSL at the Standard Port: 993. The Authentification Method should be set to: Password,normal.
-* The Outgoing mailserver is of course an SMTP server, just complete the server address to smtp.softwarefools.com (alternativly smtp.yourdomain). As Security Method select STARTTSL at Port: 587. Authentification Method again should be set to: Password,normal
-* The Usernames used for both servers are the full email address (e.g. name@domain), aliases will not work.
-
-#### Android Mail Client
-
-To add a new mail account to your Android mail client open settings and click on Add Account. Enter your mail-address and password and click Continue. The client will now ask what type of Mail account you would like to set up. Again we emphasize using IMAP.This choice is final in Android Mail Client, if you want to change the method you have to delete the mail account and create a new one. Android will now propose some settings for the Incoming Mailserver (the serveraddress will be composed of your method and the mails domain, the username will be the mailname,etc.), yet these are not yet correct. Complete the usernameto your full email address and select Securitytype SSL (accept all certificates) (on port 993). When clicking Continue the client will try out the settings and if correct continue to the outgoing mailserver settings. Again the client will propose some settings such as using the same username and password and again precompose the serveraddress. The only thing left to do is selecting the securitymethod: TLS (accept all certificates) (Port should be 587). On some newer Android Systems (5+) its possible to get repeated “Server not responding” messages if you try SSL (accept all certificates) on the incoming server directly. This can be fixed by using strict SSL once to get a “Certificate not valid” note and Then select SSL (accept all certificates). Same applies for TSL on the outgoing server.
-
-As accessing your mails with your mobile can be data intensive android mail client offers some additional settings on the next page of the configurator. You can select in what frame of time the mails should be synced with your phone and how often this synchronisation take place (ordinarily and in rush hours). The starting and ending time of your rush hours can be set for all your accounts in the clent properties. On the last page of the configurator you can name the mail account on your phone to better recognize it, and you have to enter the name displayed to an recipient of your mails.
-
-#### iPhone Mail Client
-
-Setting up a new Mail account on your iPhone works pretty much like on android device. Visit [1] for more information.
-
-#### Claws Mail
-
-The following was tested on my debian-wheezy system with Claws Mail version 3.8.1.
-
-* Configuration -> Create new account
-* Basic: Name of Account: whatever
-* Basic: Full name: whatever
-* Basic: Mail address: user@domain.com
-* Basic: Protocol: IMAP4
-* Basic: Server for receiving: mail.softwarefools.com
-* Basic: SMTP server (send): mail.softwarefools.com
-* Basic: User ID: user@domain.com
-* Basic: Password: secret_password
-* Receive: Authentication method: LOGIN
-* Send: SMTP Authentication (SMTP AUTH): LOGIN
-* SSL: IMAP4: Use SSL for IMAP4 connection
-* SSL: Send (SMTP): Use STARTTLS command to start SSL session
-
-It might be necessery to rebuild your folder-tree: proceed as follows:
-
-* Right mouse-click on account main-folder ->
-* Rebuild folder tree ->
-* YES
-
-#### Mutt
-
-Ideally mutt will serve only the purpose of a MUA, outsourcing the retrieval of emails to a MRA (e.g. fechmail) and the relaying of emails to a MTA (e.g. postfix). Configuration is trivial in that case. Adapt your .muttrc as follows:
-
- set spoolfile=/var/mai/username
-
-You can also access your imap mails directly from within mutt:
-
- set imap_user=user@domain.com
- set imap_pass=secret_password
- set spoolfile=imaps://mail.softwarefools.com/INBOX
-
-#### Fetchmail
-
-For the simplest configuration of fetchmail as your MRA, add the following line to your .fetchmailrc (adapt user@domain.com, secret_password and local_username):
-
- poll mail.softwarefools.com protocol IMAP user "user@domain.com" there with password "secret_password" is local_username here ssl sslfingerprint '02:B0:72:78:F7:F1:28:40:C4:DB:37:3F:18:BB:E1:AF' fetchall
-
-#### Postfix
-
-In many scenarios it is recommended to use a seperate MTA (e.g. postfix) to relay your outgoing emails to remote hosts. If you decide to use postfix read on here: http://www.postfix.org/
-
-
diff --git a/080_blog/00_garbage/00025_Open-Source-Gaming-on-Linux/index.md b/080_blog/00_garbage/00025_Open-Source-Gaming-on-Linux/index.md
deleted file mode 100644
index 38a6311..0000000
--- a/080_blog/00_garbage/00025_Open-Source-Gaming-on-Linux/index.md
+++ /dev/null
@@ -1,33 +0,0 @@
-Open Source Linux Games
-=======================
-
-May 22, 2015
-
-Some of my favourite games from the 90ies are reimplemented as open-source software and work natively on Linux.
-
-## OpenTTD (Transport Tycoon Deluxe)
-My beloved Transport Tycoon with many extra features and high resolution graphics.
-
-![](/DATA/linuxgames/ttd.png){style="width:50%"}
-
-
-## Jagged Alliance 2 (ja2-straciatella)
-“No cops, no courts, no jails, no law. You can count me in!”
-
-![](/DATA/linuxgames/ja2.jpg){style="width:50%"}
-
-## ScummVM
-Script Creation Utility for Maniac Mansion! This supports a multitude of Lucas Arts (and not only) games.
-
-![](/DATA/linuxgames/sammax.png){style="width:50%"}
-
-## OpenRA
-Supports a variety of the classical Westwood real-time strategy games.
-
-![](/DATA/linuxgames/ra.png){style="width:50%"}
-
-## More
-Check out this external pages for even more games:
-
- [1] https://wiki.debian.org/Games/
- [2] http://osgameclones.com/
diff --git a/080_blog/00_garbage/index.md b/080_blog/00_garbage/index.md
deleted file mode 100644
index 3055918..0000000
--- a/080_blog/00_garbage/index.md
+++ /dev/null
@@ -1,5 +0,0 @@
-Old and Outdated
-================
-
-Here you can find some some old and outdtdated articles, please do not read them.
-They are kept here only for historical reference reasons.
diff --git a/080_blog/index.md b/080_blog/index.md
index f4aee65..fad3ef7 100644
--- a/080_blog/index.md
+++ b/080_blog/index.md
@@ -1,2 +1,5 @@
# Miguel's Blog
+While this is not strictly a chronological blog, you can find here a loose
+collection of some random articles, thoughts and projects of mine...
+
diff --git a/010_me/Michal-Idziorek.jpg b/Michal-Idziorek.jpg
index ddb3640..ddb3640 100644
--- a/010_me/Michal-Idziorek.jpg
+++ b/Michal-Idziorek.jpg
Binary files differ
diff --git a/010_me/Michal_Idziorek_CV.pdf b/Michal_Idziorek_CV.pdf
index f73fe30..f73fe30 100644
--- a/010_me/Michal_Idziorek_CV.pdf
+++ b/Michal_Idziorek_CV.pdf
Binary files differ
diff --git a/index.md b/index.md
index e69de29..ec17625 100644
--- a/index.md
+++ b/index.md
@@ -0,0 +1,53 @@
+###>>>KWD Michal Idziorek, Michał Idziorek, Michael Idziorek, Idziorek
+###>>>DSC Everything you ever wanted to know about Michal Idziorek. This Website acts as a central Hub hosting his notes, projects, achievements as well as utter failiures.
+###>>>TITLE Michal Idziorek
+Michal Idziorek
+===============
+
+<div itemscope itemtype="http://schema.org/Person">
+Hello and Welcome to the virtual home of <span itemprop="name">Michal Idziorek</span>,
+known as <em itemprop='alternateName'>Miguel the Red Scorpio</em>, a
+<span itemprop="description">developer, software engineer, scientist, philosopher,
+as well as self-proclaimed artist and culinarian</span>.
+Michal Idziorek graduated from the _Vienna University of Technology_
+and holds a _Master of Science_ degree in _Media and Computer Science_.
+
+Over the years Michal professionally engaged in multidisciplinary
+academic, corporate and freelance activities, acquiring a broad toolkit of
+skills, he is continuously and passionately extending.
+
+<div itemprop="image" itemscope itemtype="http://schema.org/ImageObject">
+<figure>
+![](Michal-Idziorek.jpg){itemprop="contentUrl" .img-fluid alt="Michal Idziorek smiling in front of green grass" title="~~ But youth smiles without any reason. It is one of its chiefest charms. ~~"}
+<figcaption itemprop="name">_Michal Idziorek smiling_</figcaption>
+</figure>
+</div>
+
+What is this Website About?
+===========================
+
+This website serves as shelter for some of my [notes](/blog) on a variety
+of subjects and hosts a somehow random selection of my works and projects.
+Please keep in mind, that this website is essentially under sustained
+construction and more content is scheduled to follow.
+
+Contact
+=======
+
+You can Contact me in English, German, Polish or Klingon via any of the following channels:
+
+* email: [m.i@gmx.at](mailto:m.i@gmx.at)
+* XMPP: miguel (on the softwarefools.com server)
+* IRC: oo\_miguel (on freenode or oftc)
+
+Feel free to send questions or suggestions.
+
+CV
+==
+
+Download a PDF version of my Curriculum Vitae:
+
+[Michal\_Idziorek\_CV.pdf](/DATA/Michal_Idziorek_CV.pdf)
+
+It is likely out of date, sorry.
+
diff --git a/template.html b/template.html
index bd66b91..418945c 100644
--- a/template.html
+++ b/template.html
@@ -53,7 +53,7 @@
</div>
<div id="footer" class="p-3 bg-primary text-light text-center">
- &copy; 1994-2019
+ &copy; 1994-2019 | powered by <a href="https://www.idziorek.net/blog/Haskell-Projects/Estatico-Page-Maker/index.html">estático</a>
</div>
</div>
</div>