diff --git a/.bundle/config b/.bundle/config
deleted file mode 100644
index 344f8c0..0000000
--- a/.bundle/config
+++ /dev/null
@@ -1,3 +0,0 @@
----
-BUNDLE_PATH: "vendor"
-BUNDLE_DISABLE_SHARED_GEMS: "true"
diff --git a/.gitignore b/.gitignore
index e13fdc9..07c11ab 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,4 +1,2 @@
-/vendor
-_site/
-/.bundle
-/vendor
+/output/
+/gergelypolonkaieu_site.egg-info/
diff --git a/.hyde.el b/.hyde.el
deleted file mode 100644
index e1e36e6..0000000
--- a/.hyde.el
+++ /dev/null
@@ -1,2 +0,0 @@
-(setq hyde/git/remote "origin"
- hyde/git/remote-branch "master")
diff --git a/404.md b/404.md
deleted file mode 100644
index 1837fc1..0000000
--- a/404.md
+++ /dev/null
@@ -1,11 +0,0 @@
----
-layout: page
-title: Not Found
-permalink: /404.html
----
-
-The page you are looking for is not here. Maybe it was but I have removed it. Most likely it was intentionally. If you think I made a mistake, please tell me.
-
-{% if page.url contains '/akarmi' %}
-If you are looking for the pictures that used to be here, you should definitely contact me. For reasons.
-{% endif %}
diff --git a/CNAME b/CNAME
deleted file mode 100644
index 4b2c5b3..0000000
--- a/CNAME
+++ /dev/null
@@ -1 +0,0 @@
-gergely.polonkai.eu
diff --git a/Gemfile b/Gemfile
deleted file mode 100644
index 3a39b05..0000000
--- a/Gemfile
+++ /dev/null
@@ -1,5 +0,0 @@
-source 'https://rubygems.org'
-
-gem 'jekyll'
-gem 'jekyll-gist'
-gem 'jekyll-paginate'
diff --git a/Gemfile.lock b/Gemfile.lock
deleted file mode 100644
index 7b9e583..0000000
--- a/Gemfile.lock
+++ /dev/null
@@ -1,78 +0,0 @@
-GEM
- remote: https://rubygems.org/
- specs:
- addressable (2.7.0)
- public_suffix (>= 2.0.2, < 5.0)
- colorator (1.1.0)
- concurrent-ruby (1.1.5)
- em-websocket (0.5.1)
- eventmachine (>= 0.12.9)
- http_parser.rb (~> 0.6.0)
- eventmachine (1.2.7)
- faraday (0.17.0)
- multipart-post (>= 1.2, < 3)
- ffi (1.11.1)
- forwardable-extended (2.6.0)
- http_parser.rb (0.6.0)
- i18n (1.7.0)
- concurrent-ruby (~> 1.0)
- jekyll (4.0.0)
- addressable (~> 2.4)
- colorator (~> 1.0)
- em-websocket (~> 0.5)
- i18n (>= 0.9.5, < 2)
- jekyll-sass-converter (~> 2.0)
- jekyll-watch (~> 2.0)
- kramdown (~> 2.1)
- kramdown-parser-gfm (~> 1.0)
- liquid (~> 4.0)
- mercenary (~> 0.3.3)
- pathutil (~> 0.9)
- rouge (~> 3.0)
- safe_yaml (~> 1.0)
- terminal-table (~> 1.8)
- jekyll-gist (1.5.0)
- octokit (~> 4.2)
- jekyll-paginate (1.1.0)
- jekyll-sass-converter (2.0.1)
- sassc (> 2.0.1, < 3.0)
- jekyll-watch (2.2.1)
- listen (~> 3.0)
- kramdown (2.1.0)
- kramdown-parser-gfm (1.1.0)
- kramdown (~> 2.0)
- liquid (4.0.3)
- listen (3.2.0)
- rb-fsevent (~> 0.10, >= 0.10.3)
- rb-inotify (~> 0.9, >= 0.9.10)
- mercenary (0.3.6)
- multipart-post (2.1.1)
- octokit (4.14.0)
- sawyer (~> 0.8.0, >= 0.5.3)
- pathutil (0.16.2)
- forwardable-extended (~> 2.6)
- public_suffix (4.0.1)
- rb-fsevent (0.10.3)
- rb-inotify (0.10.0)
- ffi (~> 1.0)
- rouge (3.12.0)
- safe_yaml (1.0.5)
- sassc (2.2.1)
- ffi (~> 1.9)
- sawyer (0.8.2)
- addressable (>= 2.3.5)
- faraday (> 0.8, < 2.0)
- terminal-table (1.8.0)
- unicode-display_width (~> 1.1, >= 1.1.1)
- unicode-display_width (1.6.0)
-
-PLATFORMS
- ruby
-
-DEPENDENCIES
- jekyll
- jekyll-gist
- jekyll-paginate
-
-BUNDLED WITH
- 2.0.2
diff --git a/Makefile b/Makefile
new file mode 100644
index 0000000..198d9f6
--- /dev/null
+++ b/Makefile
@@ -0,0 +1,74 @@
+PY?=python3
+PELICAN?=pelican
+PELICANOPTS=
+
+BASEDIR=$(CURDIR)
+INPUTDIR=$(BASEDIR)/content
+OUTPUTDIR=$(BASEDIR)/output
+CONFFILE=$(BASEDIR)/pelicanconf.py
+PUBLISHCONF=$(BASEDIR)/publishconf.py
+
+DEBUG ?= 0
+ifeq ($(DEBUG), 1)
+ PELICANOPTS += -D
+endif
+
+RELATIVE ?= 0
+ifeq ($(RELATIVE), 1)
+ PELICANOPTS += --relative-urls
+endif
+
+help:
+ @echo 'Makefile for a pelican Web site '
+ @echo ' '
+ @echo 'Usage: '
+ @echo ' make html (re)generate the web site '
+ @echo ' make clean remove the generated files '
+ @echo ' make regenerate regenerate files upon modification '
+ @echo ' make publish generate using production settings '
+ @echo ' make serve [PORT=8000] serve site at http://localhost:8000'
+ @echo ' make serve-global [SERVER=0.0.0.0] serve (as root) to $(SERVER):80 '
+ @echo ' make devserver [PORT=8000] serve and regenerate together '
+ @echo ' make ssh_upload upload the web site via SSH '
+ @echo ' make rsync_upload upload the web site via rsync+ssh '
+ @echo ' '
+ @echo 'Set the DEBUG variable to 1 to enable debugging, e.g. make DEBUG=1 html '
+ @echo 'Set the RELATIVE variable to 1 to enable relative urls '
+ @echo ' '
+
+html:
+ $(PELICAN) $(INPUTDIR) -o $(OUTPUTDIR) -s $(CONFFILE) $(PELICANOPTS)
+
+clean:
+ [ ! -d $(OUTPUTDIR) ] || rm -rf $(OUTPUTDIR)
+
+regenerate:
+ $(PELICAN) -r $(INPUTDIR) -o $(OUTPUTDIR) -s $(CONFFILE) $(PELICANOPTS)
+
+serve:
+ifdef PORT
+ $(PELICAN) -l $(INPUTDIR) -o $(OUTPUTDIR) -s $(CONFFILE) $(PELICANOPTS) -p $(PORT)
+else
+ $(PELICAN) -l $(INPUTDIR) -o $(OUTPUTDIR) -s $(CONFFILE) $(PELICANOPTS)
+endif
+
+serve-global:
+ifdef SERVER
+ $(PELICAN) -l $(INPUTDIR) -o $(OUTPUTDIR) -s $(CONFFILE) $(PELICANOPTS) -p $(PORT) -b $(SERVER)
+else
+ $(PELICAN) -l $(INPUTDIR) -o $(OUTPUTDIR) -s $(CONFFILE) $(PELICANOPTS) -p $(PORT) -b 0.0.0.0
+endif
+
+
+devserver:
+ifdef PORT
+ $(PELICAN) -lr $(INPUTDIR) -o $(OUTPUTDIR) -s $(CONFFILE) $(PELICANOPTS) -p $(PORT)
+else
+ $(PELICAN) -lr $(INPUTDIR) -o $(OUTPUTDIR) -s $(CONFFILE) $(PELICANOPTS)
+endif
+
+publish:
+ $(PELICAN) $(INPUTDIR) -o $(OUTPUTDIR) -s $(PUBLISHCONF) $(PELICANOPTS)
+
+
+.PHONY: html help clean regenerate serve serve-global devserver publish
diff --git a/Pipfile b/Pipfile
new file mode 100644
index 0000000..017057f
--- /dev/null
+++ b/Pipfile
@@ -0,0 +1,14 @@
+[[source]]
+name = "pypi"
+url = "https://pypi.org/simple"
+verify_ssl = true
+
+[dev-packages]
+
+[packages]
+pelican = {extras = ["markdown"],version = "*"}
+gergelypolonkaieu-site = {editable = true,path = "."}
+typogrify = "*"
+
+[requires]
+python_version = "3.7"
diff --git a/Pipfile.lock b/Pipfile.lock
new file mode 100644
index 0000000..fcede0d
--- /dev/null
+++ b/Pipfile.lock
@@ -0,0 +1,151 @@
+{
+ "_meta": {
+ "hash": {
+ "sha256": "3848a327090b82fa6faf252335283a4c4648c0848fcf02cd841428b45a36c238"
+ },
+ "pipfile-spec": 6,
+ "requires": {
+ "python_version": "3.7"
+ },
+ "sources": [
+ {
+ "name": "pypi",
+ "url": "https://pypi.org/simple",
+ "verify_ssl": true
+ }
+ ]
+ },
+ "default": {
+ "blinker": {
+ "hashes": [
+ "sha256:471aee25f3992bd325afa3772f1063dbdbbca947a041b8b89466dc00d606f8b6"
+ ],
+ "version": "==1.4"
+ },
+ "docutils": {
+ "hashes": [
+ "sha256:6c4f696463b79f1fb8ba0c594b63840ebd41f059e92b31957c46b74a4599b6d0",
+ "sha256:9e4d7ecfc600058e07ba661411a2b7de2fd0fafa17d1a7f7361cd47b1175c827",
+ "sha256:a2aeea129088da402665e92e0b25b04b073c04b2dce4ab65caaa38b7ce2e1a99"
+ ],
+ "version": "==0.15.2"
+ },
+ "feedgenerator": {
+ "hashes": [
+ "sha256:5ae05daa9cfa47fa406ee4744d0b7fa1c8a05a7a47ee0ad328ddf55327cfb106"
+ ],
+ "version": "==1.9"
+ },
+ "gergelypolonkaieu-site": {
+ "editable": true,
+ "path": "."
+ },
+ "jinja2": {
+ "hashes": [
+ "sha256:74320bb91f31270f9551d46522e33af46a80c3d619f4a4bf42b3164d30b5911f",
+ "sha256:9fe95f19286cfefaa917656583d020be14e7859c6b0252588391e47db34527de"
+ ],
+ "version": "==2.10.3"
+ },
+ "markdown": {
+ "hashes": [
+ "sha256:2e50876bcdd74517e7b71f3e7a76102050edec255b3983403f1a63e7c8a41e7a",
+ "sha256:56a46ac655704b91e5b7e6326ce43d5ef72411376588afa1dd90e881b83c7e8c"
+ ],
+ "version": "==3.1.1"
+ },
+ "markupsafe": {
+ "hashes": [
+ "sha256:00bc623926325b26bb9605ae9eae8a215691f33cae5df11ca5424f06f2d1f473",
+ "sha256:09027a7803a62ca78792ad89403b1b7a73a01c8cb65909cd876f7fcebd79b161",
+ "sha256:09c4b7f37d6c648cb13f9230d847adf22f8171b1ccc4d5682398e77f40309235",
+ "sha256:1027c282dad077d0bae18be6794e6b6b8c91d58ed8a8d89a89d59693b9131db5",
+ "sha256:24982cc2533820871eba85ba648cd53d8623687ff11cbb805be4ff7b4c971aff",
+ "sha256:29872e92839765e546828bb7754a68c418d927cd064fd4708fab9fe9c8bb116b",
+ "sha256:43a55c2930bbc139570ac2452adf3d70cdbb3cfe5912c71cdce1c2c6bbd9c5d1",
+ "sha256:46c99d2de99945ec5cb54f23c8cd5689f6d7177305ebff350a58ce5f8de1669e",
+ "sha256:500d4957e52ddc3351cabf489e79c91c17f6e0899158447047588650b5e69183",
+ "sha256:535f6fc4d397c1563d08b88e485c3496cf5784e927af890fb3c3aac7f933ec66",
+ "sha256:62fe6c95e3ec8a7fad637b7f3d372c15ec1caa01ab47926cfdf7a75b40e0eac1",
+ "sha256:6dd73240d2af64df90aa7c4e7481e23825ea70af4b4922f8ede5b9e35f78a3b1",
+ "sha256:717ba8fe3ae9cc0006d7c451f0bb265ee07739daf76355d06366154ee68d221e",
+ "sha256:79855e1c5b8da654cf486b830bd42c06e8780cea587384cf6545b7d9ac013a0b",
+ "sha256:7c1699dfe0cf8ff607dbdcc1e9b9af1755371f92a68f706051cc8c37d447c905",
+ "sha256:88e5fcfb52ee7b911e8bb6d6aa2fd21fbecc674eadd44118a9cc3863f938e735",
+ "sha256:8defac2f2ccd6805ebf65f5eeb132adcf2ab57aa11fdf4c0dd5169a004710e7d",
+ "sha256:98c7086708b163d425c67c7a91bad6e466bb99d797aa64f965e9d25c12111a5e",
+ "sha256:9add70b36c5666a2ed02b43b335fe19002ee5235efd4b8a89bfcf9005bebac0d",
+ "sha256:9bf40443012702a1d2070043cb6291650a0841ece432556f784f004937f0f32c",
+ "sha256:ade5e387d2ad0d7ebf59146cc00c8044acbd863725f887353a10df825fc8ae21",
+ "sha256:b00c1de48212e4cc9603895652c5c410df699856a2853135b3967591e4beebc2",
+ "sha256:b1282f8c00509d99fef04d8ba936b156d419be841854fe901d8ae224c59f0be5",
+ "sha256:b2051432115498d3562c084a49bba65d97cf251f5a331c64a12ee7e04dacc51b",
+ "sha256:ba59edeaa2fc6114428f1637ffff42da1e311e29382d81b339c1817d37ec93c6",
+ "sha256:c8716a48d94b06bb3b2524c2b77e055fb313aeb4ea620c8dd03a105574ba704f",
+ "sha256:cd5df75523866410809ca100dc9681e301e3c27567cf498077e8551b6d20e42f",
+ "sha256:e249096428b3ae81b08327a63a485ad0878de3fb939049038579ac0ef61e17e7"
+ ],
+ "version": "==1.1.1"
+ },
+ "pelican": {
+ "extras": [
+ "markdown"
+ ],
+ "hashes": [
+ "sha256:656d8ff9f778951f4e317c9e6530e92b02698c5961ebf019c583775a30f857f6",
+ "sha256:be7ea9a09311374322b5579c88975ae003409e40c833e761780a0d0dbd84e756"
+ ],
+ "index": "pypi",
+ "version": "==4.2.0"
+ },
+ "pygments": {
+ "hashes": [
+ "sha256:71e430bc85c88a430f000ac1d9b331d2407f681d6f6aec95e8bcfbc3df5b0127",
+ "sha256:881c4c157e45f30af185c1ffe8d549d48ac9127433f2c380c24b84572ad66297"
+ ],
+ "version": "==2.4.2"
+ },
+ "python-dateutil": {
+ "hashes": [
+ "sha256:73ebfe9dbf22e832286dafa60473e4cd239f8592f699aa5adaf10050e6e1823c",
+ "sha256:75bb3f31ea686f1197762692a9ee6a7550b59fc6ca3a1f4b5d7e32fb98e2da2a"
+ ],
+ "version": "==2.8.1"
+ },
+ "pytz": {
+ "hashes": [
+ "sha256:1c557d7d0e871de1f5ccd5833f60fb2550652da6be2693c1e02300743d21500d",
+ "sha256:b02c06db6cf09c12dd25137e563b31700d3b80fcc4ad23abb7a315f2789819be"
+ ],
+ "version": "==2019.3"
+ },
+ "six": {
+ "hashes": [
+ "sha256:3350809f0555b11f552448330d0b52d5f24c91a322ea4a15ef22629740f3761c",
+ "sha256:d16a0141ec1a18405cd4ce8b4613101da75da0e9a7aec5bdd4fa804d0e0eba73"
+ ],
+ "version": "==1.12.0"
+ },
+ "smartypants": {
+ "hashes": [
+ "sha256:8db97f7cbdf08d15b158a86037cd9e116b4cf37703d24e0419a0d64ca5808f0d"
+ ],
+ "version": "==2.0.1"
+ },
+ "typogrify": {
+ "hashes": [
+ "sha256:8be4668cda434163ce229d87ca273a11922cb1614cb359970b7dc96eed13cb38"
+ ],
+ "index": "pypi",
+ "version": "==2.0.7"
+ },
+ "unidecode": {
+ "hashes": [
+ "sha256:1d7a042116536098d05d599ef2b8616759f02985c85b4fef50c78a5aaf10822a",
+ "sha256:2b6aab710c2a1647e928e36d69c21e76b453cd455f4e2621000e54b2a9b8cce8"
+ ],
+ "version": "==1.1.1"
+ }
+ },
+ "develop": {}
+}
diff --git a/README.md b/README.md
deleted file mode 100644
index 8ffd09f..0000000
--- a/README.md
+++ /dev/null
@@ -1,10 +0,0 @@
-# gergely.polonkai.eu
-
-## Initial start
-
-```
-git clone $REPO
-cd $REPO
-bundle install --path vendor/bundle
-bundle exec jekyll server
-```
diff --git a/_config.yml b/_config.yml
deleted file mode 100644
index 545be9f..0000000
--- a/_config.yml
+++ /dev/null
@@ -1,18 +0,0 @@
-# Site settings
-title: Gergely Polonkai
-email: gergely@polonkai.eu
-description: "developer, systems engineer and administrator"
-url: "http://gergely.polonkai.eu"
-timezone: Europe/Budapest
-name: Gergely Polonkai
-paginate: 10
-paginate_path: "/blog/page/:num"
-exclude: ['README.md', 'Gemfile', 'Gemfile.lock', 'CNAME', ".hyde.el", "vendor"]
-include: ['.well-known']
-plugins:
- - jekyll-gist
- - jekyll-paginate
-
-# Build settings
-markdown: kramdown
-permalink: pretty
diff --git a/_data/contacts.yaml b/_data/contacts.yaml
deleted file mode 100644
index ec846fe..0000000
--- a/_data/contacts.yaml
+++ /dev/null
@@ -1,55 +0,0 @@
-- text: E-mail
- link: mailto:gergely@polonkai.eu
- image: email.png
- icon: envelope-o
-- text: Stack Exchange
- link: http://stackexchange.com/users/1369500/gergelypolonkai
- image: stackexchange.png
- icon: stack-exchange
-- text: LinkedIn
- link: http://www.linkedin.com/in/gergelypolonkai
- image: linkedin.png
- icon: linkedin
-- text: Skype
- link: skype:gergely.polonkai
- image: skype.png
- icon: skype
-- text: Facebook
- link: http://facebook.com/Polesz
- image: facebook.png
- icon: facebook
-- text: Google+
- link: https://plus.google.com/+GergelyPolonkai/about
- image: google_plus.png
- icon: google-plus
-- text: Twitter
- link: http://twitter.com/GergelyPolonkai
- image: twitter.png
- icon: twitter
-- text: Tumblr
- link: http://gergelypolonkai.tumblr.com
- image: tumblr.png
- icon: tumblr
-- text: deviantArt
- link: http://gergelypolonkai.deviantart.com
- image: deviantart.png
- icon: deviantart
-- text: Hashnode
- link: https://hashnode.com/@gergelypolonkai
- image: hashnode.png
-- text: Keybase
- link: https://keybase.io/gergelypolonkai
- image: keybase.png
- icon: keybase
-- text: Liberapay
- link: https://liberapay.com/gergelypolonkai
- image: liberapay.png
- icon: liberapay
-- text: Mastodon
- link: https://social.polonkai.eu/@gergely
- image: mastodon.png
- icon: mastodon
-- text: Pay me a coffee
- link: https://paypal.me/GergelyPolonkai/250
- image: paypal.png
- icon: paypal
diff --git a/_data/symbolon.json b/_data/symbolon.json
deleted file mode 100644
index a4950cd..0000000
--- a/_data/symbolon.json
+++ /dev/null
@@ -1,1738 +0,0 @@
-[
- {
- "road": "Játszd a szerepedet. Menj fel a színpadra, és add elő. Ne zavarjon, hogy nem vagy vele azonos. A színpad ebben a pillanatban a te világod, tehát játssz olyan jól, ahogyan csak tudsz. Számodra ez valahogy hamisan hangzik? Ne törődj vele - utadon most ezt követelik meg tőled. Tartsd magad olyan fontosnak, amilyen a szereped.",
- "planets": [
- "Nap",
- "Merkúr"
- ],
- "problem": "Nem sejted, hogy jelenlegi helyzetedben csak egy szerepet játszol. Valódi éned a szerep mögött rejtőzik, és sokáig tarthat, amíg ezt beismered magadnak. Mindenesetre már gyanakodsz, hogy most nem vagy éppen nagyon valódi vagy eredeti, de ebben a pillanatban elegendő, ha tudod, hogy fontosságodat csak kölcsönvetted, csak megjátszod. Természetesen félsz, hogy leleplezhetnek.",
- "number": 26,
- "name": "A Színész",
- "goal": "Most úgy játszod szerepedet, hogy már nem azonosítod magad vele. Könnyedén veszed a helyzetet, mert tudod, hogy egy játék résztvevője vagy csupán. Képes vagy kiállni valódi önmagad mellett a többiek előtt is. Ki az, aki most már leleplezhetne téged?",
- "keywords": [
- "szerep",
- "önábrázolás",
- "kölcsönvett identitás",
- "\"színház\"",
- "díszlet",
- "intellektualizálás"
- ],
- "signs": [
- "leo",
- "gemini"
- ]
- },
- {
- "road": "Utad egyik stációját kell látnod abban, hogy tettessé válsz. Arra van szükséged, hogy cselekedj, ez pedig átvágja a gordiuszi csomót, amely megkötözve tart.",
- "planets": [
- "Mars"
- ],
- "problem": "Problémád alapját dühöd és agressziód képezi, amelyet még nem éltél meg, és amelyet még nem fogadsz el részedként. Mi történt ezzel a szerepszemélyiséggel? Miért rejted el érzéseit? Talán azt gondolod, nem illenek hozzád, te túlságosan finom vagy hozzájuk, és az egészet \"okosan\" is meg lehetne oldani? Talán csak nem akarod gyávaságodat beismerni? A kártya arra szeretne emlékeztetni, hogy ezek a \"primitív\" érzések is benned vannak. Ameddig ezt a szerepszemélyiséget nem tudod megjeleníteni, vagyis a külvilág számára kifejezni, addig a stagnálás helyzetében vagy.",
- "number": 1,
- "name": "A Harcos",
- "goal": "Visszanyered cselekvési képességedet, most van erőd az újjászületéshez. A folyamat végén újjászületsz, erőidet bensődben újra összegyűjtheted, és a Harcos részt vehet a lét játékának újabb fordulójában",
- "keywords": [
- "agresszió",
- "érvényesülési képesség",
- "hódítás",
- "tettes",
- "fallikus erő",
- "az újrakezdés energiája"
- ],
- "signs": [
- "aries"
- ]
- },
- {
- "road": "Egy csalódás vár rád utadon. A szerelem és a párkapcsolat utáni vágyakozásod pillanatnyilag csak mézesmadzag, ami arra szolgál, hogy motiváljon és fejlődést hozzon számodra. Ki kell pukkasztanod ezt a szappanbuborékot, különben elveszel illúzióid labirintusában.",
- "planets": [
- "Vénusz",
- "Neptunusz"
- ],
- "problem": "Fogva tart egy kapcsolat álma. Vágyaid megmérgezik lelked táptalaját. Szemet hunysz magányod felett és folyamatosan egy varázsszőnyeget szövögetsz, ami sem melegíteni, sem elröpíteni nem fog soha. Hogy ne érezd belső ürességedet, olyan embert szeretnél beleszőni illúzióidba, aki nem neked rendeltetett.",
- "number": 68,
- "name": "A Király Két Gyermeke",
- "goal": "Most már tudod, hogy a beteljesületlen vágyakozásnak meghatározott célja van. Érezteti veled, hogy mi az, amit hiányolsz, és elindít a keresés útján. Így egyszer az élet titkának nyomára bukkansz: átérzed, hogy mindannyian csupán részei vagyunk a nagy egésznek, és fájdalmasan hiányoljuk az egységet.",
- "keywords": [
- "romantikus kapcsolat",
- "álomtárs (a \"kettős lélek\")",
- "kapcsolat nélküliség",
- "az eggyé válás illúziója",
- "álmodozás a szerelemről"
- ],
- "signs": [
- "libra",
- "pisces"
- ]
- },
- {
- "road": "Utad egy szakaszán most úgy kell áthaladnod (mert most erre van szükséged), hogy az eddig elhanyagolt oldalra (hogy a férfi vagy a női, azt te magad tudod a legjobban) sokkal több figyelmet fordíts, mint ahogyan ezt eddig tetted. Ki kell most javítanod érzelmi egyoldalúságodat, nőies oldaladat a férfiashoz, férfias oldaladat a nőieshez kell hozzáképzelned.",
- "planets": [
- "Hold",
- "Nap"
- ],
- "problem": "Problémád az, hogy nem érted a férfi és a női elv összeférhetetlenségét. Azt gondolod, egy kis jóakarattal lehetséges lenne számodra (vagy a partnered számára), hogy egyértelműen a saját utadat járd (vagy hogy partnered kövessen téged). Eközben azonban elhanyagolod a másik oldaladat, amely most a hátad mögött áll (a képen a nő és a férfi is egymásnak háttal állnak), és arra vár, hogy újra szóhoz juthasson, amit te pedig úgy értelmezel, mintha hátulról támadni készülne. Férfiként nem érted a benned élő nőt, nőként pedig nem érted a benned élő férfit. Próbálj meg, egyetlen pillanatra - a mindenkori másik pozícióba helyezkedni.",
- "number": 16,
- "name": "Az Összeférhetetlenség",
- "goal": "Az út végén mindkét oldal egyenjogúan áll egymással szemben. Bár nem szüntettük meg az összeférhetetlenséget, de most tudsz e két oldal egyidejű létezéséről, és mindkettőjüket ennek megfelelően méltányolod. Itt újra megsejtesz valamit a paradicsomból, és azok a pillanatok (a nap kezdete és vége), amikor megpillanthatják egymást, egy kicsit erősebben megdobogtatják szívedet.",
- "keywords": [
- "kiűzetés a paradicsomból",
- "a kettős ember",
- "házasság",
- "nappal és éjszaka",
- "jin és jang"
- ],
- "signs": [
- "cancer",
- "leo"
- ]
- },
- {
- "road": "Utadon nem tudod megállni, hogy ne kövesd a furulya édes hangjait, még akkor is, ha hónapok vagy évek múlva csak üres ígéreteknek bizonyulnak. Minél inkább rájössz, hogy mi a különbség a szép ötletek és az élet között, annál kevésbé esel a jövőben a csábítások csapdájába, és annál kevésbé lehet rád erőltetni valamit, és te sem fogod ezt tenni másokkal.",
- "planets": [
- "Merkúr",
- "Plútó"
- ],
- "problem": "Anélkül, hogy sejtenéd, becsapott egy ember vagy egy ötlet. Ez az esemény börtönbe zárt, az andalító és csábító zenétől nem tudsz szabadulni. Sajnos nincs senki, aki az árbochoz kötözhetett volna, ahogyan azt Odüsszeusszal tették, így nincs semmi, ami megvédene a Szirének édes, csábító énekétől.",
- "number": 53,
- "name": "A Furulyás",
- "goal": "Utad végén rájössz, hogy nem kaptad meg azt, amit megígértek neked. Tehát most már megérted, hogy valaki mézesmadzagot húzott el az orrod előtt, és lehet, hogy most becsapottnak érzed magad. De az igazság az, hogy elhagytad ugyan a karosszéked, de vezető nélkül indultál el, és ezért kellett ennek az egésznek megtörténnie!",
- "keywords": [
- "becsapottság",
- "szuggesztió",
- "propagandista",
- "rábeszélő-művész",
- "vásárlási mánia",
- "reklám (képek",
- "melyek azért készültek",
- "hogy elvarázsoljanak)"
- ],
- "signs": [
- "gemini",
- "scorpio"
- ]
- },
- {
- "road": "Minden ember életében vannak olyan időszakok, amikor le kell mondania a vágyairól egy magasabb cél érdekében. Utadon az a feladatod, hogy behódolj egy ilyen eszménynek. Többet kell megkövetelned magadtól, mint egyébként. A következő lépésed az, hogy csak kevés szabadságot engedélyezz magadnak, mintha meg akarnád büntetni magad valami miatt. Egy általad meghozandó \"áldozatról\" van szó, amelyet fejlődésed következő lépcsőjére kell helyezned ahhoz, hogy azt elérhesd.",
- "planets": [
- "Merkúr",
- "Plútó"
- ],
- "problem": "Egy kényszerképzet varázsától szenvedsz (ami lehet, hogy enyhe megfogalmazás). A \"mindenáron ártatlannak és tisztának lenni\" ördögi körének csapdájába estél. Úgy gondolod, hogy állandó öntisztogatással el tudod hárítani a gondolatban vagy tettben elkövetett rosszat. Ezek a rituálék olyan aprólékosak, és annyira önállósították magukat, hogy már mindennapi életed részének tekinted őket, pedig valójában életerődnek egy fontos részét elrabolják tőled, és tudtodon kívül irányítanak, akár egy madzagon rángatott babát.",
- "number": 59,
- "name": "Az Önostorozás",
- "goal": "A rituálék olyan energia mezők, melyek ugyanazon cselekmények állandó ismételgetésével jönnek létre (néha több ember közös cselekedetével). Megtanultad megkülönböztetni a tartalmas rituálékat az értéktelenektől. Egyes rituálék az alvilág istenének adják az erőt és az energiát, má s rituálék viszont neked. A különbség abban áll, hogy ezek a rituálék neked szolgálnak-e, hogy emlékezz, vagy hogy jobban koncentrálj, vagy csak azért használod őket, hogy felejts.",
- "keywords": [
- "önbüntetés",
- "bűntől való megszabadulás kényszere",
- "ostorozás",
- "kényszerneurózis",
- "ördögűzés",
- "egy eszme szolgálata"
- ],
- "signs": [
- "virgo",
- "scorpio"
- ]
- },
- {
- "road": "Életed egy elképzelés buborékjának fogságában van, mint egy Homunculus a varázsló lombikjában. Nagyon sok energiát öltél bele, hogy Homunculusszá válj, és most eljött az ideje, hogy áldozatot hozz, hogy a lekötött energiáidat újra felszabadíthasd. Áldozat és elképzelt világod egy részének lerombolása nélkül nem juthatsz előre, ördögi körben forogsz, és egyre vérszegényebbé válsz. Gondolj arra, hogy csak egy képet kell összetörnöd: ami Valódi, az elpusztíthatatlan.",
- "planets": [
- "Nap",
- "Plútó"
- ],
- "problem": "Egy mágikus cselekedet varázsa alatt állsz. Ezt pedig nem szabad félreértened. Akkor is, ha te magad \"áldozatnak\" látszol, csak saját mágikus múltad köszön vissza. Szellemi bilincsek kötnek meg, az életről alkotott hamis elképzelés jegyében éled az életed, amely sok erődet és életenergiádat felemészti.",
- "number": 29,
- "name": "A Mágus",
- "goal": "Megértetted, hogy teremtmény, és nem a Teremtő vagy. Magasabb törvényeknek - nagyobb összefüggéseknek - kell engedelmeskedned. Meg fogod találni békédet, és saját igazi csillagzatod alatt fogod folytatni utadat. Felismered, hogy minden más csillag \"Hollywoodból\" származik - szép képek, látszólagos ragyogás, de tulajdonképpen mind csak papírmasé.",
- "keywords": [
- "kísérlet az élet létrehozására (élet a lombikból)",
- "fekete- és fehérmágia",
- ""
- ],
- "signs": [
- "leo",
- "scorpio"
- ]
- },
- {
- "road": "Valahol utad során el kell rugaszkodnod. Tudatod egy új síkjára érkezel majd, magad mögött hagyva a régit. Még ha (régi) barátaid őrültnek tartanak is majd ezért, és nem akarnak többet szóba állni veled - az ilyen ugrás mindig tartalmaz ilyesfajta kockázatot.",
- "planets": [
- "Jupiter",
- "Uránusz"
- ],
- "problem": "Megzavarodtál, célt vesztettél, alig bírsz már kapaszkodni a régiben, és tisztán érzed, hogy szükséged van a régitől való elrugaszkodásra, de túl gyáva vagy hozzá. A talaj fenyegetően inog alattad, hiszen már régen túlhaladtál mostani fejlődési periódusodon - és mégsem akarod vállalni azt a kockázatot, hogy otthagyd eddigi biztos pontodat. Mindezt pontosan tudod is, de...",
- "number": 74,
- "name": "Az Óriásugrás",
- "goal": "Új értelmet lelsz életedben, amely élesen eltér a régitől. Az élet új területeit fedezed fel, és talán olyan barátokra is lelsz, akik értékesebbek lesznek számodra a régieknél. Ugorj, és sikerülni fog!",
- "keywords": [
- "paradigmaváltás",
- "ugrás az ismeretlenbe",
- "felszabadulás a vallási dogmák alól",
- "bolond a tetőn",
- "tudom",
- "hogy semmit sem tudok"
- ],
- "signs": [
- "sagittarius",
- "aquarius"
- ]
- },
- {
- "road": "Partnerkapcsolatod egy szokványos, átlagos szakaszába érkezett: nincsenek benne sem magasságok, sem mélységek. Csak éltek egymás mellett. Ez jelenleg problémád megoldása szempontjából az egyetlen helyes út. Így talán megteremtheted a békét és a csöndet ahhoz, hogy lazíts a szorító kötélen (hogy ellazulhass). Ez távolságot adhat, amelyre most szükséged van ahhoz, hogy objektíven láss.",
- "planets": [
- "Merkúr",
- "Vénusz"
- ],
- "problem": "Kapcsolatod (vagy a kívánt kapcsolatod) pillanatnyilag tartalmatlan és üres, mert ez az egód kívánsága. Minden energiádat a felszínen éled ki, ott akarod felékszerezni magad, és tetszetősnek látszani. Vagy valakinek a \"dísztárgyává\" váltál, vagy te magad használod fel partneredet arra, hogy megnövelje egódat. Együttlétetekben nincsenek lelki mélységek, csak unalom és kedvetlenség, amit megpróbáltok \"játékokkal\" áthidalni.",
- "number": 52,
- "name": "A Hiúság Vására",
- "goal": "A megjelenés, a külsőség fontos része életednek, így a kapcsolataidnak is. Hozzátartozik a játékhoz, és már megtanultad, hogyan játszd ezt a játékot anélkül, hogy túl nagy jelentőséget tulajdoníts neki.",
- "keywords": [
- "látni és láthatóvá válni",
- "az egót felértékelő kapcsolat",
- "az idő múlatása",
- "valakivel közösen tenni valamit",
- "hasonlóságok"
- ],
- "signs": [
- "gemini",
- "libra"
- ]
- },
- {
- "road": "Nem kerülheted el azt az utat, ami kapcsolatod alvilágába vezet. Súlyos kötelezettségek csapdájába kerültél, amelyből sokkal érettebben fogsz kiemelkedni és folytatni utadat. Látnod kell, hogy kapcsolatteremtő képességed képzetei állnak az utadban és azt is, hogy hol van az a pont, ahol hús-vér, valóságos partnered helyett csak egy képet vetítesz magad elé.",
- "planets": [
- "Vénusz",
- "Plútó"
- ],
- "problem": "Elcsábított és börtönbe zárt egy kép. Teljesen elkötelezted magad a partnerednek - vagy a valóságban, vagy képzeletvilágodban. Mindaddig össze leszel láncolva vele, míg fel nem idézed azt a varázslatot, amellyel belementél ebbe a kétes viszonyba. Kapcsolatodon pillanatnyilag átok ül. Egy elfelejtett átok, egy rituálé aktívvá vált. A helyzet követeli tőled, hogy szemébe pillants a démonnak, akit egykor te hívtál életre.",
- "number": 64,
- "name": "A Végzetes Kapcsolat",
- "goal": "Igazi, mélyről jövő szerelmi kötődést és fejlődést eredményező kapcsolat csak olyan partnerrel jöhet létre, akit a sors neked rendelt (és nem azzal, akit te kreáltál magadnak egy másik személyből). Bármilyen nehéz legyen is az itt elvégzendő \"kemény munka\", sosem válik olyan megsemmisítővé, mint azok a társkapcsolatok, melyek az alvilág ura által \"köttettek meg\". Annyiban érdemes az ilyen pokolbéli kapcsolat végén visszapillantani rá, hogy ilyenkor megláthatjuk a különbséget a házasság és a házasság képzete, a szerelem és a szerelem képzete között.",
- "keywords": [
- "láncok",
- "pokoli kapcsolat",
- "kapcsolat a mágiával",
- "fekete frigy",
- "függőség",
- "szado-mazochizmus",
- "pornográfia"
- ],
- "signs": [
- "libra",
- "scorpio"
- ]
- },
- {
- "road": "Az \"oldás\" fogalmát nagyon komolyan és szó szerint kell értened. Oldd el magad a külvilágtól, vonulj el szemlélődni, tekints magadba. Problémád nem a külvilágra vonatkozik - semmi mást nem kell tenned, mint önmagadba nézni!",
- "planets": [
- "Neptunusz"
- ],
- "problem": "Elvesztetted önmagad, világra irányuló tekintetedet illúziókkal homályosítottad el. Elbújsz önmagad elől, és ámítod magad valamivel. Megpróbálod a problémákat elfojtani, ki akarod őket kerülni, és félsz szembenézni a valósággal. Ehelyett a szentség fényével vonod be magad, hogy ne kelljen mindennapjaid gondjai között a sarkadra állnod. Problémádon még nem hatoltál keresztül - még messze állsz a megoldástól.",
- "number": 12,
- "name": "Az Angyal",
- "goal": "Vándorlásod célját első látásra nem lehet felismerni, a külvilágban nem látható. Mégis lelked belsejében ki fog gyúlni az általad megtapasztalt Igazság.",
- "keywords": [
- "igazság",
- "isteni szikra",
- "bölcsesség",
- "intuíció",
- "álom",
- "illúzió"
- ],
- "signs": [
- "pisces"
- ]
- },
- {
- "road": "Az egyetlen dolog, amit tehetsz, az az, hogy megszabadulsz a viszályt okozó körülménytől. Csak nyílt összetűzés árán tudsz továbblépni. Kapcsolatodon belül ez az út csak nagyon kevés harmóniát nyújt neked.",
- "planets": [
- "Mars",
- "Vénusz"
- ],
- "problem": "Nem akarsz észrevenni egy viszályt egy kapcsolaton belül. Ez jelenthet konfliktust a partnereddel, szomszédoddal, barátoddal, vagy családtagoddal. Álharmóniával hitegeted magad, félsz a vitáktól és az összeütközéstől. Partnered, akit agresszióid célpontjává tettél, most ellenségeddé vált. Ez a nyomás, amelyet ellennyomással próbálsz egyensúlyban tartani, testi szinten is könnyen megjelenhet (görcs, fájdalom, láz, vagy izgatottság formájában).",
- "number": 37,
- "name": "A Viszály",
- "goal": "Megtanultál együtt élni a nemek közti összeegyeztethetetlen ellentéttel. Ha éned szavát követed, amely saját jogait hangsúlyozza, akkor mindenképpen elveszíted a \"mi\" jelentőségét. Ha pedig megadod magad az együttes létnek, akkor egy részt fel kell áldoznod magadból. Nem lehetséges, hogy a kecske is jóllakjon és a káposzta is megmaradjon.",
- "keywords": [
- "a nemek harca",
- "összeütközés",
- "csatabárd",
- "a symbolon kettétörése"
- ],
- "signs": [
- "aries",
- "libra"
- ]
- },
- {
- "road": "Arra van szükséged, hogy utadon mindkét szerepszemélyiséggel azonosítsd magad, ezt mindketten meg is követelik. Nem nagyon kedvelik egymást. Tulajdonképpen a te kegyeidért vetélkednek. Mindketten azt mondják: \"Válassz engem!\" - és így megtanulod, hogy alapvetően egyikkel sem bocsátkozhatsz mélyebb kapcsolatba.",
- "planets": [
- "Hold",
- "Vénusz"
- ],
- "problem": "Egy döntés előtt állsz, és nem tudod meghozni. Mindkét út áldozattal járna, és számodra túl nagy ez az áldozat. Így pedig szíved megosztott, és most ez a probléma. Két lélek lakik bensőd női oldalán: szerető vagy anya akarsz lenni (vagy férfiként: szeretőt vagy anyát akarsz)? Ne hidd, hogy a döntés segítene elvágni a gordiuszi csomót. Minden döntés csak elfojtaná a problémát. A kártya csak azt követeli tőled, hogy ismerd meg szíved megosztottságát, semmi mást!",
- "number": 14,
- "name": "Éva Két Arca",
- "goal": "Végül belátod, mindkét szerepnek megvan a helye a lelkedben, mindkettőnek megvan a saját ideje, és mindkettő nagyon közel áll hozzád - csak egymáshoz nem állnak közel! Elfogadod az egymáshoz viszonyított távolságukat.",
- "keywords": [
- "a szerepek konfliktusa",
- "az érzések ambivalenciája",
- "két lélek egy testben",
- "feleség és szerető"
- ],
- "signs": [
- "cancer",
- "taurus"
- ]
- },
- {
- "road": "Semmi sem segít, bele kell harapnod a savanyú almába, engedelmeskedj, alkalmazkodj életkörülményeidhez, és foglalkozz apró feladataiddal is.",
- "planets": [
- "Merkúr"
- ],
- "problem": "Ez a kártya azt akarja mondani, hogy jelenlegi élethelyzetedben nem tudsz meghajolni, megtagadod az engedelmességet. Másokra hárítod a bűnt, meg akarod tartani az ártatlanságodat, kivetítéseid viszont mint egy rád mutató ujj, végül is visszatérnek hozzád.",
- "number": 6,
- "name": "A Szolgáló",
- "goal": "Tanulási folyamatod eredményeként ebben az esetben nem nagy kincset találsz a szivárvány végén, hanem csendes, fénytelen megnyugvást, olyan megértést, amely által lelkedben újra rend lesz, és elégedetten azt a helyet foglalod el, amely megillet Téged.",
- "keywords": [
- "értelem",
- "alkalmazkodás a szükségszerűséghez",
- "racionalitás",
- "szerénység",
- "lelki irányítás"
- ],
- "signs": [
- "virgo"
- ]
- },
- {
- "road": "Merkúr felajánlja segítségét, hogy problémádat megoldáshoz vezesse. Üzenete így hangzik számodra: először könnyedén, egy lépés távolságból szemléld meg a helyzetedet, azután mondd ki, mi az, ami zavar benne, és próbálj tényszerűen és semlegesen hozzáállni.",
- "planets": [
- "Merkúr"
- ],
- "problem": "Ebben a pillanatban elégedetlen vagy jelenlegi helyzeteddel. Számodra ez túl unalmas, banális és felszínes. Nem akarsz Merkúrod tartalmaival és feladataival azonosulni, negatív érzéseiddel gátolod és száműzöd őt. De érzed szárnyainak és könnyedségének hiányát.",
- "number": 3,
- "name": "A Közvetítő",
- "goal": "Bármennyire nehéznek is tűnik utad, Hermész segítségével a tudattalant össze tudod kötni a tudatossal, hogy azután semleges álláspontból tekinthess önmagadra - talán egy engedékeny és huncut mosollyal.",
- "keywords": [
- "az isteni bárka",
- "intellektus",
- "kapcsolat",
- "figyelő",
- "könnyedség"
- ],
- "signs": [
- "gemini"
- ]
- },
- {
- "road": "Életednek ezen a szakaszán túlságosan a \"mi\"-ben élsz és túl keveset az \"én\"-ben. Most azt a feladatot kaptad, hogy széttárd szárnyaidat és kiépítsd saját világodat. Már eddig is túl sokat áldoztál fel az együttlétetekért, és még mindig csak egy része vagy az egésznek. A másik részedet csak akkor találod meg, ha több szabadságot engedsz meg magadnak.",
- "planets": [
- "Vénusz",
- "Uránusz"
- ],
- "problem": "Nem akarod tudomásul venni, hogy az életedben eddig együtt futó két sínpárt egy váltó kétfelé irányítja, így utatok külön folytatódik tovább. Most mindent megteszel, ami csak hatalmadban áll, hogy vonataitok mégis egy irányba haladjanak, vagy azzal vádolod a másikat, hogy orvul elárult téged. Valójában nem akarod beismerni kapcsolatotok képtelenségét. Mint ahogyan a víz és az olaj csak sok kavargatással és csak időlegesen keverhető össze, úgy próbálod te is \"felkavarni\" a kapcsolatodat, csak hogy együtt maradjatok. Jobb, ha hagyod a dolgokat és nem erőlteted az együtt maradásotokat.",
- "number": 67,
- "name": "Az Elválás",
- "goal": "Megteremtetted saját szabadságodat a kapcsolaton belül és most már bármilyen kapcsolatban tudsz élni. Amikor csak akarod, kiterjesztheted szárnyaidat.",
- "keywords": [
- "felszabadulás",
- "kiugrás egy kapcsolatból",
- "búcsúzás",
- "függetlenség",
- "kapcsolatteremtő képesség hiánya"
- ],
- "signs": [
- "libra",
- "aquarius"
- ]
- },
- {
- "road": "Utadon arra van szükséged, hogy - mint hajdan Perszephoné - érzelmeiddel alászállj az alvilágba. Ott meg fogod érteni, hogy először is teljesen bele kell élned magad érzéseidbe, el kell kötelezned magad mellettük, mielőtt a mélységből újra felemelkedhetnél.",
- "planets": [
- "Hold",
- "Plútó"
- ],
- "problem": "Az alvilág istene szilárdan tart a kezében Téged. Feláldoztad lelked az élet ellenségének, és most másoknál keresel enyhülést. Abban a reményben szívod tele magad energiájukkal, hogy egy másik ember megszabadíthat a sötétségtől. Érzéseket utánzó elképzeléseket hoztál létre, amelyek nagyon eltávolodtak valódi érzelmeidtől. Még hosszú utat kell a fényig bejárnod, mert a mélységeket, az árnyékvilágot kell megtapasztalnod, mielőtt az élethez vezető utat újra megtalálod.",
- "number": 19,
- "name": "Az Elvetélés",
- "goal": "Sok mindent feláldoztál: érzések képeit és elképzeléseit, amelyek mind pótszerek és önbecsapások voltak. Sok mindent a lelked legmélyéből kellett kitépned. A seb még sokáig fájni fog, de most szabadabb és függetlenebb vagy. Mert a feláldozott részek már nem kötnek magukhoz, már nincs hatalmuk fölötted.",
- "keywords": [
- "eladott lélek",
- "feláldozott nőiesség",
- "érzelmekről alkotott elképzelés",
- "lelki függőség",
- "depresszió",
- "képzelt anyaság"
- ],
- "signs": [
- "cancer",
- "scorpio"
- ]
- },
- {
- "road": "Cselekedj okosan, és csak akkor kezdj bele, ha jól átgondoltad a dolgokat! Tervezd meg gondosan a lépéseidet - ne hagyd, hogy érzelmeid elragadjanak! Adj időt magadnak és nézz jól körül. Már most gondolj rá, hogy minden cselekedetednek holnap következményei lesznek, hogy az okot hatás követi, ezért próbáld meg előre meglátni ezt a hatást!",
- "planets": [
- "Merkúr",
- "Merkúr"
- ],
- "problem": "Életedet pillanatnyilag szárazdokkban éled. Elkaptál egy vírust, melynek neve \"értelem\" vagy \"racionalitás\". Az érzések vizét csak könyvekből ismered, és megpróbálod csak a fejedet használni, hogy világodat megértsd. Ez egy ideig menni is fog, de ez alatt az idő alatt nem élsz. Múmiává száradtál és minden szó, amit kiejtesz a szádon, valahogy porosan hangzik.",
- "number": 51,
- "name": "A Stratéga",
- "goal": "Sok minden tisztázódik és rendeződik majd. A legfontosabb, hogy életed folyamát jobban megértsd. Meg fogod érteni az ok és okozat egységét, tehát megérted azt, hogy mely okok idéznek elő egészen biztosan bizonyos hatásokat, és alkalmazkodsz hozzájuk.",
- "keywords": [
- "entellektüel",
- "kontroll",
- "taktikázás",
- "tudomány",
- "a fej által irányított élet",
- "diplomata",
- "okság (az ok és okozat törvénye)"
- ],
- "signs": [
- "gemini",
- "virgo"
- ]
- },
- {
- "road": "Az út abból áll, hogy meg kell tanulnod megérteni magadat a másik tükrében. Tehát kapcsolatba kell lépned vele, fel kell ajánlanod a másiknak a megbékülést (egymás megértését).",
- "planets": [
- "Vénusz"
- ],
- "problem": "Ebben a pillanatban nem vagy kész arra, hogy a másik által nyújtott tükörbe nézz, és azt, amit ott meglátsz, sajátodnak ismerd fel. Ez a kártya arra szeretne emlékeztetni, hogy nem akarod a másik által küldött üzenetet elfogadni, inkább elzárod magad tőle, és azt gondolod, hogy ő a károdat kívánja.",
- "number": 7,
- "name": "A Partner",
- "goal": "Újra megtaláltad magadat a másikban, külső és belső partnereddel újra egyensúlyban, összhangban vagy. A \"symbolon\" (ezen a helyen újra) összezárult. A részek újra kapcsolatban vannak.",
- "keywords": [
- "a másik ember",
- "kapcsolat",
- "kiegyenlítődés",
- "a symbolon",
- "a tükör",
- "kiegészülés",
- "a \"jobbik\" fél"
- ],
- "signs": [
- "libra"
- ]
- },
- {
- "road": "Valahol utad során fogsz kapni egy - kezdetben talán érthetetlennek tűnő - jelet. A komoly megfontolás, melyre szükséged van ahhoz, hogy megfejtsd a rejtvényt, elvezet majd (szinte észrevétlenül) a valódi spirituális éberséghez. Ez hasznos lépés lehet a jövőben lelked számára. Problémáid megoldását már nem a külvilágban keresed, hanem megtanulsz megbízni intuícióidban, vagyis belső papnődben.",
- "planets": [
- "Jupiter",
- "Neptunusz"
- ],
- "problem": "Olyan konkrét tanácsba vagy jóslatba kapaszkodsz, amit valaha valakitől kaptál. Most ennek csapdájában vagy. Saját intuíciód forrása kiapadt, mert lelked vizeit egy idegen folyómederbe terelted. Így sohasem fogod megfejteni a rejtvényt. Minden ismeretlen (látszólagos) válasz új kérdéseket indít el benned, amelyek azután megint összezavarnak. Elveszel egy csalfa világban, amely spirituális képességekkel henceg előtted, és amely éppannyira eltávolít tőle, mint ahogyan te távolodsz fokozatosan saját igazságodtól.",
- "number": 75,
- "name": "Püthia",
- "goal": "Létezik egy ősi ezoterikus figyelmeztetés, amely így hangzik: \"Megkérdezted, mit jelent - pedig jelentését nem lehet elmondani!\" Nem lehet kifejezni szavakkal, de te már tudod - képeken keresztül. Megtanulsz megbízni intuícióidban, éppúgy ráhagyatkozni, mint ahogyan most intellektusodra hagyatkozol. Az intuíció a megértés másik, női oldala. Csak akkor válunk tökéletes teremtményekké, ha megtanultunk átmenni a \"bölcstől a szenthez\" vezető hídon.",
- "keywords": [
- "intuíció",
- "a jósda papnője",
- "a jövendőmondó",
- "az asztrológia (a horoszkóp értelmezése)"
- ],
- "signs": [
- "sagittarius",
- "pisces"
- ]
- },
- {
- "road": "A bűnösség elkerülhetetlen. Akár az A megoldást választod utadon, akár a B-t (bármi legyen is A és B), valakit szükségszerűen megbántasz. Nincs lehetőség a bocsánatkérésekre és nincs helye az óvatos lépéseknek. Csupán egyetlen dolog segíthet: ismerd be a bűnödet!",
- "planets": [
- "Mars",
- "Merkúr"
- ],
- "problem": "A benned levő szerepszemélyiség harcol az életéért, harcol az ártatlanságáért. Kétségbeesetten keresi azokat az okokat, melyek miatt így kellett cselekednie. Még nem vagy képes rá, hogy beismerd a tettet, még nem tudod kimondani a feloldó szavakat: \"Én követtem el!\" A kötelék, mely összeköti a tettest az áldozattal, szíved köré tekeredik, elrabolja lélegzetedet és megfoszt szabadságodtól.",
- "number": 36,
- "name": "A Bűnösség",
- "goal": "Miért foglalkozol egyáltalán azzal, hogy kérdezel? Az ember sorsa úgyis meg van pecsételve. Ezek a delphoi jósda szavai és az utad végén álló templomod falán is ezeket fogod találni. Elfogadod, hogy a bűnösség és ártatlanság csak a paradicsomban létezett a bűnbeesés előtt, a Jó és a Rossz tudása előtt, amikor a bűnös és az áldozat még egyek voltak.",
- "keywords": [
- "nem szándékos cselekedet",
- "jóhiszemű cselekvés",
- "projekció",
- ""
- ],
- "signs": [
- "aries",
- "virgo"
- ]
- },
- {
- "road": "Fel kell adnod a biztonságodat és esetlegesen barátaidat is (vagy számodra fontos emberek csoportját). Néhány élethelyzeted és kapcsolatod túlságosan elavult, már nem tudsz tanulni belőlük semmit. Nincs mit tenni, tovább kell vándorolnod, és \"új partok\" felé evezni.",
- "planets": [
- "Vénusz",
- "Uránusz"
- ],
- "problem": "Szeretnél környezeted védőfalai között maradni, de életed egy szakaszában túlságosan \"elnehezültél\". Fennáll annak a veszélye, hogy gyökereid olyan mélyre nőnek, hogy soha nem lesz újra erőd ahhoz, hogy elszabadulj. Ezért rendelte el a sors számodra a száműzetést. Ez segíti majd a szabadság felé vezető átkelésedet, és ezáltal további fejlődésedet.",
- "number": 49,
- "name": "A Búcsú",
- "goal": "A számtalan búcsú révén most már tudod, hogy a biztonság nem az anyagi formákban található meg. Elfogadod a szabadság és a valakihez tartozás váltakozását, az apály és a dagály váltakozó ritmusát, a \"kötés\" és \"oldás\" kettősét. Mindkettőnek eljön az ideje és megvan a maga értéke. Csak az találja meg a békéjét, aki együtt tud változni az időkkel és felvállalja sorsát.",
- "keywords": [
- "száműzetés a szülőföldről",
- "számkivetettség",
- "hirtelen materiális változás",
- "a kívülálló",
- "helyváltoztatás",
- "egy barátság vége (egy barát elárulása)"
- ],
- "signs": [
- "taurus",
- "aquarius"
- ]
- },
- {
- "road": "Egyszer már venned kell a bátorságot ahhoz, hogy kiállj a véleményed mellett, még akkor is, ha ez azt jelenti, hogy küzdened kell érte. Nem elegendő a puszta belátás, a probléma megértése, ha nem vagy kész arra, hogy azt tettekkel is valóra váltsd. Természetesen nincs értelme küzdeni valami ellen - csak valamiért.",
- "planets": [
- "Mars",
- "Jupiter"
- ],
- "problem": "Jobb belátásod ellenére cselekszel, elnyomod magadban már kialakult véleményedet, és kardodat a (vélt) másként gondolkodók ellen fordítod. Helyes, valós véleményednek akarsz érvényt szerezni (legalább is így gondolod) és nem veszed észre, hogy ez a vállalkozásod csak leplezi azt a szándékodat, hogy harcolhass és rombolhass. Agressziódat szép szavakba burkolod, melyeket ugyanakkor nem fordítasz magad ellen.",
- "number": 39,
- "name": "A Keresztes Lovag",
- "goal": "Cselekedeteidet a józan belátás és a megértés fogja irányítani. Már nem elvakult agressziód diktálja számodra, mit tegyél, hanem a meggyőződés ereje. Már tudod, hogy túlságosan könnyű önmagad ellen küzdeni, saját tükörképeddel viaskodni.",
- "keywords": [
- "vallási vita",
- "egy misszió agresszív védelme",
- "harc a szakadárok ellen",
- ""
- ],
- "signs": [
- "aries",
- "sagittarius"
- ]
- },
- {
- "road": "Keresd meg saját bajkeverő törpédet! Fedezd fel azokat a titkokat, melyeket ez az összetöpörödött emberke magában (így benned is) hordoz, keresd meg, mi motiválja. Egyik célja egészen bizonyosan az, hogy egy benned rejlő elöregedett dologtól megszabadítson. Menj be tehát a sötét erdőbe és tudd meg a nevét!",
- "planets": [
- "Mars",
- "Uránusz"
- ],
- "problem": "Egyik belső szerepszemélyiséged az idegeiden - vagy másén - táncol, anélkül, hogy ezt észrevennéd. Hatalmas széthúzó ereje van, és a hátad mögött terveket szövő árulóként, bajkeverőként és az idegekre menő belső erőként furakodik közéd és a külvilágod közé. Lehetséges, hogy ezt a szerepszemélyiséget külső személyként éled meg, de csak azért ölt tested másban, mivel magadban nem veszed őt tudomásul.",
- "number": 41,
- "name": "A Bajkeverő",
- "goal": "Utad végén ezt a kis szerepszemélyiséget szövetségeseddé tetted. Már nem függsz mások véleményétől. Most már - vele együtt - szabadon járhatod az utadat, már nem érzed kötelességednek, hogy mások elvárásainak mindenáron megfelelj, hogy szeretetüket mindenáron megszerezd. Független és szabad lettél.",
- "keywords": [
- "viszályt szító",
- "gonosz manó",
- "idegesítő",
- "bosszantó",
- "elűző",
- "vásott ördögöcske",
- "furfangos",
- "cselszövő",
- "szövetséges"
- ],
- "signs": [
- "aries",
- "aquarius"
- ]
- },
- {
- "road": "Nem elég csak beszélni a hibákról: úgy kell róla beszélni, mint sajátjaidról. Ez az, amire felkér ez az út. Minden pontról számot kell adnod, ahol megbotlottál, ahol vakmerőségből letértél utadról. Ezzel azt kockáztatod, hogy foltot ejtesz hírneveden.",
- "planets": [
- "Jupiter",
- "Szaturnusz"
- ],
- "problem": "Lelkedet egy vétek terhe nyomja, amit a külvilág tudomására kell hoznod. Be kellene vallanod. Azt hiszed, nagyságod jó része eltűnik ezáltal, és teljes mértékben igazad is van. Más is észre fogja venni, hogy még távolról sem tartasz azon a fokon, ahogy azt magadról szívesen hitted. Így megtorpansz gyónásod aktusa előtt, és nem engeded át magad a sors akaratának. Ez öreggé és keménnyé tehet!",
- "number": 73,
- "name": "A Gyónás",
- "goal": "Most már tudod, hogy hol követtél el hibát, és hogy ez azért történhetett meg, hogy azután bevallhasd. Minden beismerés gyengíti egódat, és növeli Isten dicsőségét. A Múzsák segítenek abban, hogy csodálhasd és dicsérhesd a teremtés rendjét, és ezáltal józan kereteket szabj szubjektivitásodnak.",
- "keywords": [
- "beismerés",
- "megtisztulás a szubjektivitástól",
- "a terapeuta (a pap) felelőssége",
- "betekintés a sorsba",
- "híd a szubjektivitás és objektivitás között"
- ],
- "signs": [
- "sagittarius",
- "capricorn"
- ]
- },
- {
- "road": "Itt az ideje, hogy házat építs vétkeidnek és mindennek, amelynek megszerzésére vétkeid késztettek. Cselekedeteid csak egy helyen találnak otthonra: a tudatodban. Csak miután minden tanulságot levontál és érthetővé vált benned, hogy mit jelent ez lelked számára, akkor találja meg lelkiismereted fokozatosan békéjét.",
- "planets": [
- "Merkúr",
- "Uránusz"
- ],
- "problem": "Egy olyan bűn terheli lelkedet, amely most elnyomott félelem formájában mutatkozik meg, és ami elől legszívesebben elfutnál. Azt gondolod, hogyha nem foglalkozol a dologgal, akkor nem is fogja senki észrevenni. De a \"vétked\" már régóta alakot öltött és most nyugtalanságot kelt benned . Úgy érzed, üldöznek, és ez valóban így is van. De az ellenség nem kívülről jön, mint ahogy kezdetben hiszed, hanem saját bensődből. Szepes Mária mondatai igazat beszélnek: \"A karma vérszomjas kutyái csakugyan a nyomunkban vannak. Ugyanakkor éppen ahhoz a problémához űznek minket, amelyik elől menekülni akarunk. És bármennyire meneküljünk is tőle, egyszer majd lábunk elé fogják helyezni ezt a problémát.\"",
- "number": 62,
- "name": "A Fúriák",
- "goal": "Már nem menekülsz többé a fúriáktól, hanem szembenézel velük, mivel mostanra rájöttél, hogy nem tudod elkerülni a \"büntetésedet\". A fúriák csak akkor fognak átváltozni, ha megértetted, mit akarnak közölni veled. Akkor majd megenyhülnek, már nem kell haragosnak lenniük és jóindulatú Eumeridákká változnak.",
- "keywords": [
- "a bosszú szelleme",
- "paranoia (üldözési mánia)",
- "őrület",
- "alkalmazkodás képtelenség",
- "fúriáktól üldözve",
- "erős nyugtalanság"
- ],
- "signs": [
- "virgo",
- "aquarius"
- ]
- },
- {
- "road": "Utad során el kell fogadnod, hogy lehetetlen választanod felelősség és szabadság között. Törődj bele abba a gondolatba, hogy mindkettő fontos szerepet játszik az életedben, és ne a külvilágban, hanem magadban találj rá igazi értelmükre.",
- "planets": [
- "Szaturnusz",
- "Uránusz"
- ],
- "problem": "Az a problémád, hogy mélyen legbelül fogoly vagy, és az a feszültség, amit ez a helyzet okoz, csak tovább növekszik. Minél jobban rázod börtönöd rácsait és minél inkább szabadulni akarsz, annál nagyobb lesz benned a nyomás. Bár gyakran úgy néz ki, hogy mások felelősek ezért az elnyomásért (szó szerint értsd itt ezt), a valóságban ők csak egy magasabb hatalom segédeszközei. Nem tudsz mást tenni, mint hogy elengeded a rácsokat.",
- "number": 76,
- "name": "A Rabság",
- "goal": "Már láthatod - te vagy az elhajított kő. Csak akkor leszel a pályádon szabad, miután megismered röppályádat - amelynek egyértelmű az útvonala, és amin már nem tudsz változtatni.",
- "keywords": [
- "túlnyomás",
- "elhajított kő",
- "túlfeszítés",
- "küszöbön álló robbanás",
- "elnyomás"
- ],
- "signs": [
- "capricorn",
- "aquarius"
- ]
- },
- {
- "road": "Nem juthatsz előre a megszokott úton és módon. A körülmények eredeti és spontán cselekvést követelnek meg tőled. Csak miután odaértél fejlődésed megfelelő helyére, akkor fogsz egészen hirtelen és előre nem láthatóan reagálni.",
- "planets": [
- "Merkúr",
- "Uránusz"
- ],
- "problem": "Valamit nem látsz meg, járni szeretnél, még mielőtt mászni tudnál. Megzavartad a dolgok természetes folyását, kapkodó és meggondolatlan cselekedeteiddel most a szakadék szélére kerültél. Az első és a harmadik lépésed között hiányzik utad egy darabja. A kisujjadból akarod kirázni az eredményt anélkül, hogy a nehéz lépéseket megtennéd érte. Most a szó szoros értelmében a puszta levegőben lógsz.",
- "number": 56,
- "name": "Az Álmodozó",
- "goal": "Kitörtél hétköznapi életedből, kiugrottál műveleteid üresjáratából. Fel fogod ismerni az Ég küldte jeleket. Többet tanulhatsz a pillangóktól, mint amit a tiszta \"logika\" valaha is taníthat neked.",
- "keywords": [
- "álomtáncot járó",
- "kinyúlás a csillagok felé",
- "megbotlás",
- "freudi elszólás",
- "meggondolatlan",
- "szabadgondolkodó",
- "jelentéktelen ok - jelentős következmény"
- ],
- "signs": [
- "gemini",
- "aquarius"
- ]
- },
- {
- "road": "Az a feladatod, hogy kapcsolatodat (vagy barátságodat) fontosabbá és értékesebbé tedd. \"Be kell ruháznod\" ebbe a kapcsolatba, el kell fogadnod a szabadság elvesztésének lehetőségét, különben biztos alapok és termékeny talaj nélkül marad. Csak egy kapcsolaton belül van rá lehetőséged, hogy értékproblémád és féltékenységed okait megtaláld.",
- "planets": [
- "Vénusz",
- "Vénusz"
- ],
- "problem": "A \"megvásárolni\" és \"megvásárolva lenni\" - keserű aspektusai kapcsolatodnak. Az ilyenfajta partnerkapcsolat birtoklásra és féltékenykedésre van ítélve. Nem vagy szabad, nem számít, hogy \"tulajdonos\" vagy \"tulajdon\" vagy-e. Egy aranykalitka börtönében élsz, és idővel egyre lustább és mozdíthatatlanabb leszel. Drágán fizettél \"biztonságodért\".",
- "number": 45,
- "name": "Az Aranykalitka",
- "goal": "Utad elvezet ahhoz a felismeréshez, hogy a kalitkád ajtaja sohasem volt bezárva. Akik összetartoznak és melegséget árasztanak egymás felé, nem kell, hogy elszigeteljék magukat és hogy állandóan biztosítsák egymást szerelmükről. A hűség csak addig része egy kapcsolatnak, amíg lehetséges a kölcsönös megtermékenyítés és növekedés. Ennek is megvan az ára, hiszen ez minden esetben a szabadság elvesztését jelenti.",
- "keywords": [
- "kapcsolat mint börtön",
- "a partner mint tulajdon",
- "féltékenység",
- "a partner megvétele",
- "hűség"
- ],
- "signs": [
- "taurus",
- "libra"
- ]
- },
- {
- "road": "A megkövülésed belső termein átvezető utat nem spórolhatod meg. Az ösvény a felejtés barlangján vezet keresztül, hogy emlékezz. Bármit is látsz majd ott, emlékezz Vergilius szavaira, amint keresztülvezette Dantét az alvilágon: \" Nézd meg és menj tovább! \" Hozzád tartozóként ismerd fel a megmerevedett alakokat és oldozd fel őket a következő szavakkal: \" Igen, ez én vagyok! \" De ne engedd, hogy sötétségükkel rád telepedjenek, hogy azután velük együtt merülj le.",
- "planets": [
- "Plútó",
- "Szaturnusz"
- ],
- "problem": "Életednek egy fontos része pillanatnyilag megkövült állapotában van. Nem tudsz mást tenni, mint hogy tudomásul veszed ezt a folyamatot, és azonosulsz azzal a belső szerepszemélyiséggel, aki felelős érte. Elvezetett téged idáig, hogy itt a felejtés helyszínén kipihend magad. Te magad hívtad életre őt, azért, hogy megkíméld magad az igazságtól. Van valami, amit nem tudsz elfogadni, ezért vállalnod kell a sötétséget és ürességet.",
- "number": 70,
- "name": "A Depresszió",
- "goal": "Nehéz idők vannak mögötted, de most már látod a fényt az alagút végén. A régi dolgok átalakultak egy hosszú, elnyújtott életfolyamat során. Most az élet egy új formája vár rád, ami látszólag a semmiből nő ki. Az előbb még sötét volt és neked fogalmad sem volt róla, hogy lesz ezután - és a Nap hirtelen megint megmelegíti szívedet.",
- "keywords": [
- "csapdában lenni",
- "megkövesedés",
- "a végzet hatalma",
- "a felejtés kősziklája",
- ""
- ],
- "signs": [
- "scorpio",
- "capricorn"
- ]
- },
- {
- "road": "Utadon át kell állítanod a fények erősségét. Nem a szubjektivitás a problémád, hanem az objektivitás, vagyis végső soron a Paradicsomból való kiűzetés. Vedd a bátorságot magadnak, és ne is akarj válaszolni többé a kérdésre, csak tedd fel még intenzívebben. Ez majd mindig segít talpra állnod, ha orra buksz.",
- "planets": [
- "Uránusz",
- "Neptunusz"
- ],
- "problem": "Nem a megfelelő kérdést hajszolod, és ezért gyakran orra buksz. A szubjektivitás színpompás fényébe nézel, a kérdezés által egészen meghatározott - és kellemes - választ akarsz kierőszakolni. Így csakis félrevezetheted magad, mivel kérdéseddel magadat vezeted orrodnál fogva. Tisztázd magadban, hogy olyan kérdést kell találnod, amelyik már nem téged helyez középpontba. Az, hogy orra buktál, csakis ezért volt szükséges.",
- "number": 78,
- "name": "A Grál Kérdése",
- "goal": "Tudod, hogy olyan helyre érkeztél, ahol már nincsenek válaszok, és ahol ellazulhatsz. Fentről vezetnek: bízol az (objektív) magasabb hatalmakban, és újra megtanulod (egyéves gyermekként már megtanultad), hogy néha el is kell esni, ha meg akarsz tanulni járni.",
- "keywords": [
- "az üdvözülés keresése",
- "örök keresés",
- "elveszett tudás",
- "objektív tudattalan",
- "az archetípus mélységei",
- "eredendő ok",
- "isten keresése"
- ],
- "signs": [
- "aquarius",
- "pisces"
- ]
- },
- {
- "road": "A kapcsolatotokban benne rejlik a kényszer is, és ez alkalmazkodást kíván meg tőled. Nagyon fontos, hogy a kapcsolat virágzása idején átláss az illúzióidon: tehát azon, hogy ez egy olyan kapcsolat, ahol a nászútnak soha nincs vége, és tanulj meg újra értelemet adni hétköznapjaidnak.",
- "planets": [
- "Merkúr",
- "Vénusz"
- ],
- "problem": "Egyik kapcsolatod kifakult, oda a sava-borsa. Egyikőtök sem tesz semmit azért, hogy újra színessé tegye. Ez jelenthet szeretők közötti kapcsolatot, házasságot vagy akár munkahelyi kapcsolatot. Ami valaha olyan ígéretes volt, az ma már csak alkalmazkodásból, az önmagát újrateremtő szükségből és kötelezettségekből áll. Az az érzésed, hogy az egész olyan fakó.",
- "number": 58,
- "name": "A Kapcsolat Hétköznapjai",
- "goal": "A játé k végén megértetted, hogy a \"mi\" összetartozása mennyivel fontosabb, mint az egó \"énje\". A következő lépés az, hogy a mindennapokat \"gyakorlásként\" fogd fel - tehát nem kihívásként, hanem befogadásként.",
- "keywords": [
- "az izgalom hiánya",
- "fénytelenség",
- "kapcsolatbeli kötelezettségek",
- "egyformaság",
- "erózió",
- "ösztönzés hiánya"
- ],
- "signs": [
- "virgo",
- "libra"
- ]
- },
- {
- "road": "Utad egy fájdalmas tanulási folyamaton vezet keresztül, amely azt kívánja megtanítani neked, hogy \"ne csinálj magadnak faragott képet\". Minden kép, legyen bármilyen balzsam egód számára, lelkednek méreg. Itt az ideje, hogy belásd, bálványt imádtál. Ez a folyamat kínos, és sokáig fogja még lelkedet nyomni - de ezt a fájdalmat nem spórolhatod meg magadnak. Itt az ideje, hogy foglalkozz az árnyékoddal, és eltávolítsd a képzetek, az ideák maszkját.",
- "planets": [
- "Plútó",
- "Neptunusz"
- ],
- "problem": "Pillanatnyilag becsap téged a sötétség angyala. Természetesen gyönyörű fénykabátba öltözött, és azt hirdeti, hogy milyen nemes, istenfélő a műved, a gurud vagy éppen az új kapcsolatod. De ez csak mézesmadzag, amit elhúz az orrod előtt, hogy az általa kijelölt irányba haladj, és ne vedd észre, mennyire ki vagy szolgáltatva neki azáltal, hogy jót akarsz tenni.",
- "number": 72,
- "name": "Az (Ál)Szent Ragyogás",
- "goal": "Meg fogod érteni, hogy nincs fény árnyék nélkül, és hogy sötétség sincs az árnyéka, a fény nélkül. Már nem kell egyetlen dolog mellett kiállnod, mivel látod az egyet a sokban, és a sokat az egyben. Ezzel természetesen nem válsz szentté (ez úgyis csak újabb mézesmadzag lenne), de talán egészségesebb lettél.",
- "keywords": [
- "jó és a rossz (polaritás)",
- "elképzelés a mennyországról",
- "álszentség",
- "bukott angyal",
- "pártatlanság"
- ],
- "signs": [
- "scorpio",
- "pisces"
- ]
- },
- {
- "road": "Add fel! A döntés nem rajtad áll. Nem tudod kirántani a kardot a hüvelyből, azon egyszerű oknál fogva, hogy ez nem is a te kardod. Úgyhogy hagyd abba a hiábavaló próbálkozást. Csak elpazarolod az energiáidat.",
- "planets": [
- "Mars",
- "Szaturnusz"
- ],
- "problem": "Pillanatnyilag fejjel akarsz nekirohanni a falnak, mert nem veszed tudomásul, hogy bármekkora legyen is az energiád, nem tudsz vele célt érni. Az ajtó, melyet ki akarsz nyitni, nem létezik a valóságban, csupán oda van festve. A sors ellen",
- "number": 40,
- "name": "A Meghiúsulás",
- "goal": "Megtanulod energiáidat harmóniába hozni a sors követeléseivel. Ez azt jelenti, hogy szubjektív vágyad utat enged egy magasabb rendű célnak, és energiáidnak újra szabad folyást engedhetsz - ezúttal egy új irányba.",
- "keywords": [
- "hiábavaló fáradozás",
- "tiltás",
- "a végzet hatalma",
- "bezártság",
- "zabla",
- ""
- ],
- "signs": [
- "aries",
- "capricorn"
- ]
- },
- {
- "road": "Ez a kártya egyértelműen azt üzeni: járd az érzelmek útját. Ne hallgass az eszedre, hanem cselekedj érzéseid szerint. Keresd meg a benned élő gyermeket, hagyd, hogy kifejezze önmagát, hagyd élni.",
- "planets": [
- "Hold"
- ],
- "problem": "A benned élő gyermek által kimondott \"nem\", amellyel bensődet is elzárod, kiszárítja érzelmeidet és lelked tavát. Félsz attól, hogy megtapasztald magadat, félsz saját női oldaladtól, félsz az ezek következtében fellépő tehetetlenség érzésétől.",
- "number": 4,
- "name": "Az Anya",
- "goal": "Az út végén átöleled a benned élő gyermeket, egyetértesz vele. Megteremtesz magadnak egy darabka otthont, hazaérkezel önmagadhoz, érzelmeidhez, női oldaladhoz. Védettségre találsz önmagadban!",
- "keywords": [
- "nőiesség",
- "család",
- "kisgyermek",
- "érzelmek",
- "odaadás",
- "elfogadás",
- "a lélek története"
- ],
- "signs": [
- "cancer"
- ]
- },
- {
- "road": "A KALODA szégyenét utadon nem kerülheted ki. Tetteidet nyilvánosságra fogják hozni, és jobban tennéd, ha erre a nyilvánosságra felkészülnél, sőt, együttműködnél vele akkor is, ha ez nagyon nehezedre esik, egyébként teljesen felkészületlenül fog találni. És az sohasem kellemes.",
- "planets": [
- "Mars",
- "Merkúr"
- ],
- "problem": "Lehet, hogy te terjesztesz egy rosszindulatú rágalmat, vagy éppen te magad vagy a szavak általi gyilkosság áldozata. A kettő közül egyik sem nemesebb a másiknál - mindegy, hogy tettes vagy áldozat vagy, éppen a pletykálkodás bonyodalmaiba keveredtél, és még nem értetted meg ennek az értelmét. Természetesen áldozatként tisztábbnak tűnsz magad előtt. De sem így sem úgy nem vagy abban az állapotban, hogy belásd, mindennek köze van hozzád. Ugyanis mindkét esetben azt hiszed, hogy azt, amit terjesztenek, vagy terjesztesz, te sohasem tennéd meg.",
- "number": 35,
- "name": "A Kaloda",
- "goal": "Az, amit rejtve tartottál, azért jutott napvilágra, hogy végre vállalni tudd. Ha valaki KALODÁBA került, ez azt jelenti, hogy rossz tulajdonságait, különösen agresszióit, el kell hogy ismerje. Tetteit most kívülről is látni lehet.",
- "keywords": [
- "pletyka",
- "rosszindulatú kibeszélés",
- "rombolás szavak által",
- "gáncsoskodás",
- ""
- ],
- "signs": [
- "aries",
- "gemini"
- ]
- },
- {
- "road": "Ne fáradozz hiába, ebben a pillanatban a Senki Földjén vagy. Nem csónakod kormányosa vagy most, hogy irányítani tudnád azt, hanem egy tutajon ülsz, és a part messze van. Tehát ülj nyugodtan, és egyszerűen hagyd magad sodortatni. Itt azt kell megtanulnod, hogy léteznek olyan hatalmak, amelyek sorsodat irányítják. Ne avatkozz be, ez csak összezavarna.",
- "planets": [
- "Nap",
- "Neptunusz"
- ],
- "problem": "Ebben a pillanatban el kell tűnnöd a színpadról, mert már nincsen tennivalód. Világod elnéptelenedik, színtelenné és szürkévé válik, és senki sincsen, akit ezért felelőssé tehetnél. Még saját magadat sem. Ne keresd ennek az okait - egyszerűen ez most így van! Ebben a pillanatban semmilyen szerepet sem játszol (a szó megkettőzött értelmében).",
- "number": 33,
- "name": "A Visszavonulás",
- "goal": "Eredményképpen megtanulod, hogy a megoldást mindig csak a bensődben lehet megtalálni, nem a külvilágban, cselekvés által. Most azt is megérted, mit jelent, hogy a szemedet becsukod a külvilág számára, és befelé figyelve nyitod fel. Nagy lépést teszel előre fejlődésedben amely egódat eltörpíti, létedet azonban kiszélesíti.",
- "keywords": [
- "az egó elvesztése",
- "szemlélődés",
- "jelentéktelenség",
- "a világ hatásának megszüntetése",
- ""
- ],
- "signs": [
- "leo",
- "pisces"
- ]
- },
- {
- "road": "Problémáid hegye magas, a megoldások útja meredek. Erőbevetést és fáradozást követel meg tőled. Ne várj kívülről jövő segítséget. Egyedül te tudod, és egyedül neked kell ezt a munkát elvégezni. Készülj fel egy nagyon hosszadalmas folyamatra, amelyen ellenállással kell számolnod.",
- "planets": [
- "Nap",
- "Szaturnusz"
- ],
- "problem": "Egy kő súlya nyomja lelkedet, lelkiismeretedet. Még nem fogadtad el, hogy hosszadalmas, fáradságos úton el kell azt távolítanod onnan. A felelősség egyedül téged terhel.",
- "number": 31,
- "name": "A Teher",
- "goal": "A hegy tetejére érkezve visszanyerted az áttekintést és szellemed világosságát. A törvényt és a lelkiismeretet életed mércéjévé tetted.",
- "keywords": [
- "vesződség",
- "lelkiismeret",
- "a sors (el)viselése",
- "etika",
- "bűntudat",
- "felelősség"
- ],
- "signs": [
- "leo",
- "capricorn"
- ]
- },
- {
- "road": "Akkor emelkedhetsz fel újra a fénybe, ha az alvilág legmélyére leereszkedtél, ha azon keresztülhatoltál. Itt lent nem válhatsz sem jobbá, sem mássá. (Ne akarj jobbá válni - ez az egyik kedvenc csábítása!) Csak Vergilius szava segíthet tovább: \"Nézd meg és menj tovább!\"",
- "planets": [
- "Plútó"
- ],
- "problem": "Egy hamis elképzelésbe lovalltad bele magad, és most hiszel is benne. Ezáltal éppen egy nagyon életteli részedet áldozod fel, eladod lelked egy részét abban a reményben, hogy valami jobbat kaphatsz érte. Így azonban olyan erők lesznek úrrá rajtad, amelyek az alvilágból származnak. Éppen az \"ördög konyhájában\" vagy. Tisztázd, milyen hamis elképzelés tart ebben a pillanatban a karmaiban! Többet nem kell tenned - de kevesebbet sem!",
- "number": 8,
- "name": "A Csábító",
- "goal": "Átalakuláson fogsz keresztülmenni. A régi képeknek el kell enyészniük, ahogyan Mózes csapásaira az aranyborjú is leomlott. Végül a hamis elképzelések (amelyek valójában sohasem léteztek) úgy oszlanak el, mint köd a napon.",
- "keywords": [
- "az ördög",
- "elképzelés",
- "ötlet",
- "öngyilkosság",
- "elkötelezettség",
- "ragaszkodás",
- "fanatizmus",
- "alvilág"
- ],
- "signs": [
- "scorpio"
- ]
- },
- {
- "road": "Ebben a folyamatban meg kell tanulnod lemondani a vetélkedésről és a harcról. A te feladatod az, hogy teljesen egyedül találj rá láthatatlan utadra, anélkül, hogy mások megerősítését keresnéd.",
- "planets": [
- "Mars",
- "Neptunusz"
- ],
- "problem": "Nem tudod elfogadni, hogy pillanatnyilag nincs elegendő energiád ahhoz, hogy szembeszállj a világgal. Pillanatnyilag te vagy a vesztes. Valószínűleg fáradt és erőtlen tested is azt tükrözi, hogy nincs meg benned az ösztönző erő. Úgy véled, az a megfelelő kiút, ha álmaidban és fantáziádban erős nyertesnek képzeled el magad. De ez az álmod csupán illúzió.",
- "number": 42,
- "name": "A Szent Őrült",
- "goal": "Megtanultad tisztelni mindkét világot. Már nem fárasztod magad azzal, hogy szélmalomharcot vívj, sem azzal, hogy fellegvárakat építs, melyek összeomlásra vannak ítélve. Egyik lábaddal az \"itt és most\"-ban állsz, a másikkal az időtlenség világában, és megértetted, hogy nincs miért megküzdeni.",
- "keywords": [
- "szélmalomharc",
- "\"vesztes\"",
- "világ lustája",
- "gyanútlanság",
- "alvó katona",
- "enerváltság",
- "hősi álmok",
- "Parszifál"
- ],
- "signs": [
- "aries",
- "pisces"
- ]
- },
- {
- "road": "Utad során egy bizonyos ideig szellemileg el kell kötelezned magad, tehát egy elméleti fogalom (pl. megvilágosodás) vagy egy szellemi vezető (guru) irányítása alá kell állnod, és nincs szabad akaratod. Ahhoz, hogy egyáltalán beletekinthess az egészbe, szükségesek számodra ezek a kötöttségek, enélkül nem tudnád értékelni az egészet. Azonban azt is fel kell ismerned, hogy (egy bizonyos idő után) ez a szellemi képzet túlságosan megköt, és te belemerevedhetsz.",
- "planets": [
- "Plútó",
- "Jupiter"
- ],
- "problem": "Elvesztél egy bizonyos hipotézisben, és most úgy véled, ráleltél az igazságra. Pedig (olyan észrevétlenül, hogy - mentségedre szólva - észre se vetted) egy hajszálfinom, igazságról való képzet illúziója téveszt meg. Nem mintha az alapötlet rossz lenne! Amikor először érintett meg, még hibátlan volt, de most már akadályoz a továbbhaladásban, továbbfejlődésben. Szellemi csapdába kerültél.",
- "number": 69,
- "name": "A Fekete Mise",
- "goal": "Megértetted, hogy egy (szellemileg) halott képzethez ragaszkodtál. Ennek a belátása segít abban, hogy véget vess ennek a köteléknek. Semmi mást nem kell tenned, mint hogy beismerd, megrekedtél utadon. Ha ezt belátod, az átok magától eltűnik.",
- "keywords": [
- "bálványimádás",
- "vallási és ezoterikus dogmák",
- "megrendíthetetlen vélemény",
- "pozitív gondolkodás",
- "feltűnésmentes fanatikus",
- "teljes meggyőződés"
- ],
- "signs": [
- "scorpio",
- "sagittarius"
- ]
- },
- {
- "road": "A problémán átvezető utadon a terápia egy formáját kell végigcsinálnod. Nincs feltétlenül szükség világi terapeutára - de azért segítséget jelentene. A terápia azt jelenti: merülj a mélybe, és hozd fel magaddal a lelkedről szóló igazságot.",
- "planets": [
- "Hold",
- "Jupiter"
- ],
- "problem": "Ebben a pillanatban Léta vize folyik lelkeden keresztül, és nincs lehetőséged az emlékezésre. Tagadod, hogy egy terapeuta él benned, mert a felejtés hatalmában vagy. Igen, még azt sem hiszed el, hogy egyáltalán van valami, amire emlékezned kellene. Homály vesz körül. MNEMOSZÜNÉ mégis el akarja érni célját, közölni akarja veled, hogy problémádat csak abban az esetben tudod megoldani, ha emlékezni fogsz az emlékezésre.",
- "number": 20,
- "name": "Mnemoszüné",
- "goal": "Bensődet illetően fontos felismerés birtokába kerültél utad végén. A következő történt: lemerültél a mélybe és emlékeztél.",
- "keywords": [
- "emlékezés",
- "terápia",
- "léleklátás",
- "személyes igazság",
- "múzsák"
- ],
- "signs": [
- "cancer",
- "sagittarius"
- ]
- },
- {
- "road": "Évek vagy évtizedek óta visszafojtott düh akar most kitörni belőled. Fájdalommal kell most legbelső érzéseidet megszülnöd. Energiáid csak akkor áramolhatnak benned újra, ha a felgyülemlett mérget kiengeded és kiéled. Keress valamilyen (esetleg terápiás) módszert, amelynek segítségével dühödet akadálytalanul kiélheted anélkül, hogy ártanál vele valakinek.",
- "planets": [
- "Hold",
- "Mars"
- ],
- "problem": "\"Fáj a hasad\" (akár átvitt értelemben), mert egy dühöngő kis GYERMEK tombol benned, ökleivel lelked legbelsejében dobol, és ki akar jönni. Az egész világot \"gonosznak\" tartod, és úgy tűnik, összeesküdtek ellened. Fogadd el, hogy ebben a pillanatban kis GYERMEK vagy, az észtől és a felnőtt világtól messzire eltávolodtál. Azok az érzések, amelyeket ebben a pillanatban érzel, gyermekkorod lelkiállapotaira való visszaemlékezések. Azt akarják, hogy meghallgasd őket, vagyis ki akarnak szabadulni.",
- "number": 13,
- "name": "A Dac",
- "goal": "Csak ha elég ideig voltál GYERMEK, és minden dacos, dühös és mérges indulatot kiéltél magadból, akkor köthetsz békét ezzel a kis \"kínzószellemmel\". Karjaidba fogod venni, és ellenállása egy napon - ahogyan a kisgyermekeknél ez lenni szokott - mély sóhajjal és \"édes fáradtsággal\" fog elenyészni.",
- "keywords": [
- "romboló gyermek",
- "harag",
- "Rontó Pál",
- "düh",
- "anya iránti gyűlölet",
- "a nőiesség elutasítása"
- ],
- "signs": [
- "cancer",
- "aries"
- ]
- },
- {
- "road": "A problémán átvezető utadon arra van szükség, hogy megtanuld az élet komolyságát. Ez már nem játék, ezúttal komolyan kell problémádhoz hozzáállnod. Ne okolj másokat saját problémáidért, és ne hidd, hogy átvehetik azokat a válladról. Arról van szó, hogy útközben \"felnőtté\" kell válnod.",
- "planets": [
- "Szaturnusz"
- ],
- "problem": "Bensőleg megkeményedtél, páncélt vettél magadra, és senki sem hatolhat el hozzád, senki sem férkőzhet a lelked közelébe. Olyan, mintha egy magas hegycsúcsra vagy a magány erődítményébe húzódtál volna vissza. Elítéled ennek a világnak a \"gyermekeit\", így keménységeddel és hamisan értelmezett felnőttségeddel betemetted a benned élő gyermekhez vezető utat. Nem a világ hibás abban, hogy lelked elzárkózott, hiszen ez az erődítmény hozzád tartozik. Figyeld meg ezt a részedet, és próbálj meg felelősséget vállalni ezért az építményért.",
- "number": 10,
- "name": "A Mester",
- "goal": "Az út eredményeként megértetted, hogy objektív sors működik feletted. Olyan hatalom (a sors hatalma), amelyet senki sem befolyásolhat, amelynek engedelmeskedned kell - és amely előtt meg kell hajolnod. Most a válladon hordod a felelősséget, vagyis érthető \"igennel\" felelsz.",
- "keywords": [
- "törvényszerűség",
- "felelősség",
- "sors",
- "öregember",
- "halál",
- "a részvétlen tanító"
- ],
- "signs": [
- "capricorn"
- ]
- },
- {
- "road": "Ideje felnőtté válnod. Segítségül felteheted magadnak a következő kérdést: hol maradnak a könnyeim? Csak a veszteség könnyei által (nem összetévesztendő az önsajnálat könnyeivel - ezeket könnyű átélni), és nem a megsértett érzelmek által csillanhat fel benned a nőiesség.",
- "planets": [
- "Hold",
- "Szaturnusz"
- ],
- "problem": "Problémád alapját az a szerepszemélyiség képezi, amely elzárja érzelmeit. Sündisznó-tüskéket növesztettél, érzelmeidet kőfallal vetted körül (\"érzelmi páncél\"), és most hidegen és megközelíthetetlenül viselkedsz. A feladatod így hangzik: ne a világot tedd felelőssé keménységedért, hanem találd meg azt önmagadban!",
- "number": 21,
- "name": "A Jégkirálynő",
- "goal": "Az út végén jobban tudod vállalni a felelősséget saját megkövesedett érzelmeidért. Saját keménységedért akkor már nem másokat hibáztatsz. Tudod, hogy az is hozzád tartozik! Csak ez a felismerés hozhat enyhülést számodra, a jég csak ekképpen olvadhat fel.",
- "keywords": [
- "megkeményedett nőiesség",
- "magányos gyermek",
- "szigorú anya",
- "bűntudat",
- "depresszió"
- ],
- "signs": [
- "cancer",
- "capricorn"
- ]
- },
- {
- "road": "Emlékezz! - mondja ez a kártya. Keresd meg benső terapeutádat (adott esetben ehhez egy másik emberre van szükséged, hogy tükröd legyen a külvilágban). És mindenek előtt: fordulj befelé. A problémád megoldását egyedül és kizárólag saját történetedben találhatod meg. Tehát, még egyszer: emlékezz!",
- "planets": [
- "Jupiter"
- ],
- "problem": "A megértés pillanatában hol marad az emlékezés",
- "number": 9,
- "name": "A Prédikátor",
- "goal": "Tovább fogsz jutni. Nyitottabb leszel és toleránsabb. Kész vagy arra, hogy vedd a fáradságot lelked történetének megértéséhez, így Mnemoszüné, az emlékezés istennője az út végére egy kincset tartogat számodra: a felismerést, amely lelked gazdagságát jelenti.",
- "keywords": [
- "pap",
- "misszionárius",
- "belső terapeuta",
- "hit",
- "belátás",
- "a világ filozófiai szemlélete"
- ],
- "signs": [
- "sagittarius"
- ]
- },
- {
- "road": "Próbáld meg jelenlegi bonyodalmaidat egy lépés távolságból megszemlélni. A szabadság felé vezető úton meg kell válnod mostani problémádtól, még akkor is, ha ez most elképzelhetetlennek tűnik számodra. Próbálj meg a benned élő Udvari Bolonddal szövetséget kötni, és tanulj meg nevetni magadon.",
- "planets": [
- "Uránusz"
- ],
- "problem": "Ebben a pillanatban nem érted, mit is jelent a szabadság eredeti értelmében. Talán azt gondolod, ki kellene törnöd jelenlegi, rabságot jelentő életszituációdból, mégis tehetetlenül és eredménytelenül ingadozol a külső körülmények szorításában. Az Udvari Bolond igazi üzenetét nem érted. Ez pedig azt hirdeti, hogy az embernek először szellemileg-lelkileg át kell dolgoznia a szituációt, hogy azután kinőhessen abból.",
- "number": 11,
- "name": "Az Udvari Bolond",
- "goal": "A körülmények kirobbantottak elavult, idejét múlt helyzetedből. Fejlődési folyamatod - anélkül, hogy észrevetted volna - szárnyakat növesztett számodra.",
- "keywords": [
- "szabadító",
- "szabadság",
- "kívülálló",
- "\"igazi\" hős",
- "pusztai farkas"
- ],
- "signs": [
- "aquarius"
- ]
- },
- {
- "road": "Utadon egyszer, ahol erre éppen szükség lesz, fáradságosan felépített királyi birodalmadat el kell hagynod. A megbízatás így hangzik: keresd meg a benned élő UDVARI BOLONDOT. Ez pedig csak akkor megy, ha egyszer önként veszed a bátorságot ahhoz, hogy felszabadítsd magad.",
- "planets": [
- "Nap",
- "Uránusz"
- ],
- "problem": "Lezuhantál, és ezt sem megérteni, sem kiheverni nem tudod. Nem is sejted, hogy az árulás magasabb megbízatásból történik, másokat teszel azért felelőssé, hogy megcsaltak és elárultak téged. Természetesen az objektivitás szívesen használ fel más személyeket, akiknek az a feladatuk, hogy megbízatását teljesítsék. A zuhanás jogosan és a magasabb szükségszerűségek figyelembevételével történik. Ezt akkor is, ha az EGÓ-nak fájdalmat okoz, tudomásul kell venni.",
- "number": 32,
- "name": "A Zuhanás",
- "goal": "Végül felismered, hogy te is egy UDVARI BOLOND vagy, és ezt a szerepet teljesen fel tudod vállalni. A királlyal való azonosságtudatod kisebb, az UDVARI BOLOND-dal átélt pedig nagyobb lett.",
- "keywords": [
- "árulás a királyi udvarban",
- "összeomlás",
- "fordulat",
- "az egó zuhanása",
- ""
- ],
- "signs": [
- "leo",
- "aquarius"
- ]
- },
- {
- "road": "Törődj, gondoskodj saját érzelmi életedről. Ne hagyd, hogy elvonjanak e feladattól mások érzelmi problémái, mert most saját érzelmeid fontosabbak.",
- "planets": [
- "Hold",
- "Merkúr"
- ],
- "problem": "Eddig nem akartad észrevenni, hogy van valaki, akinek szüksége van gondoskodásodra és együttérzésedre. Aki a külvilágban arra vár, hogy törődj vele, természetesen csak a bensődben élő GYERMEK tükre, aki felé oda kellene fordulnod. Amikor csak a külvilág felé fordulsz, saját segítségre szoruló részedet szorítod háttérbe.",
- "number": 17,
- "name": "A Törődés",
- "goal": "Az anya-gyermek kapcsolatot helyreállítottad a lelkedben. Már nincsen annyi félelmed, már nem érzed magad olyan tehetetlennek és kiszolgáltatottnak, mert megtanultad, hogyan törődj saját magaddal.",
- "keywords": [
- "együttérzés",
- "oltalom",
- "gondoskodás",
- "aggodalom",
- "gondot okozó gyermek",
- "segítési szindróma"
- ],
- "signs": [
- "cancer",
- "virgo"
- ]
- },
- {
- "road": "A bölcs gondolatok általában oda vezetnek, hogy valamit, ami most körülvesz, vagy aminek foglya vagy, és számodra igen értékes, el kellene engedned. Az utad áldozatot követel, és ez valamilyen anyagi áldozat lesz. Ismered a mondást: \"nem használhatod a tyúk egyik részét arra, hogy neked tojást tojjon, a másikat pedig arra, hogy levest főzz belőle\"; utadon a tyúkot, amelyik eddig aranytojást tojt neked, valószínűleg el kell engedned.",
- "planets": [
- "Vénusz",
- "Jupiter"
- ],
- "problem": "Éppen azon vagy, hogy fontos meglátásokat vásárolj meg magadnak, vagy adj el másoknak. Ez azt jelenti, hogy amit saját szellemi tulajdonodként körbehordozol, az valójában nem is a tied. Még nem kezdte el a lelkeden keresztül vezető útját, ezért még mindig árucikk jellege van, és értékes gyöngyszemként arra szolgál, hogy azzal egódat díszítsd. Talán még kereskedést is akarsz nyitni, ahol ezt az értékes dolgot áruba bocsátod. De minden csak pillanatnyilag okoz problémát neked, mivel még nem tudod, hogy csak beképzeled magadnak, hogy amit vettél vagy eladtál, azt már meg is értetted.",
- "number": 47,
- "name": "Anyag És Szellem",
- "goal": "Most már tisztában vagy vele, hogy gondolataid, szellemi teremtményeid olyan értékek, melyek csak rád nézve igazak. Senki más nem vásárolhatja meg őket tőled, és te sem adhatod el őket másnak. Saját magad kell, hogy létrehozd őket, úgymond a saját kétkezi munkáddal.",
- "keywords": [
- "szellemi javak áruba bocsátása",
- "ezoterikából kovácsolt üzlet",
- "a boldogság megvásárlása",
- "szekta"
- ],
- "signs": [
- "taurus",
- "sagittarius"
- ]
- },
- {
- "road": "Bár érzed, hogy magányos vagy, de már azt is észreveszed, hogy az Ég egyedül otthontalanságodban tud hozzád szólni. Figyelj jobban bensőd felé. Figyelj álmaidra (tegyél fantázia utakat stb.), hogy bensőd üzeneteit világosabban érezhesd. Ameddig a külvilágban keresel, keresésed hiábavaló.",
- "planets": [
- "Hold",
- "Neptunusz"
- ],
- "problem": "E pillanatban hazátlan és védtelen vagy, várakozol. Vagyis rábukkantál a benned élő, meg nem született GYERMEKRE, és érzed, hogy a mostani helyzeted nem az igazi otthonodat jelenti. Elszabadul benned a vágy, és senki nincsen, aki azt komolyan kielégíthetné. Lehet ez édes fájdalom is, de nagy szenvedés is, amelybe tulajdonképpen elásod magad. Ezen az érzésen semmit sem lehet változtatni, csak elszenvedni lehet.",
- "number": 23,
- "name": "Csipkerózsika Szendergése",
- "goal": "Megtanulod, hogy a látható világ mellett létezik egy mélyebb, láthatatlan világ is, és ehhez a világhoz találsz egy vezetőt. Ő, akinek a neve \"intuíció\", megmutatja neked a túlvilág csodáit, és elfelejteti veled magányodat.",
- "keywords": [
- "álom",
- "vágyakozás",
- "a meg nem született",
- "elátkozott lélek",
- "intuíció",
- "nő a felejtés birodalmában",
- "várakozás"
- ],
- "signs": [
- "cancer",
- "pisces"
- ]
- },
- {
- "road": "Azért, amit most el akarsz érni, meg kell tanulnod bájaidat felhasználni. Tekintsd játéknak, hogy előveszed szépségedet és bájaidat, hogy kívánságaid és céljaid érdekében felhasználd azokat. Mindannyian játszunk ehhez hasonló egó-játékokat.",
- "planets": [
- "Nap",
- "Vénusz"
- ],
- "problem": "Függővé teszed magad éned pozíciójától, amelyet csak mások legyőzése árán tudsz megszerezni, vagy szereztél meg. Eladod magad, hogy ezáltal odakösd magad valakihez, akinek a hatalma és ereje így rád vetülhet. Saját értékednek így nincsen alapja.",
- "number": 25,
- "name": "A Királynő",
- "goal": "Átláttad, hogy pozíciód nem az önállóan cselekvő királyé, hanem függsz másoktól (alattvalóidtól) is. Barátságosan és lojálisan használod fel ezt a pozíciót hamis szerénység nélkül, de \"kölcsönvett tollaidat\" sem rejted el. \"Igazi királynő (királyné) leszel.",
- "keywords": [
- "női hatalom és erő",
- "fény és pompa",
- "királynő",
- "érzéki eszközök és erotikus kisugárzás bevetése"
- ],
- "signs": [
- "leo",
- "taurus"
- ]
- },
- {
- "road": "Utadon egyedül és kizárólag arra a bizalomra van szükséged, hogy te vagy az, aki felülről, az Égből minden \"jót\" megkapsz, ami majd végig elkísér életedben.",
- "planets": [
- "Nap",
- "Jupiter"
- ],
- "problem": "Bensőd legmélyén aggasztó bizalomhiányban szenvedsz. Optimizmusodat elvesztetted, felismeréseidben már nem bízol meg. Az az érzésed, hogy a kozmikus bőségszaruról leválasztottak. Nyújtod a kezed, de semmi sem hullik bele. EGÓ-d már nem hallgat a benned élő, mindig jelenlévő terapeutára - a religióhoz vezető hidat leromboltad.",
- "number": 30,
- "name": "Fortuna",
- "goal": "Utad megérte a fáradtságot. A bőségszaru újra kiönti rád adományait. A felismerések visszatérnek, és azt, amit szerencsének (vagy boldogságnak) lehet nevezni, újra érezni fogod. Figyelsz arra, hogy a nagyzási hóbortod határok között maradjon és éned ne legyen túláradó.",
- "keywords": [
- "szerencse",
- "szellemi tér",
- "türelem",
- "csillagok felé törekvés",
- "mások csodálatának kivívása",
- ""
- ],
- "signs": [
- "leo",
- "sagittarius"
- ]
- },
- {
- "road": "Utad káoszon és zavarodottságon át vezet. Már nem látod a kiutat. Azonban ez a zavarodottság gyógyító hatású is lehet, amivel arra késztet, hogy különbséget tégy az álmaid és biztonságérzeted, a szükségszerűség és vízióid között. Meg kell találnod a helyes középutat a félelemből származó alkalmazkodás és kibontakozó jövőd között.",
- "planets": [
- "Merkúr",
- "Neptunusz"
- ],
- "problem": "Becsapod magad, és önbecsapásodat valaki másra vetíted ki; ez a valaki ezért sorsod beteljesítőjévé válik: be \"kell\", hogy csapjon téged. Nehéz meglátnod magad ebben a tükörben, de minél tovább próbálod elkerülni a tükörképedet, az annál átláthatatlanabbá és homályosabbá válik.",
- "number": 63,
- "name": "A Becsapás",
- "goal": "Egy élethazugság lelepleződött - az igazság előtted fekszik. Van bátorságod belevágni a kiszámíthatatlanba, az élet káoszába. Megtanultál együtt élni a bizonytalansággal, igen, már tudod, hogy csakis az előre nem láthatóra számíthatsz valójában.",
- "keywords": [
- "önbecsapás",
- "szabálytalan játék",
- "csalás",
- "bűvészmutatvány",
- "hamis pénz",
- "rend a káoszban"
- ],
- "signs": [
- "virgo",
- "pisces"
- ]
- },
- {
- "road": "Ideje, hogy kibeszéld, mi az, ami foglalkoztat, mi az, ami történik benned. Enélkül nem tudsz továbbhaladni - csak visszafelé. Utadon egyszer abba az irányba kell fordulnod, amit most visszatartasz. El fog jönni az érzelmek ideje. Keress magadnak egy pszichológust vagy egy bizalmast, ha nincs senkid, aki meghallgasson.",
- "planets": [
- "Hold",
- "Merkúr"
- ],
- "problem": "Inkább a felszínen akarsz maradni, és érzéseidről nem akarsz tudni. Mindent megpróbálsz azért, hogy ne kelljen észrevenned őket, vagy hogy ne kelljen róluk beszélni.",
- "number": 15,
- "name": "A Kibeszélés",
- "goal": "A fejet és a hasat összekötötted. Sem az érzéseid által nem hagyod magad terrorizálni (vagy nem terrorizálsz másokat), sem pedig nem hallgatod el őket. Ki tudod fejezni, amit érzel. De nem tulajdonítasz túl nagy jelentőséget nekik.",
- "keywords": [
- "érzések kimondása",
- "a beszélgetés terápiája (Pszichoanalízis)",
- "érzésekkel kapcsolatba kerülni",
- "az ész és az érzelem kapcsolata"
- ],
- "signs": [
- "cancer",
- "gemini"
- ]
- },
- {
- "road": "Több felelősséget kell vállalnod mind gondolataidért, mind tetteidért. Következő lépésed előtt kérdezd meg magadtól: miért teszem vagy mondom ezt? Nem tudsz továbblépni, ha nem időzöl el egy kicsit ennél a kérdésnél. Akadályokkal kell számolnod utadon. Intsd magad nagyobb türelemre.",
- "planets": [
- "Merkúr",
- "Szaturnusz"
- ],
- "problem": "Pillanatnyilag elvesztetted mozgékonyságodat. Mozgásod tehetetlen és béna, egy helyben jársz. Még mindig nem értetted meg, hogy fejlődésednek miért éppen ez a pontja annyira fontos, hogy ilyen sokáig itt kell maradnod. Akadályozva érzed magad, mert nem akarod tudomásul venni, hogy nem tudsz repülni, és hogy szárnyaid töröttek.",
- "number": 55,
- "name": "A Megtörtség",
- "goal": "Az embert útnak \"indítják\". Vannak olyan időszakok, amikor egyedül vándorol a sivatagban és vannak olyan emelkedett pillanatok, amikor táncolhat és ugrándozhat. Mindkét periódust megismerted, jelen életszakaszodért megtanultál felelősséget vállalni. Saját életkörülményeidet már semleges, objektív és türelmes szemlélőként (és értőként) látod.",
- "keywords": [
- "akadályoztatás",
- "tanulási nehézségek",
- "kontaktus hiánya",
- "rokkant",
- "megfontoltság",
- "gondolatok tisztasága"
- ],
- "signs": [
- "gemini",
- "capricorn"
- ]
- },
- {
- "road": "Utad jelentős részét a versenyszerű viselkedés helyes megfigyelése teszi ki. Kivel vagy mivel ékesíted úgy magad, hogy másnak látszódj, mint amilyen valójában vagy? Nyíltan nézz szembe saját értékeiddel!",
- "planets": [
- "Vénusz",
- "Merkúr"
- ],
- "problem": "Mélyen belül kisebbrendűnek érzed magad. Alacsony önértékeléstől szenvedsz, vagy azért, mert azt gondolod, hogy valaki a környezetedből fakóvá és észrevétlenné tesz, vagy mert már egész életedben ilyen voltál. Mindkét esetben összehasonlításnak, és versengésnek teszed ki magad, amelynek során hosszú távon csak vesztes lehetsz. Amíg azon fáradozol, hogy vonzóbbnak látszódj és külső értékeket gyűjtögess, addig fogoly maradsz a látvány szintjén - bár ezt még magadnak sem mered bevallani. Az az érzésed , hogy te vagy a vesztes.",
- "number": 43,
- "name": "Az Aranyszívű Leány",
- "goal": "Amikor megoldottad a problémádat, láthatod, hogy önértékelésed megjelenítése csupán egy színpadi szerep. Te vagy a színész. Csak rajtad áll, hogy tovább akarod-e játszani a szerepedet vagy búcsút intesz neki. Bármelyiket is választod, egyiknek sincs túlzott jelentősége.",
- "keywords": [
- "Hamupipőke",
- "női vetélytárs",
- "értékek bemutatása",
- "Szurkos Mari",
- "kékharisnya",
- "a \"szép\" és a \"csúnya\""
- ],
- "signs": [
- "taurus",
- "gemini"
- ]
- },
- {
- "road": "Ellenőrizd utad során, hogyan próbálsz külső értékekben támaszra találni, melyek útközben gyakran csak akadályoznak, és nehezítik továbbhaladásodat. Ismerd fel ezért a tornyokat (pénzből vagy másféle javakból megépítve), melyeket te hoztál létre, és ellenőrizd, milyen biztonságot remélsz tőlük valójában. Ellenőrizd, mi az, aminek még van értelem és mi az, ami már értelmetlen teher.",
- "planets": [
- "Vénusz",
- "Merkúr"
- ],
- "problem": "Falat építettél magad köré, és biztonságvágyad és félelmed miatt görcsös ragaszkodásod rabszolgájává lettél. A mértéktelenség itt nagyon fontos szerepet játszik. Bár azt gondolod magadban: minél több, annál jobb, de ettől valójában egyre merevebbé válsz, egyre mozdíthatatlanabb leszel. Gondolkozz el ezen a bölcs mondáson: \"A biztos szóra a Pokol válasza csak a vihogás.\" Mindent összevetve: pénzproblémáid vannak!",
- "number": 44,
- "name": "A Ragaszkodás",
- "goal": "Kétségtelen, hogy a materiális világnak megvan a maga helye és ideje. Megtalálod ennek a szerepszemélyiségnek a kiegyensúlyozott (és nem korlátozó) megközelítését. A biztonságnak megvan a maga valódi értéke, de ez önmagában még nem végcél.",
- "keywords": [
- "mohóság",
- "gyarapodás (hízás)",
- "a materiális világ mint védőfal és börtön",
- "önmagát bebiztosítás"
- ],
- "signs": [
- "taurus",
- "virgo"
- ]
- },
- {
- "road": "Hihetetlenül nehéz feladat előtt állsz. Próbálj meg rájönni, hogy a természetellenes képek mikor fertőztek meg annyira, hogy bábuvá váltál. A feladatod abban áll, hogy kibújj ebből a szerepből, hogy levetkőzd ezt a bábu-éned, és hogy visszatalálj valódi egyéniségedhez. Ez azért nem könnyű feladat, mivel mindig fennáll annak a veszélye, hogy az átalakulás után, anélkül, hogy észrevennéd, a következő élettelen képbe bújsz.",
- "planets": [
- "Vénusz",
- "Plútó"
- ],
- "problem": "Láthatatlan szálakon függsz. Megpróbálsz egy képhez hasonlítani, anélkül, hogy tudnád. Metaforikusan kifejezve \"lárvává\" akarsz válni. Az Alvilág Istene olyan mesterien elvarázsol, hogy képtelen vagy különbséget tenni kép és természetes forma között. Olyan ez, mint egy vírus, ami benned élősködik és aminek olyan hosszú a lappangási ideje, hogy már nem is emlékszel, mikor és hol fertőzhetett meg.",
- "number": 46,
- "name": "A Bábu",
- "goal": "Megtalálod a magad egyéni, egészen individuális, a személyiségednek legmegfelelőbb értékeit. Már nem kell saját elképzeléseid fonalától vezérelten cselekedned, más sem rángathat kötélen. Utad kivezet a mások által uralt képzetekből, a külsőségek csapdájából, és az olyan értékekből, melyek nem felelnek meg neked.",
- "keywords": [
- "Barbi baba-szindróma",
- "távvezérelt érzékiség",
- "tökéletes megjelenés",
- "megszállott vonzódás a materiális formák iránt",
- "emésztési nehézségek"
- ],
- "signs": [
- "taurus",
- "scorpio"
- ]
- },
- {
- "road": "Közbe kell lépned másokért, a világért, a természetért. Utad során meg kell tanulnod vállalni a felelősséget a gyengékért (illetve a tőled függő lényekért). Ez lehet akár állat, akár növény, de lehet egy emberi lény is, akinek szüksége van a védelmedre. Nem tudsz továbbhaladni utadon mindaddig, míg feléjük nem fordulsz, és nem gondoskodsz róluk.",
- "planets": [
- "Vénusz",
- "Szaturnusz"
- ],
- "problem": "Van a környezetedben egy teremtmény (állat, növény vagy akár egy segítségre szoruló személy), aki vagy ami gyenge, és a segítségedre szorul. Figyelmetlen vagy, és nem törődsz vele, hogy gondoskodásod nélkül elszárad és elpusztul. Az a feladatod, hogy gondoskodj róla és törődj vele. Ez a gondoskodás mind a természet nagyobb összefüggéseire, mind a saját testedre vonatkozhat. Valamilyen ponton felelőtlenül cselekszel. Mindaddig nem szabadulsz a szellemi nélkülözés és üresség érzésétől, amíg fel nem idézed ezt magadban.",
- "number": 48,
- "name": "A Teremtés Felelősségérzete",
- "goal": "Most megismerkedtél a benned levő Assisi Szent Ferenccel. Szinte észrevétlenül és akaratlanul felébredt benned egy rész, amely jót akar cselekedni a világ összes teremtményével. Kész vagy felelősséget vállalni és harmóniában érzed magad a természettel.",
- "keywords": [
- "a világ iránt érzett felelősség",
- "teremtő és természet",
- "gondoskodás és figyelem",
- "haszonélvezet",
- "törődés a függőségben levőkkel és a gyengékkel"
- ],
- "signs": [
- "taurus",
- "capricorn"
- ]
- },
- {
- "road": "Egy nagyon fontos lépés az életedben, hogy egyszer el kell hagynod mindazt, amit hazának és otthonnak nevezel, és útra kell kelned. Ehhez gyakran hozzátartozik az is, hogy tulajdonod nagy részétől el kell szakadnod, mivel ezek az anyagi dolgok túlságosan lekötnek téged. Ilyen kolonccal a lábadon csupán álmodozni vagy képes, de továbbmenni már nem.",
- "planets": [
- "Vénusz",
- "Neptunusz"
- ],
- "problem": "Anélkül, hogy tudnád, ábrándokba merülsz, arra vársz, hogy ezek teljesüljenek, és ezáltal menekülsz a realitások elől. Ezek az álmok olyanok, mint a kábítószer, melyek egyre inkább elidegenítenek a világtól, és amelyektől mégsem tudsz megválni. Egy olyan hamis valóságba ringatnak, ami nem is létezik itt a Földön, és mindenekelőtt: melyek passzívvá tesznek téged.",
- "number": 50,
- "name": "A Szellem Kertje",
- "goal": "\"Minden megnyilatkozás a földön csupán metafora.\" Végül megértetted, mit is jelent ez a mondat teljes mélységében. Nincs már szükséged arra, hogy hatalmi játékokat játssz, hanem vizsgáld meg passzívan a metaforákat - és fel fogod ismerni bennük magad.",
- "keywords": [
- "világ a világ mögött",
- "otthontalanság",
- "gyökértelenség",
- "Hamupipőke-szindróma",
- "érzéketlenség az anyagi világ iránt",
- "a látható világ mint hasonlat"
- ],
- "signs": [
- "taurus",
- "pisces"
- ]
- },
- {
- "road": "Amennyire az ezoterikus körökben az anyagtól és a testiségtől való \"elszakadást\" hirdetik, a te feladatod most az, hogy Vénuszoddal foglalkozz, vagyis barátkozz meg vele. Csak amit egyszer a birtokunkba vettünk, amit egészen a magunkévá tettünk, azt tudjuk végül el is engedni. Tanuld meg az életet érzéki tapasztalatként átélni, és testedet, mint lelked lakóhelyét tisztelni, ugyanakkor ne értékeld túl, és ne fordíts rá túl sok energiát.",
- "planets": [
- "Vénusz"
- ],
- "problem": "Bensőd legmélyén értéktelennek tartod magad, és ez az érzés elhatalmasodott rajtad. Áldozatnak tekinted magad. Kisebbrendűségi érzésednek, a \"nem szeretem magam\" állapotnak meg kellene nyilvánulnia. Már nem elég, ha külső szépséggel veszed körül magad, vagy ha vadászatra indulsz: vajon szeret-e még téged valaki, meg tudsz-e kapni még valakit, ágyba tudod-e vinni. A kártya az értéktelenség és kisebbrendűség érzésére akar emlékeztetni, amelyeket most tudatosan meg kell élned.",
- "number": 2,
- "name": "A Szerető",
- "goal": "Az út végére kidolgoztad önértékelésed érzését. Megtanultad, hogy a dolgokat reálisan értékeld, hogy annak tartsd őket, amik: dolgoknak.",
- "keywords": [
- "érték",
- "vonzó dolog",
- "tulajdon",
- "társasági szellem",
- "testi szépség"
- ],
- "signs": [
- "taurus"
- ]
- },
- {
- "road": "Az a feladatod, hogy teret nyerj, hogy kivívd saját helyedet. Senki sem fog önként adni semmit. Szemet szemért - fogat fogért, és akár győzöl, akár vesztesz, utadon csak akkor tanulhatsz valamit, ha bátorságod van a harchoz, ahhoz, hogy kiállj ellenfeled elé.",
- "planets": [
- "Nap",
- "Mars"
- ],
- "problem": "Belebonyolódtál agresszióidba. Azt hiszed, hogy azonosítottad az ellenségedet a külvilágban, és kétségbeesetten próbálod legyőzni, anélkül, hogy észrevennéd, saját magad ellen vezetsz hadjáratot. Ebben a pillanatban te magad vagy a legnagyobb ellenséged. Minél szenvedélyesebben akarsz győzni, annál több erőt veszítesz - végső soron csak saját magadat semmisíted meg.",
- "number": 24,
- "name": "A Csata",
- "goal": "Megtanultad, hogy a külvilágban jelentkező ellenség mindig csak saját szerepszemélyiségeidnek tükröződése, és így egyik részedet képezi. Ez mégsem jelenti azt, hogy ennek a tudásnak a birtokában meg kellene akadályoznod egy szükséges harcot. Éppen ez adja vissza neked azt a döntési szabadságot, hogy akarsz-e harcolni, vagy sem. Döntöttél, és képes vagy arra, hogy utad végén éned harcos igyekezetét ne értékeld túl.",
- "keywords": [
- "agresszív hatalmi harc",
- "pyrrhuszi győzelem",
- "önpusztítás",
- "öngól",
- "tükörharc"
- ],
- "signs": [
- "leo",
- "aries"
- ]
- },
- {
- "road": "Két ösvényen kell haladnod egyidejűleg. Bal oldali utad még a tanulóé, a jobb oldali viszont már a tanáré. Mindkettő egyenlő mértékben és egyidejűleg hozzátartozik jelenlegi fejlődésedhez. Amíg nem térsz le egyik ösvényről a másik javára, addig energiád jó mederben csörgedeznek tovább.",
- "planets": [
- "Merkúr",
- "Jupiter"
- ],
- "problem": "A tanuló és tanító szerepe között létezik egy középső pont. Ezen a ponton állsz most pillanatnyilag, elvesztél benne. Nem tekinted magad tanítványnak, és a tanításhoz sincs elég bátorságod. Ez a senki földje elrabolja intellektuális energiáidat, és úgy érzed magad, mint aki csapdába esett a \"még nem\" és a \"már nem\" között. Eddig megszerzett tudásodból hiányzik az elkötelezettség - pillanatnyilag nem fejlődsz szellemileg.",
- "number": 54,
- "name": "Mester És Tanítvány",
- "goal": "Szellemi \"központtá\" váltál. Szükség és célcsoport szerint adod át, illetve fogadod be a tudást. Már képes vagy mindkettőt megtenni. Tudásod már terápiás erőt kapott és elkötelezett vagy. Ez eléri léted mélységeit is, olyan folyót képezve, mely termővé teszi a partjait. Most már elfogadod, hogy még hosszú ideig tart, míg a folyó a tengerbe ömlik.",
- "keywords": [
- "tanulás és tanítás",
- "szellemi zuhanás",
- "örök diák",
- "szélhámos",
- "szellemi függetlenség"
- ],
- "signs": [
- "gemini",
- "sagittarius"
- ]
- },
- {
- "road": "Életedben semmi sem marad úgy, ahogy régen volt. Utad egy elmúlási folyamaton vezet keresztül, amiből csak akkor tudsz főnixmadárként kiemelkedni a hamuból, ha megvan a bátorságod a régi dolgok feladására. Felemelkedés csak letűnés után következhet be. Életed régi alakjaiból csak akkor születnek újak, ha azok először, mint a hulladék elbomlanak.",
- "planets": [
- "Plútó",
- "Uránusz"
- ],
- "problem": "Régi elképzeléseid és gondolataid már halálra vannak ítélve, de még mindig ragaszkodsz hozzájuk, és nem veszd észre, hogy már számodra is idejétmúltak. Bizonyos értelemben valami \"halott\" dologhoz ragaszkodsz. Lelked pillanatnyilag fogoly, a lélek madara lassan elpusztul a szabadság hiánya miatt. Számolnod kell azzal, hogy ha kinyitod kalitkája ajtaját, régi életformád és struktúrád összeomlik, te pedig egy nagy halom por és hamu előtt állsz majd.",
- "number": 71,
- "name": "A Főnixmadár",
- "goal": "A Főnixmadár gyönyörű, csillogó színekben röppen fel a múlt romjaiból - életed egy szakasza lezárult. Lelked felszabadította magát merevségéből. Most már megérti, mit jelent egy életen belül meghalni, és újjászületve elkezdeni egy új életfejezetet.",
- "keywords": [
- "metamorfózis",
- "díszes tollú lélek-madár",
- "pusztulás és feltámadás (halál és újjászületés)",
- "célvesztés",
- "vedlés"
- ],
- "signs": [
- "scorpio",
- "aquarius"
- ]
- },
- {
- "road": "Utadon most az vált fontossá, hogy új bátorságot meríts érzékiséged átdolgozására. Hogy gátlásaidon vagy mértéktelenségeden keresztül megtanuld megérteni, hogy Ámor a maga módján a két elválasztottat újra egyesíteni szeretné.",
- "planets": [
- "Mars",
- "Vénusz"
- ],
- "problem": "A kártya a szexualitásodra (annak problémájára) szeretne emlékeztetni. Azt akarja mondani: az embernek nemcsak szelleme, teste is van - és ugyanakkor: nem egyedül a testével él, szelleme is van.",
- "number": 34,
- "name": "Erosz",
- "goal": "Fel tudod mérni a szexuális játék hatósugarát, se alul, se túl nem értékeled. A szexualitás - ahogyan egy bölcs fogalmazott - a világ legszebb mellékes ügye.",
- "keywords": [
- "a nemek vonzása",
- "szex",
- "flört",
- "testi kapcsolat",
- "cherchez la femme"
- ],
- "signs": [
- "aries",
- "taurus"
- ]
- },
- {
- "road": "Szigorú vallatásnak leszel kitéve, és talán perbe is fognak. A sors erővel akar kipréselni belőled egy igazságot, és ezért \"inkvizíciós módszereket\" használ. Nem a bűnösségről vagy ártatlanságról van itt tulajdonképpen szó (bár kívülről talán így látszik), hanem egy perről, ami ennek a folyamatnak a \"nyomása\" alatt, mint egy lavina elindul. Ez a folyamat késztet arra, hogy előrelépj.",
- "planets": [
- "Merkúr",
- "Jupiter"
- ],
- "problem": "Képmutatóvá váltál, aki saját magának próbálja bebizonyítani ártatlanságát, miközben intoleráns más véleményével, nézeteivel szemben. Másoktól elvárod, hogy vallásukat, véleményüket megtagadják, és a tiédet kövessék. Annyira meg vagy győződve saját nézeteid igazáról, hogy már sehogy nem lehet hatni rád. Más árnyékát vizsgálod, és tettei tökéletlenségét hangsúlyozod. Elfeledkezel róla, hogy valójában saját sötét feled az, amelyre kinyújtott ujjaddal mutogatsz.",
- "number": 60,
- "name": "Az Inkvizíció",
- "goal": "Utad végén a hitedbe vetett bizalom és szellemi, vallási tapasztalataid mélységei várnak. Az eddig fennhéjázó nézeteid megalázkodnak egy igazabb tudás előtt. Toleránsabb lettél magaddal és másokkal szemben, és többé már nem kell görcsösen azt bizonygatnod, hogy egyedül neked van igazad. Minden Isten felé forduló vallási irányzatnak megvan az a létjogosultsága, hogy vezesse a kereső embert. A te utad csakis a tiéd , és ezért csakis te kormányozhatod.",
- "keywords": [
- "vallatás",
- "intolerancia",
- "politikai képmutató",
- "másként gondolkodó semmibevétele",
- "igazság biztos(nak vélt) tudata",
- "bűnös keresése"
- ],
- "signs": [
- "virgo",
- "sagittarius"
- ]
- },
- {
- "road": "Utad a halálfélelemmel való nagyon fontos találkozáshoz vezet. Itt az ideje, hogy elolvasd a halottaskönyveket, megfigyeld azokat a rituálékat, melyek megismertetnek a halállal, és amik megtanítanak arra, hogy a halál valójában jó barátod. Ha megtanultál",
- "planets": [
- "Merkúr",
- "Szaturnusz"
- ],
- "problem": "Pillanatnyilag bénultan állsz egy probléma előtt, és ezzel leblokkolod életenergiáidat. Lelked egy része kővé váltan áll egy küszöb előtt, és nem akarja azt tudomásul venni. A tudattalanodba taszítod az előtted álló feladatot és ezzel a félelmedet is (legalábbis megpróbálod). Nem tudod nevén nevezni a dolgot, először hátra kell fordulnod, és a félelmed szemébe nézni, különben nem tudod megtenni a következő lépést. Adj neki nevet!",
- "number": 61,
- "name": "A Félelem",
- "goal": "Már nem félsz többé a haláltól. Számos halált haltál, és megismerted az elengedés szükségességét. A \"kérlelhetetlen kaszás\" most oldaladon áll, és szövetségesként kísér utadon, akire mindig számíthatsz., bárhová is mész.",
- "keywords": [
- "félelem az élettől és haláltól",
- "rettegés a sötétségtől",
- "behódolás a sorsnak",
- "a halál mint jó barát",
- "megváltoztathatatlanság"
- ],
- "signs": [
- "virgo",
- "capricorn"
- ]
- },
- {
- "road": "Számodra, azaz egód számára beköszöntöttek a szürke hétköznapok. Napjaid egyformán színtelenek. Olyan életszakaszt kell bejárnod, amely nagyon sok kitartást és alkalmazkodást követel meg tőled. Tanulj meg engedelmeskedni e körülményeknek, és számold a kis lépéseket, mert általuk is közelebb jutsz a célhoz. Most találkozol az unalom problémájával (az unalom szó a német nyelvben - \"Langweile\" - szó szerint hosszú időszakot jelent).",
- "planets": [
- "Nap",
- "Merkúr"
- ],
- "problem": "Olyan állapotba menekülsz, amelyet betegségként lehet félreértelmezni. EGÓ-d visszautasítja az életet, mivel ebben a pillanatban nem gurítanak elé vörös szőnyeget. Mégis, mielőtt \"királyi lábaidat\" a valóság talaján megvetnéd, inkább védelmet keresve visszavonulsz, és ágynak esel.",
- "number": 27,
- "name": "A Beteg Király",
- "goal": "Megtanultad, hogyan legyél türelmes, és most már tudsz páciensként viselkedni. Már érted, mi az a \"paciencia\": a szükségszerűségek türelmes elviselése, és a kisszerű és átlagos hétköznapok elfogadása.",
- "keywords": [
- "beteg",
- "mindennapok örömtelensége",
- "kimerültség",
- "menekülés a betegségbe",
- "türelem"
- ],
- "signs": [
- "leo",
- "virgo"
- ]
- },
- {
- "road": "Egy belső döntés előtt állsz, amely nagy vívódást okoz benned. Két út létezik, amelyen megközelítheted problémádat: az egyik az életkörülményeiddel való kibéküléshez, tehát az elfogadáshoz vezet, a másik pedig elutasításhoz és megkeményedéshez. Lehet, hogy elszalasztod a lehetőségét annak, hogy megbocsáss (magadnak, másoknak vagy a sorsodnak). Két erő küzd lelkedért: a bölcsesség és a keserűség.",
- "planets": [
- "Szaturnusz",
- "Neptunusz"
- ],
- "problem": "Hadilábon állsz a sorsoddal. Világossá kell tenned saját magad számára, hogy olyan útra tévedtél, amely élettelenné és keménnyé tesz. E pillanatban olyan ellenséges vagy, hogy senki sem találja meg a hozzád vezető utat. Süketnek tetteted magad a Moirákkal szemben, és nem akarod tudomásul venni, hogy a sors minden egyes új epizódját te szülöd, és az még véletlenül sem egy \"gonosz\" hatalom véletlen vagy akarattal létrehozott terméke.",
- "number": 77,
- "name": "A Végzet",
- "goal": "Magad is Moirává változtál. Jóindulatú és értő emberként nézel körül a világban, együttérzéssel és irgalommal eltelve azok iránt, akik kérlelhetetlen harcot vívnak saját sorsuk ellen. Bölcsességed most példaképükké válhat, mikor nehéz óráikra emlékeznek.",
- "keywords": [
- "megbékélés a sorssal",
- "bölcsesség",
- "megkeseredés",
- "tehetetlenség a sorssal szemben",
- "felmelegedés"
- ],
- "signs": [
- "capricorn",
- "pisces"
- ]
- },
- {
- "road": "A te utad most azt jelenti, hogy meg kell tanulnod magadat, identitásodat, igazi énedet kifejezni.",
- "planets": [
- "Nap"
- ],
- "problem": "Nem találod az utat a lelked mélyén rejlő életerőhöz és örömhöz. Lehetséges, hogy elvesztett hatalmadat és erőtlenségedet külső hatalmi megnyilvánulásokkal próbálod kiegyenlíteni, vagyis a külvilágban uralmad külső jegyeit igyekszel helyreállítani. De mindez hiába, mert a magad felé irányuló szeretetedet elveszítetted. A következő kérdést kell feltenned magadnak: hová tűnt az élet? Próbáld meg elfogadni, hogy ebben a pillanatban a \"vesztesek utcájába\" kerültél. Isten hozott a klubban!",
- "number": 5,
- "name": "Az Egó",
- "goal": "Utad végén újra élsz. Az erő, az életteliség, amelyeket talán ebben a pillanatban nélkülözöl, visszatérnek hozzád. A Nap felkel, új nap kezdődik.",
- "keywords": [
- "hatalom",
- "akarat",
- "egyéniség",
- "nagyszerűség",
- "nemzőerő",
- "kreativitás",
- "szexualitás"
- ],
- "signs": [
- "leo"
- ]
- },
- {
- "road": "Az utadon meg kall tanulnod magadban tartani sok dolgot. Az angyal megtiltja neked, hogy másokkal fecsegj, vagy hogy a titkát eláruld. A te utad csak neked szól, ne próbáld meg másoknak leírni, vagy megmagyarázni, vagy akár kicifrázni. Meg kell tanulnod, hogy mindenkinek magának kell megtalálnia az igazságát, azt körülírni nem lehet.",
- "planets": [
- "Merkúr",
- "Neptunusz"
- ],
- "problem": "Hiábavalóan próbálod meg megfelelően működtetni a világodat, kiveszik a dolgokat a kezedből. A felszínen - tehát ott, ahol mindenki tartózkodik - te csak egy kísértet vagy, nem lát meg senki. A világ már nem reagál az erőfeszítéseidre, úgy tűnik, minden kaotikusan ellened esküdött.",
- "number": 57,
- "name": "A Hallgatás",
- "goal": "A hallgatás igaz arany kincse csak a szivárvány végén vár rád. Már tudod, hogy nincs mit mondani, már nem keresed többé a tetszelgés és a megmutatkozás hamis aranyát.",
- "keywords": [
- "láthatatlanság",
- "némaság",
- "\"hallgatni arany\"",
- "titoktartás",
- "működésképtelenség",
- "érdektelenség"
- ],
- "signs": [
- "gemini",
- "pisces"
- ]
- },
- {
- "road": "Most már tudod, hogy a burkon mély repedések vannak, és hogy magadból valami újat kell megszülnöd. Életed egy része elöregedett. Utadon a burok maradékait még félre kell löknöd, és ez munkába és fájdalomba kerül - de tudod, hogy már nincsen visszaút.",
- "planets": [
- "Hold",
- "Uránusz"
- ],
- "problem": "Nem akarod tudomásul venni, hogy a védettség ideje elmúlt. Fejlődésed már régóta esedékes, legfőbb ideje, hogy kibújj a tojásból, és felkészülj egy új fejlődési korszakra. Mivel mégiscsak félsz attól, hogy a túl szűkké vált formát elhagyd (\"de hiszen itt minden olyan kényelmes volt\" - nyafogod), lehetséges, hogy a védőburkot erőszakkal, kívülről kell feltörni.",
- "number": 22,
- "name": "A Szabadulás",
- "goal": "Kibújtál a tojáshéjból, és először még hideget érzel magad körül, de ez - ahogyan már tudod is - hozzátartozik a felnőtt léthez. Idővel egyre több erőd lesz, és lelked meg fog \"tollasodni\". Ez - Platón szavai szerint - a legfontosabb, ami egy lélekkel történhet.",
- "keywords": [
- "érzelmi elszakadás",
- "búcsú a gyermekkortól",
- "a szabadság fagyossága",
- "védtelenség",
- "hazátlanság"
- ],
- "signs": [
- "cancer",
- "aquarius"
- ]
- },
- {
- "road": "Utad során búcsút kell mondanod egy kapcsolatodnak vagy egy partnerkapcsolatodnak. A bánat és a magány egy időszaka áll előtted. Ha nem felejted el, hogy minden dolog mulandó, akkor ez segíteni fog abban, hogy megőrizd bátorságodat ebben a komor időszakban is. A folyamat végén be fogod látni, hogy szükséges volt ismét visszanyerni a társadnak adott energiákat.",
- "planets": [
- "Vénusz",
- "Szaturnusz"
- ],
- "problem": "Nagyon messzire sodródtál saját belső igazságodtól. Elnyomsz magadban egy fájdalmat és ezzel tudattalanul megakadályozod, hogy a seb begyógyuljon. Sürgősen közelebb kell kerülnöd ahhoz a belső szerepszemélyiségedhez, aki kapcsolataidból eredő bánatoddal foglalkozik. Amíg nem lépsz kapcsolatba vele, és nem gyászolod meg azt, akit elvesztettél, nem tér vissza hozzád az életkedved. Az idő csak akkor gyógyítja be a sebeidet, ha könnyeiddel megtisztítottad azt.",
- "number": 66,
- "name": "A Gyász",
- "goal": "Egyedül rajtad múlik, hogy felelősséget vállalsz-e kapcsolatodért. Fejlődésed útjának végén fel fogod ismerni, hogy partnered hangulataitól és reakcióitól való függésed csupán illúzió volt. Meg fogod tanulni, hogyan emelkedj felül kapcsolatod bonyodalmain, és ne a társadra hárítsd át a hibákat. Ezáltal pedig erőssé és függetlenné válsz.",
- "keywords": [
- "elhagyatottság",
- "magány egy kapcsolatban",
- "szomorúság és gyász",
- "a sors elválasztó hatalma",
- "az özvegy"
- ],
- "signs": [
- "libra",
- "capricorn"
- ]
- },
- {
- "road": "Ismerd fel, hogy egy részed ismeretlen számodra. Fedezd fel, hogy melyik szerepszemélyiséged süllyedt az alvilág sötét birodalmába, hogy onnan vesse ki hálóját idegen életekre. Ezt az élősködő lényt kell felismerned magadban, mert olyan kötelékeket alakít ki, melyek fogva tartanak. E kötelékek között nincs és nem is lesz élet soha.",
- "planets": [
- "Mars",
- "Plútó"
- ],
- "problem": "Egy rész meghalt benned. Ez azt jelenti, hogy valaki máshoz kötötted magad. Szemedben ő a tettes és te (valószínűleg) az áldozatának érzed magad. Reménykedtél benne, hogy feltölt téged élettel, részesülni akartál az energiáiból, és most csodálkozol, hogy hatalmat gyakorol feletted. Magad változtattad magad áldozattá azáltal, hogy magadhoz hívtad őt, a betolakodót.",
- "number": 38,
- "name": "A Vámpír",
- "goal": "A VÁMPÍR meg fog halni. Tudnod kell, hogy rettegsz ettől, de ez fogja meghozni számodra a gyógyulást. Ez nem totális halál: a VÁMPÍR, aki egy részedet elrabolja, a felszínen - a tudatosság fényénél - elpusztul, helyet adva ezzel egy új kezdet számára.",
- "keywords": [
- "behatolás a lélekbe",
- "meggyalázás",
- "rabság",
- "áldozat",
- "halhatatlanság"
- ],
- "signs": [
- "aries",
- "scorpio"
- ]
- },
- {
- "road": "Számos lépcsőfok van előtted, amelyek kapcsolatod templomához, értelméhez vezetnek. Ne tétovázz elindulni rajtuk. Az út most nyitva áll számodra. Ahelyett, hogy hibákat keresnél partneredben (ami visszalépést jelentene), nézz tudatosan előre és lásd meg a magasabb cél értelmét. Egy olyan célét, amely nem szubjektív igényeid kielégítésére szolgál, hanem egy szellemi összetartozás megszületéséhez vezet.",
- "planets": [
- "Vénusz",
- "Jupiter"
- ],
- "problem": "Azon a ponton állsz, ahol bármiféle megértést elutasítasz kapcsolataidat illetően. Olyan magasra teszed a mércét a partnerkapcsolat terén, hogy vagy azt képzeled, hogy már nagyon is messze jársz a helyes úton, vagy hogy számodra a te igényeidnek már senki sem tudna megfelelni. Hogy azért vagy-e egyedül, mert senki sem elég számodra, vagy mert a képzelt magasságból mindig visszazuhansz a valós életbe, kérdéses, mindenesetre egyvalamit meg kell tanulnia belső szerepszemélyiségednek: még mindig nem értette meg azt, hogy mi tesz egy partnerkapcsolatot igazán értékessé.",
- "number": 65,
- "name": "A Symbolon",
- "goal": "Utad végére érve ez a lap a \"szerencse\" jelentését hordozza. Ez olyan boldogságot jelent, ami az együttlétből fakad, és ami kreativitása és elevensége által verekedte át magát a partnerkapcsolat szellemi fejlődésének lépcsőfokain. A templomotok belsejébe megérkezve most már megértetted, hogy miben áll a kapcsolatotok valódi jelentősége, és hogy a \"házasság\" szentségének mi az értelme.",
- "keywords": [
- "egy kapcsolat jelentősége",
- "szerencse a társkapcsolatban",
- "a házasság szentsége",
- "partnerkapcsolat mint a megértés folyamata",
- "aranylakodalom"
- ],
- "signs": [
- "libra",
- "sagittarius"
- ]
- },
- {
- "road": "A kérdésed témáján keresztül vezető út valaminek a felvállalását követeli meg. Valamit felvállalni pedig azt jelenti, hogy valaminek lelkileg átadom magam, és átgázolok a megadás vizén. Megnehezíti az egészet az is, hogy megszületik egy külön követelményeket állító harmadik.",
- "planets": [
- "Hold",
- "Vénusz"
- ],
- "problem": "Hozzájárultál ahhoz, hogy partnereddel valamilyen harmadik dolgot hozzatok létre, de nem akarod őt (azt) felvállalni. Lelkileg nem fogadod el, a közös ügyeteket másokkal akarod adoptáltatni. Félelmektől vezetve, vagy más szubjektív okokból nem engeded meg magadnak, hogy belebocsátkozz egy lelki kapcsolatba",
- "number": 18,
- "name": "A Család",
- "goal": "Valami közös dolog fog létrejönni, amely többet fog jelenteni, mint ti ketten a partnereddel. Ez a harmadik dolog nem a tiéd, saját élete van, de mindkét szülőnek szüksége van bizonyos időre, hogy lelki energiájukkal táplálják és felneveljék.",
- "keywords": [
- "közös harmadik",
- "lelki kapcsolat",
- "Mi",
- "vallomás",
- "egy kapcsolat felvállalása",
- "összetartozás",
- "összetartás"
- ],
- "signs": [
- "cancer",
- "libra"
- ]
- },
- {
- "road": "Utadat csak egy másik emberrel együtt folytathatod. Utadon közös tervekről van szó, mert csak valaki mással együtt világít a Napod. Együtt megtaláljátok, mindenki a maga számára a szív útját. Közösségetek jó, de nem könnyű csillagzat alatt áll.",
- "planets": [
- "Nap",
- "Vénusz"
- ],
- "problem": "Megpróbáltad boldogságodat a másik emberen keresztül megvalósítani. Elvárod, hogy ő táplálja szerelmedet, az ő Napjától szeretnél felmelegedni. Ez nem működhet addig, ameddig az egész folyamat egyoldalú, azaz csak te kapsz tőle. Azt mondod, hogy te is adtál volna ezért valamit neki? Nos jó, akkor cserekereskedelemről van szó. De felfedezted-e már szerelmedet - a másik nélkül is önmagadban?",
- "number": 28,
- "name": "Az Esküvő",
- "goal": "Mást már közös úton haladtok. A szerelem lett a vezetőd, és vissza fogsz térni hozzá. Megtalálod szerelmedet - a másikon keresztül - saját magadban.",
- "keywords": [
- "szerelem",
- "pár",
- "csúcspont",
- "eufória",
- "boldogság a kapcsolatban",
- ""
- ],
- "signs": [
- "leo",
- "libra"
- ]
- }
-]
diff --git a/_drafts/cut-at-ten.md b/_drafts/cut-at-ten.md
deleted file mode 100644
index e44ae39..0000000
--- a/_drafts/cut-at-ten.md
+++ /dev/null
@@ -1,5 +0,0 @@
-``` lisp
-(defun cut-at-ten ()
- (while (re-search-forward "," (save-excursion (end-of-line) (point)) t 10)
- (newline-and-indent)))
-```
diff --git a/_drafts/gtk-actionable-in-action.md b/_drafts/gtk-actionable-in-action.md
deleted file mode 100644
index 025eb76..0000000
--- a/_drafts/gtk-actionable-in-action.md
+++ /dev/null
@@ -1,15 +0,0 @@
----
-layout: post
-title: "GtkActionable in action"
-author:
- name: "Gergely Polonkai"
- email: "gergely@polonkai.eu"
----
-
-I have seen several people (including myself) struggling with
-disabling/enabling menu items, toolbar buttons and similar UI
-interfaces based on different conditions. It gets even worse if there
-are multiple representations of the same action in the same
-application, e.g. a menu item and a toolbar button exists for the same
-action. But with GTK+ 3.4, we have GtkAction, which is exactly for
-this kind of situations.
\ No newline at end of file
diff --git a/_drafts/measuring-coverage-with-codecov-for-libtool-projects.md b/_drafts/measuring-coverage-with-codecov-for-libtool-projects.md
deleted file mode 100644
index d8eb1ab..0000000
--- a/_drafts/measuring-coverage-with-codecov-for-libtool-projects.md
+++ /dev/null
@@ -1,17 +0,0 @@
----
-layout: post
-title: "Measuring code coverage with codecov for libtool projects"
-author:
- name: "Gergely Polonkai"
- email: "gergely@polonkai.eu"
----
-
-I have recently found [codecov][https://codecov.io/]; they offer free
-services for public GitHub projects. As I have recently started writing
-tests for my SWE-GLib project, I decided to give it a go. Things are not
-this easy if you use GNU Autotools and libtool, though…
-
-The problem here is that these tools generate output under `src/.libs/`
-(given that your sources are under `src/`) and `gcov` has hard times
-finding the coverage data files. Well, at least in the codecov
-environment, it works fine on my machine.
diff --git a/_drafts/writing-a-gnome-shell-extension.md b/_drafts/writing-a-gnome-shell-extension.md
deleted file mode 100644
index 917e021..0000000
--- a/_drafts/writing-a-gnome-shell-extension.md
+++ /dev/null
@@ -1,326 +0,0 @@
----
-layout: post
-title: "Writing a GNOME Shell extension"
----
-
-I could not find a good tutorial on how to write a GNOME Shell
-extension. There is a so called step by step
-[instruction list](https://wiki.gnome.org/Projects/GnomeShell/Extensions/StepByStepTutorial)
-on how to do it, but it has its flaws, including grammar and clearance.
-As I wanted to create an extension for my SWE GLib library to display
-the current position of some planets, I dug into existing (and working)
-extensions’ source code and made up something. Comments welcome!
-
----
-
-GNOME Shell extensions are written in JavaScript and are interpreted
-by [GJS](https://wiki.gnome.org/action/show/Projects/Gjs). Using
-introspected libraries from JavaScript is not a problem for me (see
-SWE GLib’s
-[Javascript example](https://github.com/gergelypolonkai/swe-glib/blob/master/examples/basic.js);
-it’s not beautiful, but it’s working), but wrapping your head around
-the Shell’s concept can take some time.
-
-The Shell is a Clutter stage, and all the buttons (including the
-top-right “Activities” button) are actors on this stage. You can add
-practically anything to the Shell panel that you can add to a Clutter
-stage.
-
-The other thing to remember is the lifecycle of a Shell
-extension. After calling `init()`, there are two ways forward: you
-either use a so called extension controller, or plain old JavaScript
-functions `enable()` and `disable()`; I will go on with the former
-method for reasons discussed later.
-
-If you are fine with the `enable()`/`disable()` function version, you
-can ease your job with the following command:
-
-```
-gnome-shell-extension-tool --create-extension
-```
-
-This will ask you a few parameters and create the necessary files for
-you. On what these parameters should look like, please come with me to
-the next section.
-
-## Placement and naming
-
-Extensions reside under `$HOME/.local/share/gnome-shell/extensions`,
-where each of them have its own directory. The directory name has to be
-unique, of course; to achieve this, they are usually the same as the
-UUID of the extension.
-
-The UUID is a string of alphanumeric characters, with some extras added.
-Generally, it should match this regular expression:
-`^[-a-zA-Z0-9@._]+$`. The convention is to use the form
-`extension-name@author-id`, e.g. `Planets@gergely.polonkai.eu`. Please
-see
-[this link](https://wiki.gnome.org/Projects/GnomeShell/Extensions/UUIDGuidelines)
-for some more information about this.
-
-## Anatomy of an extension
-
-Extensions consist of two main parts, `metadata.json` and
-`extension.js`.
-
-The `metadata.json` file contains compatibility information and, well,
-some meta data:
-
-```json
-{
- "shell-version": ["3.18"],
- "uuid": "planets@gergely.polonkai.eu",
- "name": "Planets",
- "description": "Display current planet positions"
-}
-```
-
-Here, `shell-version` must contain all versions of GNOME Shell that is
-known to load and display your extension correctly. You can insert minor
-versions here, like I did, or exact version numbers, like `3.18.1`.
-
-In the `extension.js` file, which contains the actual extension code,
-the only thing you actually need is an `init()` function:
-
-```javascript
-function init(extensionMeta) {
- // Do whatever it takes to initialize your extension, like
- // initializing the translations. However, never do any widget
- // magic here yet.
-
- // Then return the controller object
- return new ExtensionController(extensionMeta);
-}
-```
-
-## Extension controller
-
-So far so good, but what is this extension controller thing? It is an
-object which is capable of managing your GNOME Shell extension. Whenever
-the extension is loaded, its `enable()` method is called; when the
-extension is unloaded, you guessed it, the `disable()` method gets
-called.
-
-```javascript
-function ExtensionController(extensionMeta) {
- return {
- extensionMeta: extensionMeta,
- extension: null,
-
- enable: function() {
- this.extension = new PlanetsExtension(this.extensionMeta);
-
- Main.panel.addToStatusArea("planets",
- this.extension,
- 0, "right");
- },
-
- disable: function() {
- this.extension.actor.destroy();
- this.extension.destroy();
-
- this.extension = null;
- }
- }
-}
-```
-
-This controller will create a new instance of the `PlanetsExtension`
-class and add it to the panel’s right side when loaded. Upon
-unloading, the extension’s actor gets destroyed (which, as you will
-see later, gets created behind the scenes, not directly by us),
-together with the extension itself. Also, for safety measures, the
-extension is set to `null`.
-
-## The extension
-
-The extension is a bit more tricky, as, for convenience reasons, it
-should extend an existing panel widget type.
-
-```javascript
-function PlanetsExtension(extensionMeta) {
- this._init(extensionMeta);
-}
-
-PlanetsExtension.prototype = {
- __proto__ = PanelMenu.Button.prototype,
-
- _init: function(extensionMeta) {
- PanelMenu.Button.prototype._init.call(this, 0.0);
-
- this.extensionMeta = extensionMeta;
-
- this.panelContainer = new St.BoxLayout({style_class: 'panel-box'});
- this.actor.add_actor(this.panelContainer);
- this.actor.add_style_class_name('panel-status-button');
-
- this.panelLabel = new St.Label({
- text: 'Loading',
- y_align: Clutter.ActorAlign.CENTER
- });
-
- this.panelContainer.add(this.panelLabel);
- }
-};
-```
-
-Here we extend the Button class of panelMenu, so we will be able to do
-some action upon activate.
-
-The only parameter passed to the parent’s `_init()` function is
-`menuAlignment`, with the value `0.0`, which is used to position the
-menu arrow. (_Note: I cannot find any documentation on this, but it
-seems that with the value `0.0`, a menu arrow is not added._)
-
-The extension class in its current form is capable of creating the
-actual panel button displaying the text “Loading” in its center.
-
-## Loading up the extension
-
-Now with all the necessary import lines added:
-
-```javascript
-// The PanelMenu module that contains Button
-const PanelMenu = imports.ui.panelMenu;
-// The St class that contains lots of UI functions
-const St = imports.gi.St;
-// Clutter, which is used for displaying everything
-const Clutter = imports.gi.Clutter;
-```
-
-As soon as this file is ready, you can restart your Shell (press
-Alt-F2 and enter the command `r`), and load the extension with
-e.g. the GNOME Tweak Tool. You will see the Planets button on the
-right. This little label showing the static text “Planets”, however,
-is pretty boring, so let’s add some action.
-
-## Adding some periodical change
-
-Since the planets’ position continuously change, we should update our
-widget every minute or so. Let’s patch our `_init()` a bit:
-
-```javascript
-this.last_update = 0;
-
-MainLoop.timeout_add(1, Lang.bind(this, function() {
- this.last_update++;
- this.panelLabel.set_text("Update_count: " + this.last_update);
-}))
-```
-
-This, of course, needs a new import line for `MainLoop` to become available:
-
-```javascript
-const MainLoop = imports.mainloop;
-const Lang = imports.lang;
-```
-
-Now if you restart your Shell, your brand new extension will increase
-its counter every second. This, however, presents some problems.
-
-SWE GLib queries can sometimes be expensive, both in CPU and disk
-operations, so updating our widget every second may present problems.
-Also, planets don’t go **that** fast. We may update our timeout value
-from `1` to `60` or something, but why don’t just give our user a chance
-to set it?
-
-## Introducing settings
-
-Getting settings from `GSettings` is barely straightforward, especially
-for software installed in a non-GNOME directory (which includes
-extensions). To make our lives easier, I copied over a
-[convenience library](https://github.com/projecthamster/shell-extension/blob/master/convenience.js)
-from the [Hamster project](https://projecthamster.wordpress.com/)’s
-extension, originally written by Giovanni Campagna. The relevant
-function here is `getSettings()`:
-
-```javascript
-/**
- * getSettings:
- * @schema: (optional): the GSettings schema id
- *
- * Builds and return a GSettings schema for @schema, using schema files
- * in extensionsdir/schemas. If @schema is not provided, it is taken from
- * metadata['settings-schema'].
- */
-function getSettings(schema) {
- let extension = ExtensionUtils.getCurrentExtension();
-
- schema = schema || extension.metadata['settings-schema'];
-
- const GioSSS = Gio.SettingsSchemaSource;
-
- // check if this extension was built with "make zip-file", and thus
- // has the schema files in a subfolder
- // otherwise assume that extension has been installed in the
- // same prefix as gnome-shell (and therefore schemas are available
- // in the standard folders)
- let schemaDir = extension.dir.get_child('schemas');
- let schemaSource;
- if (schemaDir.query_exists(null))
- schemaSource = GioSSS.new_from_directory(schemaDir.get_path(),
- GioSSS.get_default(),
- false);
- else
- schemaSource = GioSSS.get_default();
-
- let schemaObj = schemaSource.lookup(schema, true);
- if (!schemaObj)
- throw new Error('Schema ' + schema + ' could not be found for extension '
- + extension.metadata.uuid + '. Please check your installation.');
-
- return new Gio.Settings({ settings_schema: schemaObj });
-}
-```
-
-You can either incorporate this function into your `extension.js` file,
-or just use `convenience.js` file like I (and the Hamster applet) did
-and import it:
-
-```javascript
-const ExtensionUtils = imports.misc.extensionUtils;
-const Me = ExtensionUtils.getCurrentExtension;
-const Convenience = Me.imports.convenience;
-```
-
-Now let’s create the settings definition. GSettings schema files are XML
-files. We want to add only one settings for now, the refresh interval.
-
-```xml
-
-
-
-
- 30
- Refresh interval of planet data
- Interval in seconds. Sets how often the planet positions are recalculated. Setting this too low (e.g. below 30) may raise performance issues.
-
-
-
-```
-you need to compile these settings with
-
- glib-compile-schemas --strict schemas/
-
-Now let’s utilize this new setting. In the extension’s `_init()`
-function, add the following line:
-
-```javascript
-this._settings = Convenience.getSettings();
-```
-
-And, for `getSettings()` to work correctly, we also need to extend our
-`metadata.json` file:
-
-```json
- "settings-schema": "planets"
-```
-
-After another restart (please, GNOME guys, add an option to reload
-extensions!), your brand new widget will refresh every 30 seconds.
-
-## Displaying the planet positions
-
-## The settings panel
-
-## Start an application
diff --git a/_drafts/writing-an-sdk.md b/_drafts/writing-an-sdk.md
deleted file mode 100644
index d1a9991..0000000
--- a/_drafts/writing-an-sdk.md
+++ /dev/null
@@ -1,67 +0,0 @@
----
-layout: post
-title: "Lessens you learn while writing an SDK"
-date: 2016-03-19 12:34:56
-tags: [development]
-published: false
-author:
- name: Gergely Polonkai
- email: gergely@polonkai.eu
----
-
-In the last few months I’ve been working on a GLib based SDK for
-client applications that want to communicate with a Matrix.org
-homeserver.
-
-For whoever doesn’t know it, Matrix is a decentralized network of
-servers (Homeservers). Clients can connect to them via HTTP and send
-messages (events, in Matrix terminology) to each other. They are
-called events because these messages can be pretty much anything from
-instant messages through automated notifications to files or, well,
-actual events (such as a vCalendar); anything that you can serialize
-to JSON can go through this network.
-
-My original intention was to integrate Matrix based chat into
-Telepathy, a DBus based messaging framework used by e.g. the GNOME
-desktop (more specifically Empathy, GNOME's chat client.) After
-announcing my plans among the Matrix devs, I quickly learned some
-things:
-
-1. they are more than open to any development ideas
-1. they really wanted to see this working
-1. they would have been happy if there were a GLib or Qt based SDK
-
-With my (far from complete) knowledge in GLib I decided to move on
-with this last point, hoping that it will help me much when I finally
-implement the Telepathy plugin.
-
-## Matrix devs are open minded
-
-What I learned very quickly is that Matrix devs are very open minded
-folks from different parts of the world. They are all individuals with
-their own ideas, experiences and quirks, yet, when it comes to that,
-they steer towards their goals as a community. Thus, getting
-additional information from them while reading the spec was super
-easy.
-
-## The specification is easy to understand
-
-Except when it is not. For these cases, see the previous point.
-
-Jokes asidu, anyone who worked with communications protocols or JSON
-APIs before can get along with it fast. The endpoints are all
-documented, and if something is unclear, they are happy to help
-(especially if you patch up the spec afterwards.)
-
-
-## Copying the SDK for a different language is not (always) what you want
-
-I started my SDK in C, trying to mimic the Python SDK. This was a
-double fail: the Python SDK was a volatile WiP, and C and Python are
-fundamentally different.
-
-During the upcoming weeks this became clear and I switched to the Vala
-language. It is much easier to write GObject based stuff in Vala,
-although I had to fall back to C to get some features working. I also
-planned and implemented a more object oriented API, which is easier to
-use in the GObject world.
\ No newline at end of file
diff --git a/_includes/about.html b/_includes/about.html
deleted file mode 100644
index b17fdb9..0000000
--- a/_includes/about.html
+++ /dev/null
@@ -1,27 +0,0 @@
-
- Gergely Polonkai is a systems engineer of a telco company, and
- also a freelancer self- and software developer.
-
-
-
- He is learning about different IT subjects since the late
- 1990s. These include web development, application building,
- systems engineering, IT security and many others. He also dug his
- nose deeply into free software, dealing with different types of
- Linux and its applications,
- while also writing and contributing to some open source projects.
-
-
-
- On this site he is writing posts about different stuff he faces
- during work (oh my, yet another IT solutions blog), hoping they
- can help others with their job, or just to get along with their
- brand new netbook that shipped with Linux.
-
-
-
- “I believe one can only achieve success if they follow their own
- instincts and listen to, but not bend under others’ opinions. If
- you change your course just because someone says so, you are
- following their instincts, not yours.”
-
-
-{% if site.tags[page.tag] %}
-{% assign posts = site.tags[page.tag] %}
-{% include post-list.html %}
-{% else %}
-No posts with this tag.
-{% endif %}
diff --git a/_layouts/story.html b/_layouts/story.html
deleted file mode 100644
index d238b3f..0000000
--- a/_layouts/story.html
+++ /dev/null
@@ -1,8 +0,0 @@
----
-layout: default
----
-
- {{ page.title }}
- {% include read_time.html %}
-
-{{ content }}
diff --git a/_make_tags.sh b/_make_tags.sh
deleted file mode 100644
index 08ac828..0000000
--- a/_make_tags.sh
+++ /dev/null
@@ -1,43 +0,0 @@
-#! /bin/sh
-#
-# Find all tags in all posts under _posts, and generate a file for
-# each under blog/tag. Also, if a tag page does not contain the tag:
-# or layout: keywords, the script will include them in the front
-# matter.
-
-layout="posts-by-tag"
-
-for tag in `grep -h ^tags: _posts/* | sed -re 's/^tags: +\[//' -e 's/\]$//' -e 's/, /\n/g' | sort | uniq`
-do
- tag_file="blog/tag/${tag}.md"
- echo -n "[$tag] "
-
- if [ ! -f $tag_file ]
- then
- echo "creating ($tag_file)"
-
- cat < $tag_file
----
-layout: $layout
-tag: $tag
----
-EOF
- else
- updated=0
- if ! egrep "^tag: +${tag}$" $tag_file 2>&1 > /dev/null; then
- echo "adding tag"
- sed -i "0,/---/! s/---/tag: $tag\\n---/" $tag_file
- updated=1
- fi
-
- if ! egrep "^layout: +" $tag_file 2>&1 > /dev/null; then
- echo "adding layout"
- sed -i "0,/---/! s/---/layout: $layout\\n---/" $tag_file
- updated=1
- fi
-
- if [ $updated = 0 ]; then
- echo ""
- fi
- fi
-done
diff --git a/_posts/2011-05-12-ethical-hacking-2011.markdown b/_posts/2011-05-12-ethical-hacking-2011.markdown
deleted file mode 100644
index b723983..0000000
--- a/_posts/2011-05-12-ethical-hacking-2011.markdown
+++ /dev/null
@@ -1,29 +0,0 @@
----
-layout: post
-title: "Ethical Hacking 2012"
-date: 2011-05-12 20:54:42
-tags: [conference]
-permalink: /blog/2011/5/12/ethical-hacking-2011
-published: true
-author:
- name: Gergely Polonkai
- email: gergely@polonkai.eu
----
-
-Today I went to the Ethical Hacking conference with my boss. It was my first
-appearance at such conferences, but I hope there will be more. Although we
-just started to redesign our IT security infrastructure with a 90% clear goal,
-it was nice to hear that everything is vulnerable. I was thinking if we should
-sell all our IT equipments, fire all our colleagues (you know, to prevent
-social engineering), and move to the South Americas to herd llamas or sheep,
-so the only danger would be some lurking pumas or jaguars. Or I simply leave
-my old background image on my desktop, from the well-known game, which says:
-Trust is a weakness.
-
-Anyways, the conference was really nice. We heard about the weaknesses of
-Android, Oracle, and even FireWire. They showed some demos about everything,
-exploited some free and commercial software with no problem at all. We have
-seen how much power the virtualisation admin has (although I think it can be
-prevented, but I’m not sure yet). However, in the end, we could see that the
-Cloud is secure (or at least it can be, in a few months or so), so I’m not
-totally pessimistic. See you next time at Hacktivity!
diff --git a/_posts/2011-05-12-gentoo-hardened-desktop-with-gnome-3-round-one.markdown b/_posts/2011-05-12-gentoo-hardened-desktop-with-gnome-3-round-one.markdown
deleted file mode 100644
index cbf6253..0000000
--- a/_posts/2011-05-12-gentoo-hardened-desktop-with-gnome-3-round-one.markdown
+++ /dev/null
@@ -1,88 +0,0 @@
----
-layout: post
-title: "Gentoo hardened desktop with GNOME 3 – Round one"
-date: 2011-05-12 20:32:41
-tags: [gentoo, gnome3, selinux]
-permalink: /blog/2011/5/12/gentoo-hardened-desktop-with-gnome-3-round-one
-published: true
-author:
- name: Gergely Polonkai
- email: gergely@polonkai.eu
----
-
-After having some hard times with Ubuntu (upgrading from 10.10 to 11.04), I
-decided to switch back to my old friend, Gentoo. As I’m currently learning
-about Linux hardening, I decided to use the new SELinux profile, which
-supports the v2 reference policy.
-
-Installation was pretty easy, using the [Gentoo x86
-Handbook](http://www.gentoo.org/doc/hu/handbook/handbook-x86.xml). This profile
-automatically turns on the `USE=selinux` flag (so does the old SELinux
-profile), but deprecated `FEATURE=loadpolicy` (which is turned on by the
-profile, so portage will complain about it until you disable it in
-`/etc/make.conf`).
-
-For the kernel, I chose `hardened-sources-2.6.37-r7`. This seems to be recent
-enough for my security testing needs. I turned on both SELinux, PaX and
-grsecurity. So far, I have no problem with it, but I don’t have X installed
-yet, which will screw up things for sure.
-
-After having those hard times with Ubuntu mentioned before, I decided not to
-install Grub2 yet, as it renders things unusable (eg. my Windows 7
-installation, which I sometimes need at the office). So I installed Grub 0.97
-(this is the only version marked as stable, as I remember), touched
-`/.autorelabel`, and reboot.
-
-My first mistake was using an UUID as the root device on the kernel parameter
-list (I don’t want to list all the small mistakes like forgetting to include to
-correct SATA driver from my kernel and such). Maybe I was lame, but after
-including `/dev/sda5` instead of the UUID thing, it worked like…
-
-Well, charm would not be the good word. For example, I forgot to install the
-lvm2 package, so nothing was mounted except my root partition. After I
-installed it with the install CD, I assumed everything will be all right, but
-I was wrong.
-
-udev and LVM is a critical point in a hardened environment. udev itself
-doesn’t want to work without the `CONFIG_DEVFS_TEMPFS=y` kernel option, so I
-also had to change that. It seemed that it can be done without the install CD,
-as it compiled the kernel with no problems. However, when it reached the point
-when it compresses the kernel with gzip, it stopped with a `Permission denied`
-message (although it was running with root privileges).
-
-The most beautiful thing in the hardened environment with Mandatory Access
-Control enabled) is that root is not a real power user any more by default.
-You can get this kind of messages many times. There are many tools to debug
-these, I will talk about these later.
-
-So, my gzip needed a fix. After digging a bit on the Internet, I found that
-the guilty thing is text relocation, which can be corrected if gzip is
-compiled with PIC enabled. Thus, I turned on `USE=pic` flag globally, and
-tried to remerge gzip. Of course it failed, as it had to use gzip to unpack
-the gzip sources. So it did when I tried to install the PaX tools and gradm to
-turn these checks off. The install CD came to the rescue again, with which I
-successfully recompiled gzip, and with this new gzip, I compressed my new
-kernel, with which udev started successfully. So far, so good, let’s try to
-reboot!
-
-Damn, LVM is still not working. So I decided to finally consult the Gentoo
-hardened guide. It says that the LVM startup scripts under `/lib/rcscripts/…`
-must be modified, so LVM will put its lock files under `/etc/lvm/lock` instead
-of `/dev/.lvm`. After this step and a reboot, LVM worked fine (finally).
-
-The next thing was the file system labelling. SELinux should automatically
-relabel the entire file system at boot time whenever it finds the
-`/.autorelabel` file. Well, in my case it didn’t happen. After checking the
-[Gentoo Hardening](http://wiki.gentoo.org/wiki/Hardened_Gentoo) docs, I realised that the `rlpkg` program does exactly the same
-(as far as I know, it is designed specifically for Gentoo). So I ran `rlpkg`,
-and was kind of shocked. It says it will relabel ext2, ext3, xfs and JFS
-partitions. Oh great, no ext4 support? Well, consulting the forums and adding
-some extra lines to `/etc/portage/package.keywords` solved the problem (`rlpkg`
-and some dependencies had to have the `~x86` keyword set). Thus, `rlpkg`
-relabelled my file systems (I checked some directories with `ls -lZ`, it seemed
-good for me).
-
-Now it seems that everything is working fine, except the tons of audit
-messages. Tomorrow I will check them with `audit2why` or `audit2allow` to see if
-it is related with my SELinux lameness, or with a bug in the policy included
-with Gentoo.
diff --git a/_posts/2011-05-13-zabbix-performance-tip.markdown b/_posts/2011-05-13-zabbix-performance-tip.markdown
deleted file mode 100644
index 198c427..0000000
--- a/_posts/2011-05-13-zabbix-performance-tip.markdown
+++ /dev/null
@@ -1,35 +0,0 @@
----
-layout: post
-title: "Zabbix performance tip"
-date: 2011-05-13 19:03:31
-tags: [zabbix, monitoring]
-permalink: /blog/2011/5/13/zabbix-performance-tip
-published: true
-author:
- name: Gergely Polonkai
- email: gergely@polonkai.eu
----
-
-Recently I have switched from [MRTG](http://oss.oetiker.ch/mrtg/) + [Cacti](http://www.cacti.net/) + [Nagios](http://www.nagios.org/) + [Gnokii](http://www.gnokii.org/) to [Zabbix](http://www.zabbix.com/), and I
-must say I’m more than satisfied with it. It can do anything the former tools
-did, and much more. First of all, it can do the same monitoring as Nagios did,
-but it does much more fine. It can check several parameters within one
-request, so network traffic is kept down. Also, its web front-end can generate
-any kinds of graphs from the collected data, which took Cacti away. Also, it
-can do SNMP queries (v1-v3), so querying my switches’ port states and traffic
-made easy, taking MRTG out of the picture (I know Cacti can do it either, it
-had historical reasons we had both tools installed). And the best part: it can
-send SMS messages via a GSM modem natively, while Nagios had to use Gnokii.
-The trade-off is, I had to install Zabbix agent on all my monitored machines,
-but I think it worths the price. I even have had to install NRPE to monitor
-some parameters, which can be a pain on Windows hosts, while Zabbix natively
-supports Windows, Linux and Mac OS/X.
-
-So I only had to create a MySQL database (which I already had for NOD32
-central management), and install Zabbix server. Everything went fine, until I
-reached about 1300 monitored parameters. MySQL seemed to be a bit slow on disk
-writes, so my Zabbix “queue” filled up in no time. After reading some forums,
-I decided to switch to PostgreSQL instead. Now it works like charm, even with
-the default Debian settings. However, I will have to add several more
-parameters, and my boss wants as many graphs as you can imagine, so I’m more
-than sure that I will have to fine tune my database later.
diff --git a/_posts/2011-05-18-gentoo-hardened-desktop-with-gnome-3-round-two.markdown b/_posts/2011-05-18-gentoo-hardened-desktop-with-gnome-3-round-two.markdown
deleted file mode 100644
index 46b2436..0000000
--- a/_posts/2011-05-18-gentoo-hardened-desktop-with-gnome-3-round-two.markdown
+++ /dev/null
@@ -1,29 +0,0 @@
----
-layout: post
-title: "Gentoo hardened desktop with GNOME 3 – Round two"
-date: 2011-05-18 10:28:14
-tags: [gentoo, gnome3, selinux]
-permalink: /blog/2011/5/18/gentoo-hardened-desktop-with-gnome-3-round-two
-published: true
-author:
- name: Gergely Polonkai
- email: gergely@polonkai.eu
----
-
-After several hours of `package.keywords`/`package.use` editing and package
-compiling, I managed to install GNOME 3 on my notebook. Well, I mean, the
-GNOME 3 packages. Unfortunately the fglrx driver didn’t seem to recognise my
-ATI Mobility M56P card, and the open source driver didn’t want to give me GLX
-support. When I finally found some clues on what should I do, I had to use my
-notebook for work, so I installed Fedora 14 on it. Then I realised that GNOME
-3 is already included in Rawhide (Fedora 15), so I quickly downloaded and
-installed that instead. Now I have to keep this machine in a working state for
-a few days, so I will learn SELinux stuff in its native environment.
-
-When I installed Fedora 14, the first AVC message popped up after about ten
-minutes. That was a good thing, as I wanted to see `setroubleshoot` in action.
-However, in Fedora 15, the AVC bubbles didn’t show up even after a day. I
-raised my left eyebrow and said that’s impossible, SELinux must be disabled.
-And it’s not! It’s even in enforcing mode! And it works just fine. I like it,
-and I hope I will be able to get the same results with Gentoo if I can get
-back to testing…
diff --git a/_posts/2011-05-27-citrix-xenserver-vs-debian-5-0-upgrade-to-6-0.markdown b/_posts/2011-05-27-citrix-xenserver-vs-debian-5-0-upgrade-to-6-0.markdown
deleted file mode 100644
index ea5f94a..0000000
--- a/_posts/2011-05-27-citrix-xenserver-vs-debian-5-0-upgrade-to-6-0.markdown
+++ /dev/null
@@ -1,41 +0,0 @@
----
-layout: post
-title: "Citrix XenServer 5.5 vs. Debian 5.0 upgrade to 6.0"
-date: 2011-05-27 17:33:41
-tags: [citrix-xenserver, debian]
-permalink: /blog/2011/5/27/citrix-xenserver-vs-debian-5-0-upgrade-to-6-0
-published: true
-author:
- name: Gergely Polonkai
- email: gergely@polonkai.eu
----
-
-Few weeks ago I’ve upgraded two of our Debian based application servers from
-5.0 to 6.0. Everything went fine, as the upgraded packages worked well with
-the 4.2 JBoss instances. For the new kernel we needed a reboot, but as the
-network had to be rebuilt, I postponed this reboot until the network changes.
-With the network, everything went fine again, we successfully migrated our
-mail servers behind a firewall. Also the Xen server (5.5.0, upgrade to 5.6
-still has to wait for a week or so) revolted well with some storage disks
-added. But the application servers remained silent…
-
-After checking the console, I realised that they don’t have an active console.
-And when I tried to manually start them, XenServer refused with a message
-regarding pygrub.
-
-To understand the problem, I had to understand how XenServer boots Debian. It
-reads the grub.conf on the first partition’s root or `/boot` directory, and
-starts the first option, without asking (correct me, if I’m mistaken
-somewhere). However, this pygrub thing can not parse the new, grub2 config.
-This is kinda frustrating.
-
-For the first step, I quickly installed a new Debian 5.0 system from my
-template. Then I attached the disks of the faulty virtual machine, and mounted
-all its partitions. This way I could reach my faulty 6.0 system with a chroot
-shell, from which I could install the `grub-legacy` package instead of grub,
-install the necessary kernel and XenServer tools (which were missing from both
-machines somehow), then halt the rescue system, and start up the original
-instance.
-
-Next week I will do an upgrade on the XenServer to 5.6.1. I hope no such
-problems will occur.
diff --git a/_posts/2011-05-27-oracle-database-incompatible-with-oracle-linux.markdown b/_posts/2011-05-27-oracle-database-incompatible-with-oracle-linux.markdown
deleted file mode 100644
index 7ef78d4..0000000
--- a/_posts/2011-05-27-oracle-database-incompatible-with-oracle-linux.markdown
+++ /dev/null
@@ -1,25 +0,0 @@
----
-layout: post
-title: "Oracle Database “incompatible” with Oracle Linux?"
-date: 2011-05-27 17:53:31
-tags: [linux, oracle]
-permalink: /blog/2011/5/27/oracle-database-incompatible-with-oracle-linux
-published: true
-author:
- name: Gergely Polonkai
- email: gergely@polonkai.eu
----
-
-Today I gave a shot to install [Oracle
-Linux](http://www.oracle.com/us/technologies/linux/overview/index.html). I thought I could easily install
-an Oracle DBA on it. Well, I was naive.
-
-As only the 5.2 version is supported by XenServer 5.5, I downloaded that
-version of Oracle Linux. Installing it was surprisingly fast and easy, it
-asked almost nothing, and booted without any problems.
-
-After this came the DBA, 10.2, which bloated an error message in my face
-saying that this is an unsupported version of Linux. Bah.
-
-Is it only me, or is it really strange that Oracle doesn’t support their own
-distro?
diff --git a/_posts/2011-06-10-proxy-only-non-existing-files-with-mod-proxy-and-mod-rewrite.markdown b/_posts/2011-06-10-proxy-only-non-existing-files-with-mod-proxy-and-mod-rewrite.markdown
deleted file mode 100644
index 7e182de..0000000
--- a/_posts/2011-06-10-proxy-only-non-existing-files-with-mod-proxy-and-mod-rewrite.markdown
+++ /dev/null
@@ -1,22 +0,0 @@
----
-layout: post
-title: "Proxy only non-existing files with mod_proxy and mod_rewrite"
-date: 2011-06-10 14:20:43
-tags: [apache]
-permalink: /blog/2011/6/10/proxy-only-non-existing-files-with-mod-proxy-and-mod-rewrite
-published: true
-author:
- name: Gergely Polonkai
- email: gergely@polonkai.eu
----
-
-Today I got an interesting task. I had to upload some pdf documents to a site.
-The domain is ours, but we don’t have access to the application server that is
-hosting the page yet. Until we get it in our hands, I did a trick.
-
-I enabled `mod_rewrite`, `mod_proxy` and `mod_proxy_http`, then added the following
-lines to my apache config:
-
-{% gist 47680bfa44eb29708f20 redirect-non-existing.conf %}
-
-I’m not totally sure it’s actually secure, but it works for now.
diff --git a/_posts/2011-09-18-inverse-of-sort.markdown b/_posts/2011-09-18-inverse-of-sort.markdown
deleted file mode 100644
index 956a410..0000000
--- a/_posts/2011-09-18-inverse-of-sort.markdown
+++ /dev/null
@@ -1,30 +0,0 @@
----
-layout: post
-title: "Inverse of `sort`"
-date: 2011-09-18 14:57:31
-tags: [linux, command-line]
-permalink: /blog/2011/9/18/inverse-of-sort
-published: true
-author:
- name: Gergely Polonkai
- email: gergely@polonkai.eu
----
-
-I’m using \*NIX systems for about 14 years now, but it can still show me new
-things. Today I had to generate a bunch of random names. I’ve create a small
-perl script which generates permutations of some usual Hungarian first and
-last names, occasionally prefixing it with a ‘Dr.’ title or using double first
-names. For some reasons I forgot to include uniqueness check in the script.
-When I ran it in the command line, I realized the mistake, so I appended
-`| sort | uniq` to the command line. So I had around 200 unique names, but in
-alphabetical order, which was awful for my final goal. Thus, I tried shell
-commands like rand to create a random order, and when many of my tries failed,
-the idea popped in my mind (not being a native English speaker): “I don’t have
-to create «random order», but «shuffle the list». So I started typing `shu`,
-pressed Tab in the Bash shell, and voilà! `shuf` is the winner, it does just
-exactly what I need:
-
- **NAME**
- shuf - generate random permutations
-
-Thank you, Linux Core Utils! :)
diff --git a/_posts/2011-12-11-why-you-should-always-test-your-software-with-production-data.markdown b/_posts/2011-12-11-why-you-should-always-test-your-software-with-production-data.markdown
deleted file mode 100644
index 800477d..0000000
--- a/_posts/2011-12-11-why-you-should-always-test-your-software-with-production-data.markdown
+++ /dev/null
@@ -1,16 +0,0 @@
----
-layout: post
-title: "Why you should always test your software with production data"
-date: 2011-12-11 12:14:51
-tags: [development, testing, ranting]
-permalink: /blog/2011/12/11/why-you-should-always-test-your-software-with-production-data
-published: true
-author:
- name: Gergely Polonkai
- email: gergely@polonkai.eu
----
-
-I’m writing a software for my company in PHP, using the Symfony 2 framework.
-I’ve finished all the work, created some sample data, it loaded perfectly. Now
-I put the whole thing into production and tried to upload the production data
-into it. Guess what… it didn’t load.
diff --git a/_posts/2012-03-20-php-5-4-released.markdown b/_posts/2012-03-20-php-5-4-released.markdown
deleted file mode 100644
index 3e931f5..0000000
--- a/_posts/2012-03-20-php-5-4-released.markdown
+++ /dev/null
@@ -1,29 +0,0 @@
----
-layout: post
-title: "PHP 5.4 released"
-date: 2012-03-20 13:31:12
-tags: [php]
-permalink: /blog/2012/3/20/php-5-4-released
-published: true
-author:
- name: Gergely Polonkai
- email: gergely@polonkai.eu
----
-
-After a long time of waiting, PHP announced 5.4 release on 1 March (also,
-today they announced that they finally migrate to Git, which is sweet from my
-point of view, but it doesn’t really matter).
-
-About a year ago we became very agressive towards a developer who created our
-internal e-learning system. Their database was very insecure, and they didn’t
-really follow industry standards in many ways. Thus, we forced them to move
-from Windows + Apache 2.0 + PHP 5.2 + MySQL 4.0 to Debian Linux 6.0 + Apache
-2.2 + PHP 5.3 + MySQL 5.1. It was fun (well, from our point of view), as their
-coders… well… they are not so good. The code that ran “smoothly” on the
-old system failed at many points on the new one. So they code and code, and
-write more code. And they still didn’t finish. And now 5.4 is here. Okay, I
-know it will take some time to get into the Debian repositories, but it’s
-here. And they removed `register_globals`, which will kill that funny code again
-at so many points that they will soon get to rewrite the whole code to make it
-work. And I just sit here in my so-much-comfortable chair, and laugh. Am I
-evil?
diff --git a/_posts/2012-03-27-fast-world-fast-updates.markdown b/_posts/2012-03-27-fast-world-fast-updates.markdown
deleted file mode 100644
index 43872f7..0000000
--- a/_posts/2012-03-27-fast-world-fast-updates.markdown
+++ /dev/null
@@ -1,34 +0,0 @@
----
-layout: post
-title: "Fast world, fast updates"
-date: 2012-03-27 06:18:43
-tags: [linux]
-permalink: /blog/2012/3/27/fast-world-fast-updates
-published: true
-author:
- name: Gergely Polonkai
- email: gergely@polonkai.eu
----
-
-We live in a fast world, that’s for sure. When I first heard about Ubuntu
-Linux and their goals, I was happy: they gave a Debian to everyone, but in
-different clothes. It had fresh software in it, and even they gave support of
-a kind. It was easy to install and use, even if one had no Linux experience
-before. So people liked it. I’ve even installed it on some of my servers
-because of the new package versions that came more often. Thus I got an up to
-date system. However, it had a price. After a while, security updates came
-more and more often, and when I had a new critical update every two or three
-days, I’ve decided to move back to Debian. Fortunately I did this at the time
-of a new release, so I didn’t really loose any features.
-
-After a few years passed, even Debian is heading this very same way. But as I
-see, the cause is not the same. It seems that upstream software is hitting
-these bugs, and even the Debian guys don’t have the time to check for them. At
-the time of a GNOME version bump (yes, GNOME 3 is a really big one for the
-UN\*X-like OSes), when hundreds of packages need to be checked, security bugs
-show off more often. On the other hand however, Debian is releasing a new
-security update every day (I had one on each of the last three days). This, of
-course, is good from one point of view as we get a system that is more secure,
-but most administrators don’t have maintenance windows this often. I can think
-of some alternatives like Fedora, but do I really have to change? Dear fellow
-developers, please code more carefully instead!
diff --git a/_posts/2012-06-14-wordpress-madness.markdown b/_posts/2012-06-14-wordpress-madness.markdown
deleted file mode 100644
index b684763..0000000
--- a/_posts/2012-06-14-wordpress-madness.markdown
+++ /dev/null
@@ -1,28 +0,0 @@
----
-layout: post
-title: "Wordpress madness"
-date: 2012-06-14 06:40:12
-tags: [wordpress, ranting]
-permalink: /blog/2012/6/14/wordpress-madness
-published: true
-author:
- name: Gergely Polonkai
- email: gergely@polonkai.eu
----
-
-I’m a bit fed up that I had to install [MySQL](http://www.mysql.com/) on my
-server to have [Wordpress](http://wordpress.org/) working, so I’ve Googled a
-bit to find a solution for my pain. I found
-[this](http://codex.wordpress.org/Using_Alternative_Databases). I don’t know when
-this post was written, but I think it’s a bit out of date. I mean come on, PDO
-is the part of PHP for ages now, and they say adding a DBAL to the dependencies
-would be a project as large as (or larger than) WP itself. Well,
-yes, but PHP is already a dependency, isn’t it? Remove it guys, it’s too
-large!
-
-Okay, to be serious… Having a heavily MySQL dependent codebase is a bad
-thing in my opinion, and changing it is no easy task. But once it is done, it
-would be a child’s play to keep it up to date, and to port WP to other
-database backends. And it would be more than enough to call it 4.0, and
-raising version numbers fast is a must nowadays (right, Firefox and Linux
-Kernel guys?)
diff --git a/_posts/2012-06-18-ssh-login-failed-on-red-hat-enterprise-linux-6-2.markdown b/_posts/2012-06-18-ssh-login-failed-on-red-hat-enterprise-linux-6-2.markdown
deleted file mode 100644
index 6fc605f..0000000
--- a/_posts/2012-06-18-ssh-login-failed-on-red-hat-enterprise-linux-6-2.markdown
+++ /dev/null
@@ -1,28 +0,0 @@
----
-layout: post
-title: "SSH login FAILed on Red Had Enterprise Linux 6.2"
-date: 2012-06-18 18:28:45
-tags: [linux, selinux, ssh, red-hat]
-permalink: /blog/2012/6/18/ssh-login-failed-on-red-hat-enterprise-linux-6-2
-published: true
-author:
- name: Gergely Polonkai
- email: gergely@polonkai.eu
----
-
-Now this was a mistake I should not have done…
-
-About a month ago I have moved my AWS EC2 machine from Amazon Linux to RHEL
-6.2. This was good. I have moved all my files and stuff, recreated my own
-user, everything was just fine. Then I copied my
-[gitosis](https://github.com/tv42/gitosis) account (user `git` and its home
-directory). Then I tried to log in. It failed. I was blaming OpenSSH for a week
-or so, changed the config file in several ways, tried to change the permissions
-on `~git/.ssh/*`, but still nothing. Permission were denied, I was unable to
-push any of my development changes. Now after a long time of trying, I
-coincidently `tail -f`-ed `/var/log/audit/audit.log` (wanted to open `auth.log`
-instead) and that was my first good point. It told me that `sshd` was unable to
-read `~git/.ssh/authorized_keys`, which gave me the idea to run `restorecon` on
-`/home/git`. It solved the problem.
-
-All hail SELinux and RBAC!
diff --git a/_posts/2012-06-22-upgrades-requiring-a-reboot-on-linux-at-last.markdown b/_posts/2012-06-22-upgrades-requiring-a-reboot-on-linux-at-last.markdown
deleted file mode 100644
index 21b9ee5..0000000
--- a/_posts/2012-06-22-upgrades-requiring-a-reboot-on-linux-at-last.markdown
+++ /dev/null
@@ -1,35 +0,0 @@
----
-layout: post
-title: "Upgrades requiring a reboot on Linux? At last!"
-date: 2012-06-22 20:04:51
-tags: [linux]
-permalink: /blog/2012/6/22/upgrades-requiring-a-reboot-on-linux-at-last
-published: true
-author:
- name: Gergely Polonkai
- email: gergely@polonkai.eu
----
-
-I’ve recently received an article on Google+ about Fedora’s new idea: package
-upgrades that require a reboot. The article said that Linux guys have lost
-their primary adoo: “Haha! I don’t have to reboot my system to install system
-upgrades!” My answer was always this: “Well, actually you should…”
-
-I think this can be a great idea if distros implement it well. PackageKit was
-a good first step on this road. That software could easily solve such an
-issue. However, it is sooo easy to do it wrong. The kernel, of course, can not
-be upgraded online (or could it be? I have some theories on this subject,
-wonder if it can be implemented…), but other packages are much different.
-From the users’ point of view the best would be if the packages would be
-upgraded in the background seemlessly. E.g. PackageKit should check if the
-given executable is running. If not, it should upgrade it, while notifying the
-user like “Hey dude, don’t start Anjuta now, I’m upgrading it!”, or simply
-denying to start it. Libraries are a bit different, as PackageKit should check
-if any running executables are using the library. Meanwhile, PK should also
-keep a notification somewhere telling the users that some packages could be
-upgraded, but without stopping this-and-that, it can not be done.
-
-I know these things are easier said than done. But I think (a) users should
-tell such ideas to the developers and (b) developers (mostly large companies,
-like Microsoft or Apple) should listen to them, and at least think of these
-ideas. Some users are not as stupid as they think…
diff --git a/_posts/2012-09-05-some-thoughts-about-that-dead-linux-desktop.markdown b/_posts/2012-09-05-some-thoughts-about-that-dead-linux-desktop.markdown
deleted file mode 100644
index 7817a32..0000000
--- a/_posts/2012-09-05-some-thoughts-about-that-dead-linux-desktop.markdown
+++ /dev/null
@@ -1,80 +0,0 @@
----
-layout: post
-title: "Some thoughts about that dead Linux Desktop"
-date: 2012-09-05 09:01:31
-tags: [linux]
-permalink: /blog/2012/9/5/some-thoughts-about-that-dead-linux-desktop
-published: true
-author:
- name: Gergely Polonkai
- email: gergely@polonkai.eu
----
-
-There were some arguments in the near past on [What Killed the Linux
-Desktop](http://tirania.org/blog/archive/2012/Aug-29.html). After reading many
-replies, like [Linus
-Torvalds’](http://www.zdnet.com/linus-torvalds-on-the-linux-desktops-popularity-problems-7000003641/),
-I have my own thoughts, too.
-
-I know my place in the world, especially in the online community. I’m a Linux
-user for about 15 years and a Linux administrator for 10 years now, beginning
-with WindowMaker and something that I remember as GNOME without a version
-number. I have committed some minor code chunks and translations in some minor
-projects, so I’m not really into it from the “write” side (well, until now,
-since I have began to write this blog, and much more, but don’t give a penny
-for my words until you see it).
-
-I’m using Linux since 2.2 and GNOME since 1.whatever. It’s nice that a program
-compiled years ago still runs on today’s Linux kernel, especially if you see
-old DOS/Windows software failing to start on a new Windows 7 machine. I
-understand Linus’ point that breaking external APIs is bad, and I think it can
-work well on the kernel’s level. But the desktop level is much different. As
-the Linux Desktop has such competitors (like OS/X and Windows’ Aero and Metro),
-they have to give something new to the users almost every year to keep up with
-them. Eye candies are a must (yes, of course my techy fellows, they are
-worthless, but users *need* it), and they can not be created without extending
-APIs. And the old API… well, it fades away fast. I don’t really understand
-however, why they have to totally disappear, like
-[GTK_DIALOG_NO_SEPARATOR](http://developer.gnome.org/gtk/stable/GtkDialog.html#GtkDialogFlags)
-in Gtk3. It could be replaced with a 0 value (e.g: it won’t do anything). This
-way my old Gtk2 program could compile with Gtk3 nicely. Also, there could be a
-small software that goes through your source code and warn you about such
-deprecated (and no-doer but still working) things. Porting applications between
-Gtk (and thus, GNOME) versions became a real pain, which makes less enthusiast
-programmers stop developing for Linux. Since I’m a GNOME guy for years, I can
-tell nothing about Qt and KDE, but for the GNOME guys, this is a bad thing. As
-of alternatives, there is Java. No, wait… it turned out recently that [it has
-several security
-bugs](http://www.theregister.co.uk/2012/08/31/critical_flaw_found_in_patched_java).
-Also it’s not that multiplatform as they say (I can’t find the article on
-that at the moment, but I have proof). Also, the JVMs out there eat up so much
-resources, which makes it a bit hard and expensive to use.
-
-Also, I see another problem: those blasted package managers. RPM, DPKG,
-Portage, whatever. What the hell? Why are there so many? Why do developers
-reinvent the wheel? The nave is too small or there are to few spokes? Come on…
-we live in an open source world! Contribute to the one and only package manager
-(which one is that I don’t actually care)! I’m sure the two (three, many)
-bunches of develoeprs could make a deal. Thus, it could become better and
-“outsider” companies would be happier to distribute their software for Linux
-platforms.
-
-And now that we get to the big companies. I don’t really understand them.
-nVidia and ATI made their own closed source drivers for Linux. Some other
-hardware vendors also write Linux drivers, and as the kernel API doesn’t really
-change, they will work for a long time. But what about desktop
-application vendors? Well, they try to stick to a desktop environment or two,
-and if they change too frequently, they stop developing for Linux, like Skype
-did (OK, maybe Skype has other reasons, but you see my point). But why? The
-main part for Linux programs is the Linux kernel and the basic userland like
-libc/stdlib++. If you write graphical software, it will have to use X-Windows.
-Yes, it’s much different in many ways, mostly because they have a… well… pretty
-ugly design by default. But still, it’s the same on every Linux distributions,
-as it became somewhat an industry standard, as it was already on the market
-back in the old UN\*X days. The protocol itself changed just like the Linux
-kernel: almost no change at all, just some new features.
-
-So what kills the Linux desktop in my opinion is these constant wars inside,
-and the lack of support from the outside. Open Source is good, but until these
-(mostly the first) problems are not resolved, Linux Desktop can do nothing on
-the market. It’s a downward spiral hard to escape.
diff --git a/_posts/2012-09-07-how-to-start-becoming-a-web-developer.markdown b/_posts/2012-09-07-how-to-start-becoming-a-web-developer.markdown
deleted file mode 100644
index a7956ea..0000000
--- a/_posts/2012-09-07-how-to-start-becoming-a-web-developer.markdown
+++ /dev/null
@@ -1,76 +0,0 @@
----
-layout: post
-title: "How to start becoming a web developer"
-date: 2012-09-07 18:12:12
-tags: [development, technology]
-permalink: /blog/2012/9/7/how-to-start-becoming-a-web-developer
-published: true
-author:
- name: Gergely Polonkai
- email: gergely@polonkai.eu
----
-
-A friend of mine asked me today how to become a web developer. It took me a
-while, but I made up a checklist. It’s short, but it’s enough for the first
-steps.
-
-#### First of all, learn English
-
-Well, if you read this, maybe this was a bad first point…
-
-#### Choose a language and stick to it!
-
-For the UN\*X/Linux line, there is PHP. It’s free, easy to learn, and has many
-free tools and documentations available. It can be used in a functional or an
-object-oriented way.
-
-C# is another good way to start, but for the Windows line. It’s fully object-
-oriented, and the web is full of tutorials, how-tos and other resources.
-
-#### Learn the basics of the system you are working on
-
-To become a good developer, learn at least the basics of the system you are
-working on. Basic commands can always come in handy. Debugging (yes, you will
-do tons of bugs for sure) can become much easier if you know the huge set of
-tools provided by your OS. You should also try to develop in the chosen
-environment. Chose PHP? Get a Linux desktop! ASP.NET? Get a Windows.
-Everything will be much easier!
-
-#### Learn the basics of the web server you are using
-
-PHP can run on [Apache](http://httpd.apache.org/) (as a module), or any
-CGI-capable webserver, like [lighttpd](http://www.lighttpd.net/) or
-[nginx](http://nginx.org/) (well, it can also run on IIS, but trust me: you
-don’t want that). ASP.NET is designed for IIS, and although some scripts can
-be run under a mono-capable server, it should still stay there.
-
-Whichever you choose, learn the basics! How to start and stop the service,
-basic configuration methods, modules/extensions, and so on. It’s more than sure
-that you will face some issues while developing, so it can never hurt.
-
-#### Keep your versions under control
-
-Version control is critical nowadays. It gives you a basic backup solution,
-can come in handy with debugging, and if you ever want to work in a team, you
-will badly need it.
-
-Subversion is a bit out of date now, and it’s kind of hard to set up.
-
-Git is no easy. You will have to learn a lot of stuff, but basicly it’s just
-another version control system. Just choose if you want to stick to
-merge-then-commit or rebase-then-commit, get a client, and get on the run.
-
-Microsoft’s Team Foundation is another good way if you are working in a team.
-It provides several other features besides version controlling, and is well
-integrated into Visual Studio, which is highly recommended for Windows based
-development.
-
-#### Choose an environment to work in
-
-There are so many good tools out there. You should choose according to the
-language and OS on what you are working on. [Zend
-Studio](http://www.zend.com/en/products/studio) or
-[Netbeans](https://netbeans.org/) are both good tools for PHP development,
-while [Visual Studio](http://www.visualstudio.com/) is a best buy for Windows
-development. Both of these have many ups and downs, but once you get in touch
-with their deeper parts, you will like them.
diff --git a/_posts/2012-09-10-do-not-track-in-ie10-vs-apache.markdown b/_posts/2012-09-10-do-not-track-in-ie10-vs-apache.markdown
deleted file mode 100644
index 336a713..0000000
--- a/_posts/2012-09-10-do-not-track-in-ie10-vs-apache.markdown
+++ /dev/null
@@ -1,19 +0,0 @@
----
-layout: post
-title: "Do-Not-Track in IE10 vs. Apache"
-date: 2012-09-10 20:22:32
-tags: [apache, technology]
-permalink: /blog/2012/9/10/do-not-track-in-ie10-vs-apache
-published: true
-author:
- name: Gergely Polonkai
- email: gergely@polonkai.eu
----
-
-[Apache developer decided not to accept Do-Not-Track headers from IE10
-users](http://arstechnica.com/security/2012/09/apache-webserver-updated-to-ignore-do-not-track-settings-in-ie-10/),
-because it’s enabled by default. So… if I install a plugin that hides the
-fact from the web server that I’m using IE10, I become eligible of using
-it. But if I do this, I simply became eligible because I consciously installed
-that addon, so I could actually use it without hiding the fact. Sorry if
-I’m a bit Philosoraptorish…
diff --git a/_posts/2012-09-16-symfony-2-create-role-and-class-based-acls-with-your-roles-coming-from-the-orm.markdown b/_posts/2012-09-16-symfony-2-create-role-and-class-based-acls-with-your-roles-coming-from-the-orm.markdown
deleted file mode 100644
index 90cc643..0000000
--- a/_posts/2012-09-16-symfony-2-create-role-and-class-based-acls-with-your-roles-coming-from-the-orm.markdown
+++ /dev/null
@@ -1,64 +0,0 @@
----
-layout: post
-title: "Symfony 2 – Create role- and class-based ACLs with your roles coming from the ORM"
-date: 2012-09-16 18:39:25
-tags: [php, symfony]
-permalink: /blog/2012/9/16/symfony-2-create-role-and-class-based-acls-with-your-roles-coming-from-the-orm
-published: true
-author:
- name: Gergely Polonkai
- email: gergely@polonkai.eu
----
-
-During the last weeks I had some serious issues with one of my private Symfony
-2 projects. One of my goals was to create a dynamic security system, e.g my
-administrators wanted to create roles, and grant these roles access to
-different object types (classes) and/or objects.
-
-So I have created a `User` entity, which implements `UserInterface` and
-`AdvancedUserInterface`, the latter for the possibility to enable/disable
-accounts and such. It had a `$roles` property, which was a `ManyToMany` relation
-to the `Role` entity, which implemented `RoleInterface`. Also I have created my
-own role hierarchy service that implements `RoleHierarchyInterface`.
-
-So far so good, first tests. It soon turned out that if `User::getRoles()`
-returns a `DoctrineCollection` as it does by default, then the standard
-
-{% gist 883ace4f35e440f6fe0f WhatEver.php %}
-
-doesn’t work. I know, it should not be hard coded, as my roles and permission
-tables are dynamic, I have just tested. So I fixed my `User` entity so
-`getRoles()` returns an array of `Role` objects instead of the
-`DoctrineCollection`. Also I implemented a `getRolesCollection()` method to
-return the original collection, but I think it will never be used.
-
-After that, I had to implement some more features so I put this task away.
-Then, I tried to create my first ACL.
-
-{% gist 883ace4f35e440f6fe0f WhatEver2.php %}
-
-I was about to check if the user who is logged in has an `OWNER` permission on
-the `User` class.
-
-{% gist 883ace4f35e440f6fe0f WhatEver3.php %}
-
-The ACL was defined based on a role, so everyone who had the `ROLE_ADMIN` role
-should gain access to the user listing page. But they didn’t. It took several
-weeks to find the cause, I have put it on
-[stackoverflow](http://stackoverflow.com/questions/12057795/symfony-2-1-this-getsecurity-context-isgrantedrole-admin-returns-fa)
-and the Symfony Google Group, but no usable answers.
-
-Then I went off for debugging. Setting up NetBeans for xdebug-based PHP
-debugging was real fun under Fedora, but that’s another story. After a while I
-have found that Symfony’s basic access decision manager checks for
-`$role->getRole()` only if `$role` is an instance of
-`Symfony\Component\Security\Core\Role\Role`, instead of checking if the object
-implements `Symfony\Component\Security\Core\Role\RoleInterface`. So I’ve
-checked if the bug is already reported. It turned out that it was, and my
-solution was available in a specific commit about a year ago, but as [Johannes
-Schmitt commented, it would introduce a security
-issue](https://github.com/symfony/symfony/commit/af70ac8d777873c49347ac828a817a400006cbea),
-so it was reverted. Unfortunately neither Johannes Schmitt, nor Fabien
-Potencier (nor anyone else) could (or wanted) to tell about this issue. So the
-final (and somewhat hack-like) solution was to extend
-`Symfony\Component\Security\Core\Role\Role`. And boom! It worked.
diff --git a/_posts/2012-10-07-smsgateway-and-smssender.markdown b/_posts/2012-10-07-smsgateway-and-smssender.markdown
deleted file mode 100644
index 5758193..0000000
--- a/_posts/2012-10-07-smsgateway-and-smssender.markdown
+++ /dev/null
@@ -1,25 +0,0 @@
----
-layout: post
-title: "SmsGateway and SmsSender"
-date: 2012-10-07 00:10:26
-tags: [development, php, symfony]
-permalink: /blog/2012/10/7/smsgateway-and-smssender
-published: true
-author:
- name: Gergely Polonkai
- email: gergely@polonkai.eu
----
-
-I have just uploaded my SmsGateway, SmsSender and SmsSenderBundle packages to
-[GitHub](http://github.com/gergelypolonkai) and
-[Packagist](http://packagist.org). I hope some of you will find it useful.
-
-* SmsGateway
- * [GitHub](https://github.com/gergelypolonkai/smsgateway)
- * [Packagist](https://packagist.org/packages/gergelypolonkai/smsgateway)
-* SmsSender
- * [GitHub](https://github.com/gergelypolonkai/smssender)
- * [Packagist](https://packagist.org/packages/gergelypolonkai/smssender)
-* SmsSenderBundle
- * [GitHub](https://github.com/gergelypolonkai/smssender-bundle)
- * [Packagist](https://packagist.org/packages/gergelypolonkai/smssender-bundle)
diff --git a/_posts/2012-10-13-changing-the-session-cookie-s-name-in-symfony-2.markdown b/_posts/2012-10-13-changing-the-session-cookie-s-name-in-symfony-2.markdown
deleted file mode 100644
index 7a6b462..0000000
--- a/_posts/2012-10-13-changing-the-session-cookie-s-name-in-symfony-2.markdown
+++ /dev/null
@@ -1,20 +0,0 @@
----
-layout: post
-title: "Changing the session cookie’s name in Symfony 2"
-date: 2012-10-13 12:49:28
-tags: [symfony, development]
-permalink: /blog/2012/10/13/changing-the-session-cookie-s-name-in-symfony-2
-published: true
-author:
- name: Gergely Polonkai
- email: gergely@polonkai.eu
----
-
-I have a development server, on which I have several Symfony 2.x projects under
-the same hostname in different directories. Now I’m facing a funny problem
-which is caused by that the cookies Symfony places for each of my projects have
-the same name.
-
-To change this, you will have to modify the `config.yml` file like this:
-
-{% gist c695670ecca2809f7c93 %}
diff --git a/_posts/2012-12-20-symfony-2-configuration-array-of-associative-arrays.markdown b/_posts/2012-12-20-symfony-2-configuration-array-of-associative-arrays.markdown
deleted file mode 100644
index a2af8ec..0000000
--- a/_posts/2012-12-20-symfony-2-configuration-array-of-associative-arrays.markdown
+++ /dev/null
@@ -1,22 +0,0 @@
----
-layout: post
-title: "Symfony 2 Configuration – Array of associative arrays"
-date: 2012-12-20 12:03:23
-tags: [php, symfony]
-permalink: /blog/2012/12/20/symfony-2-configuration-array-of-associative-arrays
-published: true
-author:
- name: Gergely Polonkai
- email: gergely@polonkai.eu
----
-
-Few days ago I have struggled with a problem using Symfony2 configuration. I
-wanted to add the following kind of configuration to `config.yml`:
-
-{% gist 30440e25f7a447730064 config.yml %}
-
-The problem was that the stuff under `transitions` is dynamic, so those
-`hc_cba` and `cba_hc` tags can be pretty much anything. After hitting many
-errors, I came to the solution:
-
-{% gist 30440e25f7a447730064 DynarrayConfiguration.php %}
diff --git a/_posts/2013-01-05-development-man-pages-on-fedora.markdown b/_posts/2013-01-05-development-man-pages-on-fedora.markdown
deleted file mode 100644
index d32b8ce..0000000
--- a/_posts/2013-01-05-development-man-pages-on-fedora.markdown
+++ /dev/null
@@ -1,14 +0,0 @@
----
-layout: post
-title: "Development man pages on Fedora"
-date: 2013-01-05 18:20:41
-tags: [development, fedora]
-permalink: /blog/2013/1/5/development-man-pages-on-fedora
-published: true
-author:
- name: Gergely Polonkai
- email: gergely@polonkai.eu
----
-
-If you use Fedora (like me), and can’t find the development manual pages for
-e.g. `printf(3)` (like me), just `yum install man-pages` (like me).
diff --git a/_posts/2013-01-06-registering-an-enum-type-in-glib-s-type-system.markdown b/_posts/2013-01-06-registering-an-enum-type-in-glib-s-type-system.markdown
deleted file mode 100644
index 87812ce..0000000
--- a/_posts/2013-01-06-registering-an-enum-type-in-glib-s-type-system.markdown
+++ /dev/null
@@ -1,32 +0,0 @@
----
-layout: post
-title: "Registering an enum type in GLib’s type system"
-date: 2013-01-06 02:34:03
-tags: [c, development, glib]
-permalink: /blog/2013/1/6/registering-an-enum-type-in-glib-s-type-system
-published: true
-author:
- name: Gergely Polonkai
- email: gergely@polonkai.eu
----
-
-I faced a problem in my [GLib](https://developer.gnome.org/glib/) self-teaching
-project, [wMUD](https://github.com/gergelypolonkai/wmud) today. I wanted to
-register a signal for a `GObject`, whose handler should accept two `enum`
-parameters for which I had to register a new `GEnum` type in the `GObject` type
-system. However, the [documentation on this
-feature](https://developer.gnome.org/gobject/unstable/gtype-non-instantiable.html)
-(thanks for pointing out goes to hashem on `#gnome-hackers`) is not… uhm…
-obvious. Making the long story short, I have checked with the `GIO` sources for
-an example, and using that, I have created this small, working chunk:
-
-{% gist 47794b6fb94484f8160b client-state.h %}
-
-{% gist 47794b6fb94484f8160b client-state.c %}
-
-Still, it can be made more perfect by using the
-[glib-mkenums](http://developer.gnome.org/gobject/stable/glib-mkenums.html)
-tool. I will read through the GLib Makefiles tomorrow for some hints on
-this.
-
-Edit: you can find the glib-mkenums solution [here]({% post_url 2014-08-16-registering-an-enum-type-in-glib-glib-mkenums-magic %}).
diff --git a/_posts/2013-01-14-git-rm-cached-madness.markdown b/_posts/2013-01-14-git-rm-cached-madness.markdown
deleted file mode 100644
index 0bcb3df..0000000
--- a/_posts/2013-01-14-git-rm-cached-madness.markdown
+++ /dev/null
@@ -1,17 +0,0 @@
----
-layout: post
-title: "git rm --cached madness"
-date: 2013-01-14 21:38:00
-tags: [development, git]
-permalink: /blog/2013/1/14/git-rm-cached-madness
-published: true
-author:
- name: Gergely Polonkai
- email: gergely@polonkai.eu
----
-
-I have recently learned about `git rm --cached`. It’s a very good tool, as it
-removes a file from tracking, without removing your local copy of it. However,
-be warned that if you use `git pull` in another working copy, the file will be
-removed from there! If you accidentally put the configuration of a production
-project, and remove it on your dev machine, it can cause a lot of trouble ;)
diff --git a/_posts/2013-01-17-jms-diextrabundle-s-greppatternfinder-grep-exits-with-status-code-2-on-fedora-18.markdown b/_posts/2013-01-17-jms-diextrabundle-s-greppatternfinder-grep-exits-with-status-code-2-on-fedora-18.markdown
deleted file mode 100644
index 9f40999..0000000
--- a/_posts/2013-01-17-jms-diextrabundle-s-greppatternfinder-grep-exits-with-status-code-2-on-fedora-18.markdown
+++ /dev/null
@@ -1,52 +0,0 @@
----
-layout: post
-title: "JMS\\DiExtraBundle’s GrepPatternFinder – grep exits with status code 2 on Fedora 18"
-date: 2013-01-17 00:32:12
-tags: [fedora, selinux, symfony]
-permalink: /blog/2013/1/17/jms-diextrabundle-s-greppatternfinder-grep-exits-with-status-code-2-on-fedora-18
-published: true
-author:
- name: Gergely Polonkai
- email: gergely@polonkai.eu
----
-
-Yesterday I’ve upgraded my development machines from Fedora 17 to Fedora
-18. Although it went well, my [Symfony](http://symfony.com/) projects stopped
-working with a message like this:
-
- RuntimeException: Command "/usr/bin/grep --fixed-strings --directories=recurse --devices=skip --files-with-matches --with-filename --color=never --include=*.php 'JMS\DiExtraBundle\Annotation'
- '/var/www/html/gergelypolonkaiweb/app/../src'
- '/var/www/html/gergelypolonkaiweb/vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle'
- '/var/www/html/gergelypolonkaiweb/vendor/symfony/symfony/src/Symfony/Bundle/SecurityBundle'
- '/var/www/html/gergelypolonkaiweb/vendor/symfony/symfony/src/Symfony/Bundle/TwigBundle'
- '/var/www/html/gergelypolonkaiweb/vendor/symfony/monolog-bundle/Symfony/Bundle/MonologBundle'
- '/var/www/html/gergelypolonkaiweb/vendor/symfony/swiftmailer-bundle/Symfony/Bundle/SwiftmailerBundle'
- '/var/www/html/gergelypolonkaiweb/vendor/symfony/assetic-bundle/Symfony/Bundle/AsseticBundle'
- '/var/www/html/gergelypolonkaiweb/vendor/doctrine/doctrine-bundle/Doctrine/Bundle/DoctrineBundle'
- '/var/www/html/gergelypolonkaiweb/vendor/sensio/framework-extra-bundle/Sensio/Bundle/FrameworkExtraBundle'
- '/var/www/html/gergelypolonkaiweb/vendor/jms/aop-bundle/JMS/AopBundle'
- '/var/www/html/gergelypolonkaiweb/vendor/jms/security-extra-bundle/JMS/SecurityExtraBundle'
- '/var/www/html/gergelypolonkaiweb/vendor/doctrine/doctrine-migrations-bundle/Doctrine/Bundle/MigrationsBundle'
- '/var/www/html/gergelypolonkaiweb/vendor/friendsofsymfony/jsrouting-bundle/FOS/JsRoutingBundle'
- '/var/www/html/gergelypolonkaiweb/vendor/avalanche123/imagine-bundle/Avalanche/Bundle/ImagineBundle'
- '/var/www/html/gergelypolonkaiweb/vendor/genemu/form-bundle/Genemu/Bundle/FormBundle'
- '/var/www/html/gergelypolonkaiweb/src/GergelyPolonkai/FrontBundle'
- '/var/www/html/gergelypolonkaiweb/src/GergelyPolonkai/GeshiBundle'
- '/var/www/html/gergelypolonkaiweb/vendor/symfony/symfony/src/Symfony/Bundle/WebProfilerBundle'
- '/var/www/html/gergelypolonkaiweb/vendor/sensio/distribution-bundle/Sensio/Bundle/DistributionBundle'
- '/var/www/html/gergelypolonkaiweb/vendor/sensio/generator-bundle/Sensio/Bundle/GeneratorBundle'" exited with non-successful status code "2".
-
-After getting through my logs and such, I’ve finally found out that the new
-SELinux policy is causing the trouble together with git. Eventually, my
-`.git/logs` directory is tagged as `unconfined_u:object_r:httpd_log_t:s0`.
-`httpd_log_t` type is not readable by the `system_u:system_r:httpd_t:s0` user,
-which makes `/usr/bin/grep` throw an access denied error. To fix this, I needed
-to do
-
- semanage fcontext -a -t httpd_sys_content_t '/var/www(/.*)?/\.git/logs(/.*)?'
-
-as root. This makes `.git` directories readable for the httpd process, thus,
-for `grep`. The optimal solution would be to tell `GrepPatternFinder` to ignore
-version control stuff, so the `httpd` process would have no access to them at
-all. Also, in production, removing the `.git` or `.svn` directories could be a
-good idea.
diff --git a/_posts/2013-02-19-mount-device-or-resource-busy-after-enabling-multipath.markdown b/_posts/2013-02-19-mount-device-or-resource-busy-after-enabling-multipath.markdown
deleted file mode 100644
index 31b7ea6..0000000
--- a/_posts/2013-02-19-mount-device-or-resource-busy-after-enabling-multipath.markdown
+++ /dev/null
@@ -1,32 +0,0 @@
----
-layout: post
-title: "mount: device or resource busy after enabling multipath"
-date: 2013-02-19 23:09:05
-tags: [linux, heartbeat-cluster]
-permalink: /blog/2013/2/19/mount-device-or-resource-busy-after-enabling-multipath
-published: true
-author:
- name: Gergely Polonkai
- email: gergely@polonkai.eu
----
-
-We have a heartbeat cluster with two nodes. It has been running for several
-months without problems. The shared storage is on an IBM DS3400, on which we
-have a large volume formatted with ext4.
-
-Today I decided to reboot the active node for security reasons. So I’ve
-switched to the passive node, which failed at the first step: it was unable to
-mount the storage (`/dev/sda1`). After whining for a few moments, I tried to
-mount it by hand, which told me
-
- /dev/sda1 already mounted or /data is busy
-
-I’ve quickly made sure that none of that was true. After checking
-this-and-that, it turned out that the passive node had `multipathd` running, so
-I looked under `/dev/mapper`, and found two symlinks there, ``
-and `-part1`. As the partition table and the disk size was the
-same as on `/dev/sda`, I tried to
-
- mount /dev/-part1 /data
-
-and voilà! It worked like charm!
diff --git a/_posts/2013-02-27-why-i-stopped-using-annotation-based-routing-in-symfony-today.markdown b/_posts/2013-02-27-why-i-stopped-using-annotation-based-routing-in-symfony-today.markdown
deleted file mode 100644
index 8f1b82d..0000000
--- a/_posts/2013-02-27-why-i-stopped-using-annotation-based-routing-in-symfony-today.markdown
+++ /dev/null
@@ -1,27 +0,0 @@
----
-layout: post
-title: "Why I stopped using annotation based routing in Symfony today"
-date: 2013-02-27 23:10:24
-tags: [development, symfony]
-permalink: /blog/2013/2/27/why-i-stopped-using-annotation-based-routing-in-symfony-today
-published: true
-author:
- name: Gergely Polonkai
- email: gergely@polonkai.eu
----
-
-I have read several opinions about routing configuration in Symfony. I stayed
-with annotation based routing as it was convinient for me to see the URL right
-above the controller action. This was because by just checking the URL, I
-remembered the controlling code, as they always were fresh ones. Well, until
-today.
-
-I had to take a look into an old (Sf 2.0, last commit was about 3 months ago)
-project of mine. In the same run I’ve upgraded the whole project to 2.2 (it was
-a fast one, thanks for [JMikola@GitHub](https://github.com/jmikola) for the
-quick reply on my issue with
-[JmikolaJsAssetsHelperBundle](https://github.com/jmikola/JmikolaJsAssetsHelperBundle)
-again!). After that I went on to the requested change. Now, finding a route in
-about 40 controller files spread between 3 bundles can really be a pain! So
-I’ve finished with annotation based routing. It’s still a nice feature, it’s
-simply not for me.
diff --git a/_posts/2013-03-01-programming-as-i-see-it.markdown b/_posts/2013-03-01-programming-as-i-see-it.markdown
deleted file mode 100644
index dd287c6..0000000
--- a/_posts/2013-03-01-programming-as-i-see-it.markdown
+++ /dev/null
@@ -1,62 +0,0 @@
----
-layout: post
-title: "Programming, as I see it"
-date: 2013-03-01 23:32:35
-permalink: /blog/2013/3/1/programming-as-i-see-it
-published: false
-author:
- name: Gergely Polonkai
- email: gergely@polonkai.eu
----
-
-Since my age of around 11, I write code. I began with BASIC, which is,
-well, the most basic language I have ever seen. Simply writing
-10 PRINT "Hello World!" does the job (with Assembly it
-would be tens of lines as I recall). Then I moved to Pascal, then
-Delphi (which is basically the same thing). The next step was a bit
-longer, as I started learning more languages after this, like Perl
-(for dynamic web pages), C (for desktop applications), TCL (for
-eggdrop programming. Yes, I might have been a weird kid), PHP (again,
-for dynamic web pages. It was becoming mainstream back then).
-
-Many of my classmates looked down on me, as they thought I was a geek (hell I
-was, but I wouldn’t have confessed it then), and called me a nerd. For a few
-months maybe I was depressed, but after that I realised that this is the thing
-I want to do in my life, this is the thing I’m good at.
-
-Most people I ask why don’t they code say “it’s too hard”. I’ve attended some
-courses (both online and offline, and I was like “Whoa! Coding is extremely
-hard! What the hell! I will never learn it!”, but right after the course I
-realised that everything is just fine, I can still write programs, and it’s
-eeeeasy. So then, what’s the problem?
-
-After looking through many course papers, I found that most teachers do it
-totally wrong. A programming language is just that: a language. You don’t start
-learning Spanish by going into a classic literature conference in Madrid and
-doing a speech, but learn the basic vocabulary and grammar. The same goes for
-coding. You learn the vocabulary (the basic commands or keywords) and grammar
-(syntax). I had several ideas how this could be taught, just didn’t have the
-background to do it.
-
-The idea of teaching programming lingers in my head for years now, and a few
-days ago, I’ve bumped into [this
-video](https://www.youtube.com/watch?v=dU1xS07N-FA). So it seems that
-technology superstars like Bill Gates and Mark Zuckerberg wants to do the same.
-Maybe they don’t have enough high quality coders at hand. Well of course,
-if teachers make it awfully hard to learn it! So a bunch of guys sat together
-and created [code.org](http://www.code.org/) to achieve my old dream. I like
-the idea. And although I have almost no visitor on this blog of mine, allow me
-to give you a few points on how I see programming.
-
-#### Great learning process
-
-When you write programs, especially during the first years, you adapt a new way
-of thinking and learning. If you learn it as an adult, it can be a bit of a
-pain, but as a child, it’s easy as learning how the wheels of those little cars
-spin).
-
-#### A job
-
-#### Art
-
-#### Magic
diff --git a/_posts/2013-03-05-fedora-can-t-change-active-directory-password-via-kpasswd.markdown b/_posts/2013-03-05-fedora-can-t-change-active-directory-password-via-kpasswd.markdown
deleted file mode 100644
index 7b469c4..0000000
--- a/_posts/2013-03-05-fedora-can-t-change-active-directory-password-via-kpasswd.markdown
+++ /dev/null
@@ -1,38 +0,0 @@
----
-layout: post
-title: "Fedora can’t change Active Directory password via kpasswd"
-date: 2013-03-05 08:55:04
-tags: [fedora, kerberos, active-directory]
-permalink: /blog/2013/3/5/fedora-can-t-change-active-directory-password-via-kpasswd
-published: true
-author:
- name: Gergely Polonkai
- email: gergely@polonkai.eu
----
-
-I wanted to change my AD password today. As the AD is actually a Kerberos
-server, I was pretty sure that `kpasswd` will do the trick. However, `kpasswd`
-output looked like this:
-
- $ kpasswd
- Password for polonkai.gergely@EXAMPLE.LOCAL:
- Enter new password:
- Enter it again:
- kpasswd: Cannot find KDC for requested realm changing password
-
-I’ve checked `kinit` and `klist`, everything looked fine. After a while it came
-to my mind that password changing is done through the kadmin server, not
-through the KDC. It seems that when I set up the Active Directory membership,
-the `admin_server` directive is not get written to `krb5.conf`. So all I had to
-do was to put
-
- admin_server = ad.example.local
-
-in that file, and voilà!
-
- $ kpasswd
- Password for polonkai.gergely@EXAMPLE.LOCAL:
- Enter new password:
- Enter it again:
- Password changed.
-
diff --git a/_posts/2013-03-05-haversine-in-mysql.markdown b/_posts/2013-03-05-haversine-in-mysql.markdown
deleted file mode 100644
index 94a1826..0000000
--- a/_posts/2013-03-05-haversine-in-mysql.markdown
+++ /dev/null
@@ -1,17 +0,0 @@
----
-layout: post
-title: "Haversine in MySQL"
-date: 2013-03-05 12:49:28
-permalink: /blog/2013/3/5/haversine-in-mysql
-tags: [mysql, development]
-published: true
-author:
- name: Gergely Polonkai
- email: gergely@polonkai.eu
----
-
-Just insert it in your database, feed them two Google coordinates, and you get
-the distance in kilometres. If you happen to need it in miles, change the
-constant `12756.200` in the `RETURN` row to `7922.6` instead.
-
-{% gist bdad1cf2d410853bef35 %}
diff --git a/_posts/2013-03-13-dvorak-and-me.markdown b/_posts/2013-03-13-dvorak-and-me.markdown
deleted file mode 100644
index f8937e8..0000000
--- a/_posts/2013-03-13-dvorak-and-me.markdown
+++ /dev/null
@@ -1,28 +0,0 @@
----
-layout: post
-title: "Dvorak and me"
-date: 2013-03-13 21:20:13
-tags: [linux]
-permalink: /blog/2013/3/13/dvorak-and-me
-published: true
-author:
- name: Gergely Polonkai
- email: gergely@polonkai.eu
----
-
-A few months ago I have decided to switch to the Dvorak layout. After using
-QWERTY (well, QWERTZ, to be precise) for almost 17 years, it was a hard
-decision, but now I think it worthed the try. I started with the UK (Dvorak
-with UK punctuation) layout, and in about four weeks, I’ve almost reached my
-original typing speed. Today I have modified the Hungarian xkb definitions file
-to add the Hungarian accended letters like ű to the layout, so I don’t have to
-use dead keys anymore (which apparently turned out to be a problem, as the
-Linux version of Java doesn’t support dead keys at all).
-
-Best thing is, as I never learned proper 10-finger typing, but learned Dvorak
-that way, I can switch between QWERTY and Dvorak more or less painlessly (about
-10 minutes of confusion, so to say).
-
-Conclusion: I don’t know yet if this was actually a good decision, but it
-wasn’t bad, after all. But seeing people’s faces when they try to type on my
-machine totally worths it.
diff --git a/_posts/2013-04-09-renaming-a-symfony-2-bundle.markdown b/_posts/2013-04-09-renaming-a-symfony-2-bundle.markdown
deleted file mode 100644
index 082c1c6..0000000
--- a/_posts/2013-04-09-renaming-a-symfony-2-bundle.markdown
+++ /dev/null
@@ -1,28 +0,0 @@
----
-layout: post
-title: "Renaming a Symfony 2 bundle"
-date: 2013-04-09 22:29:48
-tags: [development, symfony]
-permalink: /blog/2013/4/9/renaming-a-symfony-2-bundle
-published: true
-author:
- name: Gergely Polonkai
- email: gergely@polonkai.eu
----
-
-Today I’ve realised that the name I gave to one of my Symfony 2 bundles should
-be something else. To rename a bundle, one must do four things (at least).
-
-1. Change the namespace from `Vendor\OldBundle` to `Vendor\NewBundle` in every
- PHP class (sounds like pain? It is…)
-1. Change the name of files and classes. Some files under
- `src/Vendor/OldBundle` (and the classes in them) contain the name of the
- bundle, like `OldBundle/DependencyInjection/VendorOldBundleExtension.php`
- and `OldBundle/VendorOldBundle.php`. You should rename them, or Symfony
- won’t find the classes defined in them! When done, rename the whole bundle
- directory either.
-1. Change the configuration files accordingly, including `AppKernel.php`. These
- config files are usually `routing.yml`, `services.yml`, and in some cases,
- `config.yml`
-1. Change the references in other parts of your code. A `grep OldBundle .` will
- usually help…
diff --git a/_posts/2013-05-06-installing-otrs-in-fedora-18-with-selinux-enabled.markdown b/_posts/2013-05-06-installing-otrs-in-fedora-18-with-selinux-enabled.markdown
deleted file mode 100644
index 3f85724..0000000
--- a/_posts/2013-05-06-installing-otrs-in-fedora-18-with-selinux-enabled.markdown
+++ /dev/null
@@ -1,111 +0,0 @@
----
-layout: post
-title: "Installing OTRS in Fedora 18 with SELinux enabled"
-date: 2013-05-06 06:01:52
-tags: [fedora, selinux, otrs]
-permalink: /blog/2013/5/6/installing-otrs-in-fedora-18-with-selinux-enabled
-published: true
-author:
- name: Gergely Polonkai
- email: gergely@polonkai.eu
----
-
-I’ve read somewhere in an OTRS installation howto that if you want to install
-OTRS, you will have to disable SELinux. Well, I won’t.
-
-During the last few months, I have been using Fedora 18 with SELinux on all of
-my desktop machines and on my notebook, and I had no problems at all.
-Meanwhile I got familiar with SELinux itself, and got used to solving problems
-caused by it. So I started `tail -f /var/log/httpd/error_log` in one terminal
-(to see if something Apache related thing appears),
-`tail -f /var/log/audit/audit.log` in another (to see errors caused by
-SELinux), opened the admin manual at the installation chapter, took a deep
-breath, and went on.
-
-Throughout this article, I will refer to OTRS 3.2.6 as OTRS and Fedora 18
-(with only “stock” repositories) as Fedora. I assume that you have already
-installed OTRS in a non-SELinux environment before, and that you have at least
-some basic knowledge about SELinux, MAC, RBAC, and all the like. I’m
-installing OTRS in `/opt/otrs`, so if you install it somewhere else, you will
-have to modify the paths below. Also, if you happen to install under
-`/var/www` (I wouldn’t recommend it), that directory already has the
-`httpd_sys_content_t` type, so you won’t have to set it explicitly.
-
-As the first step I have unpacked the archive to `/opt/otrs`. This directory
-is the OTRS default, many config files have it hardcoded, and changing it is
-no easy task.
-
-Running `otrs.CheckModules.pl` gave me a list of missing perl modules. Red Hat
-and Fedora makes it easy to install these, as you don’t have to know the RPM
-package name, just the perl module name:
-
- yum install 'perl(Crypt::SSLeay)' \
- 'perl(DBD::Pg)' \
- 'perl(GD)' \
- 'perl(JSON::XS)' \
- 'perl(GD::Text)' \
- 'perl(GD::Graph)' \
- 'perl(Mail::IMAPClient)' \
- 'perl(Net::DNS)' \
- 'perl(PDF::API2)' \
- 'perl(Text::CSV_XS)' \
- 'perl(YAML::XS)'
-
-I also needed to install `mod_perl`. Although `otrs.CheckModules.pl` didn’t
-mention it, the default settings use syslog as the logging module, so unless
-you change it in `Config.pm`, you will also need to install
-`'perl(Unix::Syslog)'`, either.
-
-The default SELinux policy doesn’t permit any network connection to be
-initiated by Apache httpd. As OTRS needs to connect to its database, you
-need to enable it explicitly. In older distributions, the
-`httpd_can_network_connect` was the SELinux boolean for this, but recent
-installations also have a `httpd_can_network_connect_db` flag. As far as I
-know, this enables all network connections to the well-known database
-servers’ default port, but I will have to check for it. For me, with a
-MySQL listening on its standard port, the
-`setsebool httpd_can_network_connect_db=1` command just did it.
-
-With SELinux enabled, Apache won’t be able to read anything that’s not
-marked with the `httpd_sys_content_t` type, nor write anywhere without the
-`httpd_sys_rw_content_t` type. The trivial, quick and dirty solution is to
-label all the files as `httpd_sys_rw_content_t`, and let everything go.
-However, the goal of SELinux is just the opposite of this: grant access
-only to what is really needed. After many trial-and-error steps, it finally
-turned out that for OTRS to work correctly, you must set
-
-* `httpd_sys_content_t`
- * on `/opt/otrs/var/httpd/htdocs`
-* `httpd_script_exec_t`
- * on `/opt/otrs/bin/cgi-bin`
-* `httpd_sys_rw_content_t`
- * on `/opt/otrs/Kernel`
- * on `/opt/otrs/var/sessions`
- * on `/opt/otrs/var/log` (unless you use syslog for logging)
- * on `/opt/otrs/var/packages` (this is used only when you download an .opm
- package)
- * on `/opt/otrs/var/stats`
- * on `/opt/otrs/var/tmp`
- * on `/opt/otrs/bin` (I wonder why this is required, though)
-
-To do this, use the following command:
-
- # semanage fcontext -a -t
-
-Where `` is something like `/opt/otrs/Kernel(/.*)?`. When
-this is done, all you have to do is running `restorecon -vR /opt/otrs` so
-it will relabel everything with the correct types (you can omit -v, I just
-like to see what my software does).
-
-The last thing I faced is that Fedora is more restrictive on reading
-directories other than `/var/www`. It has a `Require all denied` on
-``, and a `Require all granted` on ``, so
-`/opt/otrs/var/httpd/htdocs` will throw a
-`403 Forbidden (client denied by server configuration)` error. To get rid
-of this, I had to modify `scripts/apache2-httpd.include.conf` and add
-`Require all granted` to both the `cgi-bin` and `htdocs` directories.
-
-As I will have to use OTRS in a production environment soon with SELinux
-enabled, it is more than sure that this list will change in the near future.
-As there are no official documentation on this (I haven’t find one yet), I
-have to do it with the trial-and-error way, so be patient!
diff --git a/_posts/2013-09-16-swe-glib-final-release.markdown b/_posts/2013-09-16-swe-glib-final-release.markdown
deleted file mode 100644
index 59d9399..0000000
--- a/_posts/2013-09-16-swe-glib-final-release.markdown
+++ /dev/null
@@ -1,30 +0,0 @@
----
-layout: post
-title: "SWE-GLib final release"
-date: 2013-09-16 21:37:17
-tags: [development, astrology]
-permalink: /blog/2013/9/16/swe-glib-final-release
-published: true
-author:
- name: Gergely Polonkai
- email: gergely@polonkai.eu
----
-
-Few of you may know that I’m interested in astrology. About two months ago
-I have decided to create an astrologers’ software for the GNOME desktop.
-Since then, I have contacted Jean-André Santoni, who created a software
-called [Astrognome](https://code.google.com/p/astrognome/) some years ago.
-We exchanged some e-mails, and after several weeks of coding, I’m proud to
-present [SWE-GLib](https://github.com/gergelypolonkai/swe-glib) 1.0.1. This
-is “just” a library which wraps around [Swiss
-Ephemeris](http://www.astro.com/swisseph/), creating a nice GLib-ish
-interface around it. See the project page and the built-in GTK-Doc document
-for more information.
-
-The astrologer’s software I’m writing will be
-[Astrognome](https://github.com/gergelypolonkai/astrognome) (thanks for
-Jean-André for letting me use the name). It is currently in pre-alpha
-status, but already utilizes SWE-GLib (it just can’t display the results
-yet). If you happen to be interested in astrology and/or Astrognome, fork
-the repository and contribute! You can also contact me (or open an
-enhancement issue on GitHub) if you have any ideas.
diff --git a/_posts/2013-09-24-from-symfony-to-django-in-two-days.markdown b/_posts/2013-09-24-from-symfony-to-django-in-two-days.markdown
deleted file mode 100644
index 659d278..0000000
--- a/_posts/2013-09-24-from-symfony-to-django-in-two-days.markdown
+++ /dev/null
@@ -1,25 +0,0 @@
----
-layout: post
-title: "From Symfony to Django in two days"
-date: 2013-09-24 14:05:22
-tags: [development, symfony, django]
-permalink: /blog/2013/9/24/from-symfony-to-django-in-two-days
-published: true
-author:
- name: Gergely Polonkai
- email: gergely@polonkai.eu
----
-
-I was a Python hater for a long time, although I can’t really tell why. It
-didn’t fit in my mind, maybe. I was programming in BASIC, Pascal (none of
-these would come to my mind, though), C, PHP, Perl, JavaScript, and
-different shell “languages” like awk, sed or bash.
-
-After I could not fit my next Symfony app on my cloud server (it is pretty
-low on storage), I have decided to move slowly to Django. My first task was
-simple: transition my web page (this one) from PHP + Symfony 2 to Python +
-Django. The results: the “static” pages are already working, the blog
-listing is almost ready (some styling issues are still around), only
-tagging remains. And this is after about 6 hours of work. Oh, and the admin
-site is included with Django, so I don’t have to port that. I have also
-decided to finally integrate a comment feature in the Django version.
diff --git a/_posts/2013-11-05-first-impressions-of-windows-8.markdown b/_posts/2013-11-05-first-impressions-of-windows-8.markdown
deleted file mode 100644
index 4c94aff..0000000
--- a/_posts/2013-11-05-first-impressions-of-windows-8.markdown
+++ /dev/null
@@ -1,29 +0,0 @@
----
-layout: post
-title: "First impressions of Windows 8"
-date: 2013-11-05 08:14:50
-tags: [windows]
-permalink: /blog/2013/11/5/first-impressions-of-windows-8
-published: true
-author:
- name: Gergely Polonkai
- email: gergely@polonkai.eu
----
-
-Many of you may know my commitment to Linux and Open Source Software. But this
-doesn’t mean I hate proprietary software like many others do. I think
-everything has its own place in the world, and this goes for software as well.
-
-A few days ago I got my hands on a new notebook, thanks to my company. It was
-shipped with Windows 8 by default, and although I installed Fedora 19 in an
-instant (which went smoothlessly, even with Secure Boot enabled), I’ve decided
-to give a try to this new Windows Version.
-
-Being a heavy Windows 7 user, my first thought was “What the hell is this?”
-But in a day, I got totally used to it. I don’t miss the Start button at all.
-The applications already installed were almost enough for me (I still need
-Office. Maybe I’ll also enroll for Office 365 later…), and the games are great
-and beautiful too. So overall, this new version may be totally different (by
-the looks), but it seems almost the same Windows as we know it. So if you
-don’t freak out by touching something new, go give it a try: don’t
-instant-remove 8 in favour of 7!
diff --git a/_posts/2014-07-18-list-git-branches-and-their-remote-tracking-branches-side-by-side.markdown b/_posts/2014-07-18-list-git-branches-and-their-remote-tracking-branches-side-by-side.markdown
deleted file mode 100644
index 4f1e610..0000000
--- a/_posts/2014-07-18-list-git-branches-and-their-remote-tracking-branches-side-by-side.markdown
+++ /dev/null
@@ -1,33 +0,0 @@
----
-layout: post
-title: "List Git branches and their remote tracking branches side by side"
-date: 2014-07-18 21:46:45
-tags: [git]
-permalink: /blog/2014/7/18/list-git-branches-and-their-remote-tracking-branches-side-by-side
-published: true
-author:
- name: Gergely Polonkai
- email: gergely@polonkai.eu
----
-
-I had a hard time following my own branches in a project. They got pretty
-numerous, and I wasn’t sure if I pushed them to origin at all.
-`git branch -a` can list all the branches, including remote ones, but, as
-my list grew too big, it was impossible to follow it any more.
-
-Thus, I have created a small script called git-branches-with-remotes, which
-does the work for me. Its only requirements are git (of course), and the
-`column` command, which is pretty obviously present on every POSIX
-compliant systems (even OSX).
-
-{% gist 8af6a3e86b57dd4c250e %}
-
-I just put it in my path, and `git branches-with-remotes` does the work!
-
-Edit (16 August): I have added some code to mark the current branch (if any)
-with an asterisk. Also, I have put this script [in a
-gist](https://gist.github.com/gergelypolonkai/8af6a3e86b57dd4c250e).
-
-Edit (26 February, 2015): It turns out that `git branch -vv` shows the same
-information and some more: it also shows if the branches are diverged, and the
-first line of the last commit’s message.
diff --git a/_posts/2014-08-16-registering-an-enum-type-in-glib-glib-mkenums-magic.markdown b/_posts/2014-08-16-registering-an-enum-type-in-glib-glib-mkenums-magic.markdown
deleted file mode 100644
index 9f21dd3..0000000
--- a/_posts/2014-08-16-registering-an-enum-type-in-glib-glib-mkenums-magic.markdown
+++ /dev/null
@@ -1,36 +0,0 @@
----
-layout: post
-title: "Registering an enum type in GLib, glib-mkenums magic"
-date: 2014-08-16 15:10:54
-tags: [development, c, glib]
-permalink: /blog/2014/8/16/registering-an-enum-type-in-glib-glib-mkenums-magic
-published: true
-author:
- name: Gergely Polonkai
- email: gergely@polonkai.eu
----
-
-In [this
-post](/blog/2013/1/6/registering-an-enum-type-in-glib-s-type-system) I said
-I will get through the GLib Makefiles to add an enum type to GLib in a more
-sophisticated way.
-
-In my other project,
-[SWE-GLib](https://github.com/gergelypolonkai/swe-glib) I already used this
-method. The following two rules in `Makefile.am` create `gswe-enumtypes.h`
-and `gswe-enumtypes.c`.
-
-{% gist 1e2fdedb136de3ca67f0 Makefile %}
-
-`$(GLIB_MKENUMS)` is set in `configure` with
-`AC_PATH_PROG([GLIB_MKENUMS], [glib-mkenums])`.
-
-This approach requires the GNU Autotools (you can get rid of it by changing
-`$(GLIB_MKENUMS)` to the path to `glib-mkenums` binary), and two template
-files, one for the header and one for the code. `$(gswe_enum_headers)`
-contains a list of all the header files that have enum types defined
-throughout the project.
-
-{% gist 1e2fdedb136de3ca67f0 gswe-enumtypes.h %}
-
-{% gist 1e2fdedb136de3ca67f0 gswe-enumtypes.c %}
diff --git a/_posts/2014-09-17-nyanmacs.markdown b/_posts/2014-09-17-nyanmacs.markdown
deleted file mode 100644
index abc8b2d..0000000
--- a/_posts/2014-09-17-nyanmacs.markdown
+++ /dev/null
@@ -1,16 +0,0 @@
----
-layout: post
-title: "NyanMacs"
-date: 2014-09-17 12:45:42
-tags: [emacs]
-permalink: /blog/2014/9/17/nyanmacs
-published: true
-author:
- name: Gergely Polonkai
- email: gergely@polonkai.eu
----
-
-I was a Vi/ViM user for years. For several reasons I had to change to Emacs
-now and then. And then, I found
-[this](https://www.emacswiki.org/emacs/NyanMode). I surrender. Emacs is
-just better. (And it’s working even in plain text mode without graphics)
diff --git a/_posts/2014-10-07-rounding-numbers-to-n-decimals-in-emacs.markdown b/_posts/2014-10-07-rounding-numbers-to-n-decimals-in-emacs.markdown
deleted file mode 100644
index 9d85dc2..0000000
--- a/_posts/2014-10-07-rounding-numbers-to-n-decimals-in-emacs.markdown
+++ /dev/null
@@ -1,25 +0,0 @@
----
-layout: post
-title: "Rounding numbers to N decimals in Emacs"
-date: 2014-10-07 10:28:50
-tags: [emacs, development]
-permalink: /blog/2014/10/7/rounding-numbers-to-n-decimals-in-emacs
-published: true
-author:
- name: Gergely Polonkai
- email: gergely@polonkai.eu
----
-
-I have recently faced a problem, where I had a bunch of SVG files with a
-large amount of fraction numbers in the path definitions. These images were
-displayed in small size, so this amount of precision was irrelevant, and
-these numbers took almost half of my SVG images’ size. So I created an
-Elisp defun to round these numbers to 2 decimals:
-
-{% gist 9c721ceda6d3079b4f05 %}
-
-This finds the first digit of the number under point (the cursor), and
-reduces its digits to the given amount (or the number given with `C-u`). It
-has some drawbacks, though, as it cannot handle exponential forms (e.g.
-`1e-1234`), but these were rare in my case, and its hard to iterate through
-all numbers. I will come over this latter problem soon(ish).
diff --git a/_posts/2015-02-26-using-git-bisect-to-find-the-first-good-commit.markdown b/_posts/2015-02-26-using-git-bisect-to-find-the-first-good-commit.markdown
deleted file mode 100644
index b91bd3a..0000000
--- a/_posts/2015-02-26-using-git-bisect-to-find-the-first-good-commit.markdown
+++ /dev/null
@@ -1,46 +0,0 @@
----
-layout: post
-title: "Using Git bisect to find the first good commit"
-date: 2015-02-26 10:42:56
-tags: [git]
-permalink: /blog/2015/2/26/using-git-bisect-to-find-the-first-good-commit
-published: true
-author:
- name: Gergely Polonkai
- email: gergely@polonkai.eu
----
-
-Few months ago we “implemented” a bug in our software, which was released
-to the customers. We continued development for two weeks when the first
-customer ticket arrived about the bug. We successfully reproduced it with
-the customer’s version, but not with the development sources; it turned out
-that one of the developers unconsciously fixed the bug. The devs spent some
-hours finding where the fix lied before coming to me like “There is
-`git-bisect` which we can use to find the commit where we messed up things.
-Is there a way to find where we fixed it?”
-
-For those who don’t know this feature, you have to mark a known “good” and
-“bad” commit, then git-bisect will go through the commits between this two,
-present you the corresponding snapshots, and you have to mark each of them
-as “good” or “bad”. At the end, you will get a commit hash where the bug
-first occured.
-
-As it turned out, our developers’ problem rooted in the naming convention
-of git-bisect: they assumed that the “good” commit must be a working one,
-while a “bad” one must be the buggy. In this case, we did the following:
-
-The commit with the customer’s release tag was marked as good (even though
-this had the bug), and the latest commit on our development branch was
-marked as “bad” (even though the bug was fixed by then). Now with every
-snapshot presented by git-bisect we had to do the opposite what you usually
-do: mark commits still having the bug as “good”, and commits that don’t as
-“bad”. At the end, we had the hash of the commit that fixed the bug (among
-some other things; luckily, the developer who pushed that commit had a
-workflow that introduced a lot of cherry-picking and squashing before the
-push, so he could easily find the bit that actually fixed the problem in
-his local repository with the same technique).
-
-[This StackOverflow answer](http://stackoverflow.com/a/17153598/1305139)
-suggests the very same, but with some aliases:
-
-{% gist a98f4aab84659d60364e %}
diff --git a/_posts/2015-04-25-good-bye-digital-ocean-hello-again-github.markdown b/_posts/2015-04-25-good-bye-digital-ocean-hello-again-github.markdown
deleted file mode 100644
index 7ca4d99..0000000
--- a/_posts/2015-04-25-good-bye-digital-ocean-hello-again-github.markdown
+++ /dev/null
@@ -1,23 +0,0 @@
----
-layout: post
-title: "Good bye, Digital Ocean! Hello again, GitHub!"
-date: 2015-04-25 21:18:56
-permalink: /blog/2015/4/25/good-bye-digital-ocean-hello-again-github
-published: true
-author:
- name: Gergely Polonkai
- email: gergely@polonkai.eu
----
-
-Few years ago I have signed up for a
-[Digital Ocean](https://www.digitalocean.com/) account. I used one
-single droplet for my private needs, like hosting my private Git
-repositories and my blog. However, as I didn’t host anything else there
-except my blog, I decided to shut it down. From now on, my blog is
-on [GitHub Pages](https://pages.github.com/), as it provides just
-everything I need (except automatically converting my resume to
-PDF. But I can live without that.)
-
-I’m really sorry, Digital Ocean Guys, your hosting is awesome and I’ll
-keep recommending you to others, but paying for a droplet for one
-single blog is overkill.
diff --git a/_posts/2015-04-28-cross-browser-border-radius-sass-mixin-with-varargs.markdown b/_posts/2015-04-28-cross-browser-border-radius-sass-mixin-with-varargs.markdown
deleted file mode 100644
index 3b47fcb..0000000
--- a/_posts/2015-04-28-cross-browser-border-radius-sass-mixin-with-varargs.markdown
+++ /dev/null
@@ -1,32 +0,0 @@
----
-layout: post
-title: "Cross browser border-radius SASS mixin with varargs"
-date: 2015-04-27 22:59:56
-tags: [css, sass]
-permalink: /blog/2015/4/28/cross-browser-border-radius-sass-mixin-with-varargs
-published: true
-author:
- name: Gergely Polonkai
- email: gergely@polonkai.eu
----
-
-Few days ago I needed to create style sheets with many rounded boxes,
-where different corners had to be rounded differently (think about
-Bootstrap’s [button
-groups](http://getbootstrap.com/components/#btn-groups)).
-
-CSS has this nifty shorthand to specify border width in one line, like
-with `border-width: 1px 2px 3px 4px`, but it lacks the same for
-`border-radius`. So I decided to create something similar using [Sass
-mixins](http://sass-lang.com/guide#topic-6) with dynamic
-parameters. Another nice feature you get using the `border-width`
-shorthand is that you can specify less than four parameters, and the
-values will be applied on different sides of your box, so in the end
-all side will have the whole `border-width` set.
-
-I wanted to achieve the same for my `border-radius` mixin, although I
-could not start specifically with the `top` side. I decided to go with
-the top right corner for the first parameter, while trying to keep a
-sane repeating pattern. Here is the result:
-
-{% gist 313b227434ecc5d85d7b border-radius.sass %}
diff --git a/_posts/2015-06-07-paramconverter-a-la-django.markdown b/_posts/2015-06-07-paramconverter-a-la-django.markdown
deleted file mode 100644
index 04bcc2a..0000000
--- a/_posts/2015-06-07-paramconverter-a-la-django.markdown
+++ /dev/null
@@ -1,39 +0,0 @@
----
-layout: post
-title: "@ParamConverter à la Django"
-date: 2015-06-07 18:14:32
-tags: [python, django]
-published: true
-author:
- name: Gergely Polonkai
- email: gergely@polonkai.eu
----
-One thing I really miss from [Django](https://www.djangoproject.com/)
-is [Symfony](http://symfony.com)’s
-[@ParamConverter](http://symfony.com/doc/current/bundles/SensioFrameworkExtraBundle/annotations/converters.html). It
-made my life so much easier while developing with Symfony. In Django,
-of course, there is
-[get_object_or_404](https://docs.djangoproject.com/en/dev/topics/http/shortcuts/#get-object-or-404),
-but, for example, in one of my projects I had a view that had to resolve 6(!)
-objects from the URL, and writing `get_object_or_404` six times is not what a
-programmer likes to do (yes, this view had a refactor later on). A quick Google
-search gave me one [usable
-result](http://openclassrooms.com/forum/sujet/middleware-django-genre-paramconverter-doctrine)
-(in French), but it was very generalized that I cannot always use. Also, it was
-using a middleware, which may introduce performance issues
-sometimes[citation needed]. So I decided to go with decorators, and
-at the end, I came up with this:
-
-{% gist 498a32297f39b4960ad7 helper.py %}
-
-Now I can decorate my views, either class or function based, with
-`@convert_params(User, (Article, 'aid'), (Paragraph, None, 'pid'),
-(AnotherObject, None, None, 'obj'))` and all the magic happens in the
-background. The `user_id` parameter passed to my function will be
-popped off, and be resolved against the `User` model by using the `id`
-field; the result is put in the new `user` parameter. For Article, the
-`aid` parameter will be matched against the `id` field of the
-`Article` model putting the result into `article`, and finally, the
-`another_object_id` will be matched against the `id` field of the
-`AnotherObject` model, but in this case, the result is passed to the
-original function as `obj`.
diff --git a/_posts/2015-08-19-foss-failmeter.md b/_posts/2015-08-19-foss-failmeter.md
deleted file mode 100644
index 957fb47..0000000
--- a/_posts/2015-08-19-foss-failmeter.md
+++ /dev/null
@@ -1,20 +0,0 @@
----
-layout: post
-title: "F/OSS Fail meter"
-date: 2015-08-19 10:12:19
-tags: [development]
-published: true
-author:
- name: Gergely Polonkai
- email: gergely@polonkai.eu
----
-
-I have recently bumped into [this
-article](http://spot.livejournal.com/308370.html). Naturally, I quickly
-calculated the FAIL metrics for all my projects (most of them are pretty high).
-To ease calculation, I made up a
-[small page]({% link failmeter/index.html %}) based on this list
-(although I have divided the points by 5; I really don’t understand why spot is
-using such big points if all of them can be divided by 5). Feel free to use it,
-and if you have any recommendations (point additions/removal, new categories,
-etc.), leave me a comment!
diff --git a/_posts/2015-08-27-how-my-email-gets-to-that-other-guy.markdown b/_posts/2015-08-27-how-my-email-gets-to-that-other-guy.markdown
deleted file mode 100644
index a60ab09..0000000
--- a/_posts/2015-08-27-how-my-email-gets-to-that-other-guy.markdown
+++ /dev/null
@@ -1,228 +0,0 @@
----
-layout: post
-title: "How my e-mail gets to that other guy?"
-date: 2015-08-27 21:47:19
-tags: [technology]
-published: true
-author:
- name: Gergely Polonkai
- email: gergely@polonkai.eu
----
-
-A friend of mine asked me how it is possible that she pushes buttons on her
-keyboard and mouse, and in an instant her peer reads the text she had in her
-mind. This is a step-by-step introduction of what happens in-between.
-
-#### From your mind to your computer
-
-When you decide to write an e-mail to an acquaintance of yours, you open up
-your mailing software (this document doesn’t cover using mail applications
-you access through your browsers, just plain old Thunderbird, Outlook or
-similar programs. However, it gets the same after the mail left your
-computer), and press the “New Mail” button. What happens during this process
-is not covered in this article, but feel free to ask me in a comment! Now
-that you have your Mail User Agent (MUA) up and running, you begin typing.
-
-When you press a button on your keyboard or mouse, a bunch of bits gets
-through the wire (or through air, if you went wireless) and get into your
-computer. I guess you learned about Morse during school; imagine two
-[Morse operators](http://www.uscupstate.edu/academics/education/aam/lessons/susan_sawyer/morse%20code.jpg),
-one in your keyboard/mouse, and one in your computer. Whenever you press a
-key, that tiny creature sends a series of short and long beeps (called 0 or
-1 bits, respectively) to the operator in your computer (fun fact: have you
-ever seen someone typing at an amazing speed of 5 key presses per second?
-Now imagine that whenever that guy presses a key on their keyboard, that
-tiny little Morse operator pressing his button 16 times for each key press,
-with perfect timing so that the receiving operator can decide if that was a
-short or long beep.)
-
-Now that the code got to the operator inside the machine, it’s up to him to
-decode it. The funny thing about keyboards and computers is that the
-computer doesn’t receive the message “Letter Q was pressed”, but instead
-“The second button on the second row was pressed” (a number called scan
-code). At this time the operator decodes this information (in this example
-it is most likely this Morse code: `···-···· -··-····`) and checks one of
-his tables titled “Current Keyboard Layout.” It says this specific key
-corresponds to letter ‘Q’, so it forwards this information (I mean the
-letter; after this step your computer doesn’t care which plastic slab you
-hit, just the letter ‘Q’) to your MUA, inserts it into the mail in its
-memory, then displaying it happily (more about this step later).
-
-When you finish your letter you press the send button of your MUA. First it
-converts all the pretty letters and pictures to something a computer can
-understand (yes, those Morse codes, or more precisely, zeros and ones,
-again). Then it adds loads of meta data, like your name and e-mail address,
-the current date and time including the time zone and pass it to the sending
-parts of the MUA so the next step can begin.
-
-#### IP addresses, DNS and protocols
-
-The Internet is a huge amount of computers connected with each other, all of
-them having at least one address called IP address that looks something like
-this: `123.234.112.221`. These are four numbers between 0 and 255 inclusive,
-separated by dots. This makes it possible to have 4,294,967,296 computers.
-With the rules of address assignment added, this is actually reduced to
-3,702,258,432; a huge number, still, but it is not enough, as in the era of
-the Internet of Things everything is interconnected, up to and possibly
-including your toaster. Thus, we are slowly transitioning to a new
-addressing scheme that looks like this:
-`1234:5678:90ab:dead:beef:9876:5432:1234`. This gives an enormous amount of
-340,282,366,920,938,463,463,374,607,431,768,211,456 addresses, with only
-4,325,185,976,917,036,918,000,125,705,034,137,602 of them being reserved,
-which gives us only a petty
-335,957,180,944,021,426,545,374,481,726,734,073,854 available.
-
-Imagine a large city with
-[that many buildings](http://www.digitallifeplus.com/wp-content/uploads/2012/07/new-york-city-aerial-5.jpg),
-all of them having only a number: their IP address. No street names, no
-company names, no nothing. But people tend to be bad at memorizing numbers,
-so they started to give these buildings names. For example there is a house
-with the number `216.58.209.165`, but between each other, people call it
-`gmail.com`. Much better, isn’t it? Unfortunately, when computers talk, they
-only understand numbers so we have to provide them just that.
-
-As remembering this huge number of addresses is a bit inconvenient, we
-created Domain Name Service, or DNS for short. A “domain name” usually (but
-not always) consist of two strings of letters, separated by dots (e.g.
-polonkai.eu, gmail.com, my-very-long-domain.co.uk, etc.), and a hostname is
-a domain name occasionally prefixed with something (e.g. **www**.gmail.com,
-**my-server**.my-very-long-domain.co.uk, etc.) One of the main jobs of DNS
-is to keep record of hostname/address pairs. When you enter `gmail.com`
-(which happens to be both a domain name and a hostname) in your browser’s
-address bar, your computer asks the DNS service if it knows the actual
-address of the building that people call `gmail.com`. If it does, it will
-happily tell your computer the number of that building.
-
-Another DNS job is to store some meta data about these domain names. For
-such meta data there are record types, one of these types being the Mail
-eXchanger, or MX. This record of a domain tells the world who is handling
-incoming mails for the specified domain. For `gmail.com` this is
-`gmail-smtp-in.l.google.com` (among others; there can be multiple records of
-the same type, in which case they usually have priorities, too.)
-
-One more rule: when two computers talk to each other they use so called
-protocols. These protocols define a set of rules on how they should
-communicate; this includes message formatting, special code words and such.
-
-#### From your computer to the mail server
-
-Your MUA has two settings called SMTP server address SMTP port number (see
-about that later). SMTP stands for Simple Mail Transfer Protocol, and
-defines the rules on how your MUA, or another mail handling computer should
-communicate with a mail handling computer when *sending* mail. Most probably
-your Internet Service Provider gave you an SMTP server name, like
-`smtp.aol.com` and a port number like `587`.
-
-When you hit that send button of yours, your computer will check with the
-DNS service for the address of the SMTP server, which, for `smtp.aol.com`,
-is `64.12.88.133`. The computer puts this name/address pair into its memory,
-so it doesn’t have to ask the DNS again (this technique is called caching
-and is widely used wherever time consuming operations happen).
-
-Then it will send your message to the given port number of this newly
-fetched address. If you imagined computers as office buildings, you can
-imagine port numbers as departments and there can be 65535 of them in one
-building. The port number of SMTP is usually 25, 465 or 587 depending on
-many things we don’t cover here. Your MUA prepares your letter, adding your
-e-mail address and the recipients’, together with other information that may
-be useful for transferring your mail. It then puts this well formatted
-message in an envelope and writes “to building `64.12.88.133`, dept. `587`”,
-and puts it on the wire so it gets there (if the wire is broken, the
-building does not exist or there is no such department, you will get an
-error message from your MUA). Your address and the recipient’s address are
-inside the envelope; other than the MUA, your own computer is not concerned
-about it.
-
-The mailing department (or instead lets call it the Mail Transfer Agent,
-A.K.A. MTA) now opens this envelope and reads the letter. All of it, letter
-by letter, checking if your MUA formatted it well. More than probably it
-also runs your message through several filters to decide if you are a bad
-guy sending some unwanted letter (also known as spam), but most importantly
-it fetches the recipients address. It is possible, e.g. when you send an
-e-mail within the same organization, that the recipient’s address is handled
-by this very same computer. In this case the MTA puts the mail to the
-recipient’s mailbox and the next step is skipped.
-
-#### From one server to another
-
-Naturally, it is possible to send an e-mail from one company to another, so
-these MTAs don’t just wait for e-mails from you, but also communicate with
-each other. When you send a letter from your `example@aol.com` address to me
-at `gergely@polonkai.eu`, this is what happens.
-
-In this case, the MTA that initially received the e-mail from you (which
-happened to be your Internet Service Provider’s SMTP server) turns to the
-DNS again. It will ask for the MX record of the domain name specified by the
-e-mail address, (the part after the `@` character, in my case,
-`polonkai.eu`), because the server mentioned there must be contacted, so
-they can deliver your mail for me. My domain is configured so its primary MX
-record is `aspmx.l.google.com` and the secondary is
-`alt1.aspmx.l.google.com` (and 5 more. Google likes to play it safe.) The
-MTA then gets the first server name, asks the DNS for its address, and tries
-to send a message to the `173.194.67.27` (the address of
-`aspmx.l.google.com`), same department. But unlike your MUA, MTAs don’t have
-a pre-defined port number for other MTAs (although there can be exceptions).
-Instead, they use well-known port numbers, `465` and `25`. If the MTA on
-that server cannot be contacted for any reason, it tries the next one on the
-list of MX records. If none of the servers can be contacted, it will retry
-based on a set of rules defined by the administrators, which usually means
-it will retry after 1, 4, 24 and 48 hours. If there is still no answer after
-that many attempts, you will get an error message back, in the form of an
-e-mail sent directly by the SMTP server.
-
-Once the other MTA could be contacted, your message is sent there. The
-original envelope you used is discarded, and a new one is used with the
-address and dept. number (port) of the receiving MTA. Also, your message
-gets altered a little bit, as most MTAs are kind enough (ie. not sneaky) to
-add a clause to your message stating “the MTA at has checked
-and forwarded this message.”
-
-It is possible, though not likely, that your message gets through more than
-two MTAs (one at your ISP and one at the receiver’s) before arriving to its
-destination. At the end, an MTA will say that “OK, this recipient address is
-handled by me”, your message stops and stays there, put in your peer’s
-mailbox.
-
-##### The mailbox
-
-Now that the MTA has passed your mail to the mailbox team (I call it a team
-instead of department because the tasks described here are usually handled
-by the MTA, too), it reads it. (Pesky little guys are these mail handling
-departments, aren’t they?) If the mailbox has some filtering rules, like “if
-XY sends me a letter, mark it as important” or “if the letter has a specific
-word in its subject, put it in the XY folder”, it executes them, but the
-main point is to land the message in the actual post box of the recipient.
-
-#### From the post box to the recipients computer
-
-When the recipient opens their MUA, it will look to a setting usually called
-“Incoming mail server”. Just like the SMTP server, it has a name and port
-number, along with a server type. This type can vary from provider to
-provider, and is usually one of POP3 (pretty old protocol, doesn’t even
-support folders on its own), IMAP (a newer one, with folders and message
-flags like “important”), MAPI (a dialect of IMAP, created by Microsoft as
-far as I know), or plain old mbox files on the receiving computer (this last
-option is pretty rare nowadays, so I don’t cover this option. Also, if you
-use these, you most probably don’t really need this article to understand
-how these things work.) This latter setting defines the protocol, telling
-your MUA how to “speak” to the post box.
-
-So your MUA turns to the DNS once more to get the address of your incoming
-mail server and contacts it, using the protocol set by the server type. At
-the end, the recipients computer will receive a bunch of envelopes including
-the one that contains your message. The MUA opens them one by one and reads
-them, making a list ordered by their sender or subject, or the date of
-sending.
-
-#### From the recipient’s comupter to their eyes
-
-When the recipient then clicks on one of these mails, the MUA will fetch all
-the relevant bits like the sender, the subject line, the date of sending and
-the contents itself and sends it to the “printing” department (I use quotes
-as they don’t really print your mail on paper, they just convert it to a
-nice image so the recipient can see it. This is sometimes referred to as a
-rendering engine). Based on a bunch of rules they pretty-print it and send
-it to your display as a new series of Morse codes. Your display then decides
-how it will present it to the user: draw the pretty pictures if it is a
-computer screen, or just raise and lower some hard dots that represents
-letters on a Braille terminal.
diff --git a/_posts/2016-01-13-emacs-implement-a-gobject-s-virtual-function.md b/_posts/2016-01-13-emacs-implement-a-gobject-s-virtual-function.md
deleted file mode 100644
index a18be49..0000000
--- a/_posts/2016-01-13-emacs-implement-a-gobject-s-virtual-function.md
+++ /dev/null
@@ -1,53 +0,0 @@
----
-layout: post
-title: "Emacs: Implement a GObject’s virtual function"
-date: 2016-01-13 13:31:12
-tags: [c, development, emacs]
-published: true
-author:
- name: "Gergely Polonkai"
- email: "gergely@polonkai.eu"
----
-
-I have recently started creating a GLib implementation of the
-Matrix.org API. For that, I have created a GObject interface,
-MatrixAPI, which has as many virtual functions as API calls (which is
-a lot, and expanding). This way I ended up with the following scenario.
-
-In `matrix-api.h` I had a struct like this, with a lot more elements:
-
- typedef struct {
- void (*initial_sync)(MatrixAPI *api,
- MatrixAPICallback callback,
- gpointer user_data,
- GError **error);
- void (*sync)(MatrixAPI *api,
- MatrixAPICallback callback,
- gpointer user_data,
- GError **error);
- …
-
-And in `matrix-http-api.c`, which implements `MatrixAPI`, I have a
-function like this (again, with a lot more elements):
-
- static void
- matrix_http_api_matrix_api_init(GObjectInterface *iface)
- {
- iface->initial_sync = i_initial_sync;
- iface->sync = i_sync;
- …
- }
-
-And every time I wanted to implement a new function from the vtable, I
-had to copy the prototype, and add an `iface->foo_bar = i_foo_bar`
-line and an actual function header for `i_foo_bar` with the same
-parameters. That’s a cumbersome job for more than 40 function
-headers. But emacs comes to the rescue!
-
-{% gist bfd36be8b515edced3d2 implement-gobject-vfunc.el %}
-
-Now all I have to do is to copy the whole vtable entry into
-`matrix_http_api_matrix_api_init()`, execute `M-x
-implement-gobject-vfunc`, then put the same vtable entry somewhere
-before the interface init function, and execute `M-x
-implement-gobject-vfunc-prototype`.
diff --git a/_posts/2016-02-26-vala-interface-madness.md b/_posts/2016-02-26-vala-interface-madness.md
deleted file mode 100644
index 3b2fd3e..0000000
--- a/_posts/2016-02-26-vala-interface-madness.md
+++ /dev/null
@@ -1,33 +0,0 @@
----
-layout: post
-title: "Vala interface madness"
-date: 2016-02-26 13:07:52
-tags: [vala, development]
-published: true
-author:
- name: "Gergely Polonkai"
- email: "gergely@polonkai.eu"
----
-
-Although I have just started making it in C, I decided to move my
-Matrix GLib SDK to Vala. First to learn a new language, and second
-because it is much easier to write GObject based stuff with it.
-
-For the first step I created a `.vapi` file from my existing sources,
-so the whole SDK prototype was available for me in Vala.
-
-I had a `MatrixEvent` class that implemented the `GInitable`
-interface, and many others were subclassed `MatrixEvent`. For some
-reason I don’t remember, I created the following header for one of the
-event classes:
-
- public class MatrixPresenceEvent : GLib.Object, GLib.Initable {
-
-This is nice and everything, but as I didn’t create an `init()` method
-for `MatrixPresenceEvent`, it tried to use the one from the parent
-class and somehow got into an infinite loop. The Vala transformer
-(`valac`), however, doesn’t mention this.
-
-Lessons learned: if you implement an interface on a subclass that is
-implemented by the parent don’t forget to add the necessary functions
-to the subclass.
diff --git a/_posts/2016-09-28-emacs-package-to-generate-gobject-boilerplate.md b/_posts/2016-09-28-emacs-package-to-generate-gobject-boilerplate.md
deleted file mode 100644
index b31a446..0000000
--- a/_posts/2016-09-28-emacs-package-to-generate-gobject-boilerplate.md
+++ /dev/null
@@ -1,46 +0,0 @@
----
-layout: post
-title: "Emacs package to generate GObject boilerplate"
-date: 2016-09-28 15:40:15
-tags: [gnome, development]
-published: true
-author:
- name: Gergely Polonkai
- email: gergely@polonkai.eu
----
-
-Before I started using Vala (and sometimes even after that) I often
-needed to generate new classes based
-on [GObject](https://developer.gnome.org/gobject/stable/).
-
-If you have ever worked with GObject in C, you know how tedious it can
-be. You need a pretty long boilerplate just to register your class,
-and, if you want to be introspectable (and readable, actually), your
-function names can grow really long.
-
-To overcome this problem back in my ViM days, I used template files,
-where I could replace class prefixes and names with a few keyboard
-macros. As I never really dug into ViM scripting other than using some
-plugins, I never got farther than
-that. [Then came Emacs]({% post_url 2014-09-17-nyanmacs %}).
-
-I use Emacs for about two years now very extensively, up to and
-including GLib-based development. I tried the template approach, but
-it felt to be a really poor experience, especially given that I made
-my feet wet with Emacs Lisp. So I dug deeper, and created a package
-for that.
-
-![A screenshot of GobGen in action]({% link images/screenshot-gobgen.png %})
-
-GobGen has its own buffer with some widgets, a bit similar to
-`customize`. You can enter the name of your new object and its parent,
-specify some settings. Then you press Generate, and you are presented
-with two new buffers, one for the `.c` and another for the `.h`
-boilerplate.
-
-There are a lot of things to do, actually. There is already an open
-issue for creating a major mode for this buffer, and there are some
-minor switches I’d like to add, but it is already usable. You can grab
-it from [MELPA](https://melpa.org/#/gobgen) (my first package there;
-woo!) or from
-my [GitHub account](https://github.com/gergelypolonkai/gobgen.el).
diff --git a/_posts/2016-10-04-git-merge-stages.md b/_posts/2016-10-04-git-merge-stages.md
deleted file mode 100644
index 84d2280..0000000
--- a/_posts/2016-10-04-git-merge-stages.md
+++ /dev/null
@@ -1,65 +0,0 @@
----
-layout: post
-title: "git-merge stages"
-date: 2016-10-04 12:46:00
-tags: [git]
-published: true
-author:
- name: Gergely Polonkai
- email: gergely@polonkai.eu
----
-
-This was a mail to my company’s internal Git mailing list, after I
-realised many colleagues can’t wrap their heads around merge
-conflicts.
-
->Hello all,
->
->I just saw this on
->the [git-users](https://groups.google.com/forum/#!forum/git-users)
->list and thought it could help you when you bump into a merge
->conflict. It is an excerpt from a mail by Konstantin Khomoutov (one
->of the main contributors on the list), with a few modifications of
->mine. Happy debugging :)
->
->>When a merge conflict is detected for a file, Git:
->>
->>1. Updates the entry for that file in the index to make it contain
->> several so-called “stages”:
->> * `0`: “Ours” version – that one which was there in this index entry
->> before we begun to merge. At the beginning of the conflict, like
->> right after the `git merge` or `git rebase` command this won’t
->> exist (unless you had the file in the index, which you didn’t, did
->> you?). When you resolve the conflict and use `git add
->> my/conflicting/file.cc`, this will be the version added to the
->> staging area (index), thus, the resolution of the conflict.
->> * `1`: The version from the common ancestor commit, ie. the version
->> of the file both of you modified.
->> * `2`: The version from `HEAD`. During a merge, this is the current
->> branch. During a rebase, this is the branch or commit you are
->> rebasing onto, which usually will be `origin/develop`).
->> * `3`: The version being merged, or the commit you are rebasing.
->>2. Updates the file in the work tree to contain conflict markers and
->> the conflicting chunks of text between them (and the text from the
->> common ancestor if the `diff3` style of conflict markers was set).
->>
->>Now you can use the numbers in point 1 to access the different stages
->>of the conflicting file. For example, to see the common ancestor (the
->>version both of you modified), use
->>
->>```
->>git show :1:my/conflicting/file.cc
->>```
->>
->>Or, to see the difference between the two conflicting versions, try
->>
->>```
->>git diff :2:my/conflicting/file.cc :3:my/conflicting/file.cc
->>```
->>
->>**Note** that you can’t use the `:0:` stage *before* you stage your
->>resolution with `git add`, and you can’t use the `:2:` and `:3:`
->>stages *after* you staged the resolution.
->>
->>Fun fact: behind the scenes, these are the files (*revisions*) `git mergetool`
->>accesses when it presents you the conflict visually.
diff --git a/_posts/2016-11-03-how-i-started-with-emacs.md b/_posts/2016-11-03-how-i-started-with-emacs.md
deleted file mode 100644
index 7454327..0000000
--- a/_posts/2016-11-03-how-i-started-with-emacs.md
+++ /dev/null
@@ -1,98 +0,0 @@
----
-layout: post
-title: "How I started with Emacs"
-date: 2016-11-03 09:58:41
-tags: [emacs]
-published: true
-authon:
- name: Gergely Polonkai
- email: gergely@polonkai.eu
----
-
-Sacha Chua has a nice
-[Emacs chat intro](http://sachachua.com/blog/2013/04/emacs-chat-intro/) article
-back from 2013. I write this post half because she asks there about my
-(OK, anyone’s) first Emacs moments, and half because I plan to do it
-for months now.
-
-I wanted to start using Emacs 6(ish) years ago, and I was like
-“C-x what”? (Note that back around 1998, I was among the
-people who exited `vi` by killing it from another terminal after a
-bunch of tries & fails like
-[these](http://osxdaily.com/2014/06/12/how-to-quit-vim/).)
-
-I tried to come back to Emacs a lot of times. And I mean a *lot*,
-about every two months. I suddenly learned what these cryptic key
-chord descriptions mean (`C` is for Control and `M` is for
-Meta, which is actually Alt), but somehow it
-didn’t *click*. I remained a ViM power user with a huge pile of
-3rd party plugins.
-Then [I found Nyan-macs]({% post_url 2014-09-17-nyanmacs %}),
-which converted me to Emacs, and it is final now. Many of my friends
-thought I’m just kidding this being the cause, but I’m not. I’m a huge
-fan of Nyan cat (did you know there is even a site
-called [nyan.cat](http://nyan.cat/)?) and since then I have it in my
-mode line:
-
-![Nyan modeline]({% link images/nyan-modeline.png %})
-
-…in my `eshell` prompt:
-
-![eshell prompt with a Nyan cat]({% link images/nyan-eshell.png %})
-
-…and I also [zone out](https://www.emacswiki.org/emacs/ZoneMode) with
-Nyan cat:
-
-![a text-based animation with Nyan cat]({% link images/nyan-zone.png %})
-
-Now on to more serious stuff. After browsing through all the packages
-provided by [ELPA](http://elpa.gnu.org/), I found tons of useful (and
-sometimes, less useful) packages,
-like
-[Helm](https://github.com/emacs-helm/helm/wiki),
-[company](http://company-mode.github.io/),
-[gtags](https://www.emacswiki.org/emacs/GnuGlobal) (which introduced
-me to GNU Global, removing Exuberant ctags from my
-life),
-[magit](https://magit.vc/),
-[Projectile](http://batsov.com/projectile/),
-and [Org](http://orgmode.org/) (OK, it’s actually part of Emacs for a
-while, but still). I still use these few, but in a month or two, I
-started
-to [version control](https://github.com/gergelypolonkai/my-emacs-d) my
-`.emacs.d` directory, so I can easily transfer it between my home and
-work machine (and for a few weeks now, even to my phone: I’m using
-Termux on Android). Then, over these two years I wrote some packages
-like [GobGen](https://github.com/gergelypolonkai/gobgen.el), and a
-small addon for Calendar
-providing
-[Hungarian holidays](https://github.com/gergelypolonkai/hungarian-holidays),
-and I found a lot more (in no particular
-order):
-[git-gutter](https://github.com/syohex/emacs-git-gutter),
-[multiple-cursors](https://github.com/magnars/multiple-cursors.el),
-[origami](https://github.com/gregsexton/origami.el),
-[ace-window](https://github.com/abo-abo/ace-window),
-[avy](https://github.com/abo-abo/avy),
-[beacon](https://github.com/Malabarba/beacon), and a lot more.
-
-What is more important (to me) is that I started using
-the [use-package](https://github.com/jwiegley/use-package) package,
-which can automatically download packages that are not installed on my
-current local system. Together
-with
-[auto-package-update](https://github.com/rranelli/auto-package-update.el),
-it is *very* practical.
-
-In addition, I started to follow the blogs of a bunch of Emacs
-users/gurus. I’ve already
-mentioned [Sacha Chua](http://sachachua.com/). She’s a charming,
-cheerful person, writing a lot about Emacs and project management
-(among other things). Another one
-is [Bozhidar Batsov](http://batsov.com/), who, among other things, had
-an initiate to lay down the foundation of
-a
-[common Elisp coding style](https://github.com/bbatsov/emacs-lisp-style-guide). Another
-favourite of mine
-is [Endless Parentheses](http://endlessparentheses.com/), whence I got
-a lot of ideas.
diff --git a/_posts/2016-11-10-edit-file-as-other-user-in-emacs.md b/_posts/2016-11-10-edit-file-as-other-user-in-emacs.md
deleted file mode 100644
index 78c72fd..0000000
--- a/_posts/2016-11-10-edit-file-as-other-user-in-emacs.md
+++ /dev/null
@@ -1,27 +0,0 @@
----
-layout: post
-title: "Edit file as another user in Emacs"
-date: 2016-11-10 08:57:12
-tags: [development, emacs]
-published: true
-author:
- name: Gergely Polonkai
- email: gergely@polonkai.eu
----
-
-I have recently found
-[this article](http://emacsredux.com/blog/2013/04/21/edit-files-as-root/) by
-Bozhidar Batsov on opening the current file as root. I barely use
-[tramp](https://www.gnu.org/software/tramp/) for sudo access, but when I do,
-I almost never use root as the target user. So I decided to fix it for my
-needs.
-
-{% gist 192c83aa0556d5cdaf4018f57b75a84b %}
-
-If the user is not specified, the default is still root. Also, if the
-current buffer is not visiting a file, I prompt for a filename. As I’m not
-an `ido` user, I didn’t bother calling
-`ido-read-file-name`; [`helm`](https://github.com/emacs-helm/helm/wiki)
-overrides `read-file-name` for me anyway.
-
-Unlike Bozhidar, I barely use this feature, so I didn’t bind this to a key.
diff --git a/_posts/2016-11-18-get-passwords-from-id-manager.md b/_posts/2016-11-18-get-passwords-from-id-manager.md
deleted file mode 100644
index f5a4eeb..0000000
--- a/_posts/2016-11-18-get-passwords-from-id-manager.md
+++ /dev/null
@@ -1,28 +0,0 @@
----
-layout: post
-title: "Get account data programatically from id-manager"
-date: 2016-11-18 12:43:13
-tags: [emacs]
-published: true
-author:
- name: Gergely Polonkai
- email: gergely@polonkai.eu
----
-
-I recently started
-using [`id-manager`](https://github.com/kiwanami/emacs-id-manager). It is a
-nice little package that can store your passwords, encrypting them with
-GPG. My original reason was to store my GitHub access token
-for [`github-notifier`](https://github.com/xuchunyang/github-notifier.el),
-but it soon turned out, it’s not *that* easy.
-
-`id-manager` is a nice package when it comes to storing your password, and
-retrieving them for your own eyes. But it cannot retrieve account data
-programatically. Taking a look into its source code, I came up with this
-solution:
-
-{% gist 8bad70502ac563864080f754fce726c3 idm.el %}
-
-I currently need only the account ID (ie. the username) and the password,
-but it’s pretty easy to add a macro to get the `memo` or `update-time`
-fields, too.
diff --git a/_posts/2016-11-30-add-python-docstring-to-the-beginning-of-anything.md b/_posts/2016-11-30-add-python-docstring-to-the-beginning-of-anything.md
deleted file mode 100644
index 1e54c53..0000000
--- a/_posts/2016-11-30-add-python-docstring-to-the-beginning-of-anything.md
+++ /dev/null
@@ -1,47 +0,0 @@
----
-layout: "post"
-title: "Add Python docstring to the beginning of anything in Emacs"
-date: 2016-11-30 07:52:37
-tags: [development, python, emacs]
-published: true
-author:
- name: Gergely Polonkai
- email: gergely@polonkai.eu
----
-
-Now that I write Python code for a living, I write a lot of functions,
-classes, and modules. What I still tend to forget, and also find tedious,
-is adding docstrings. Unlike many developers, writing documentation is not
-an enemy of mine, but it usually comes to my mind when I finish
-implementation. The procedure, roughly, is this:
-
-* Decide where I am (in a function, in a class but not in one of its
- methods, or not inside such a block at all)
-* Go to the beginning of the thing
-* Insert `"""`
-* Leave a blank line
-* Insert `"""`
-
-One of my mottos is if something takes more than one step and you have to do
-it more than twice, you should automate it after the first time. This puts
-a small(ish) overhead on the second invocation (when you implement the
-automation), but it usually worth the time.
-
-Since I use Emacs for pretty much everything coding-related (and many more,
-but that’s the topic of a different post), I wrote a small function to do it
-for me.
-
-{% gist 7b062a00d3b8a2555024521273cecfee python-docstring.el %}
-
-There are still a lot of things to improve:
-
-* it always inserts double quotes (althoug I couldn’t show a use-case when
-single quotes are preferred)
-* it doesn’t check for an existing docstring, just happily inserts a new one
-(leaving the old one alone, but generating a syntax error this way)
-* it would also be nice if I could jump to the beginning of a file even from
-a class method. I guess I will use prefix keys for that, but I’m not sure
-yet.
-
-You can bet I will implement these features, so check back soon for an
-updated version!
diff --git a/_posts/2016-12-08-slugify-in-python3.md b/_posts/2016-12-08-slugify-in-python3.md
deleted file mode 100644
index 091567a..0000000
--- a/_posts/2016-12-08-slugify-in-python3.md
+++ /dev/null
@@ -1,20 +0,0 @@
----
-layout: post
-title: "Slugify in Python 3"
-date: 2016-12-08 12:54:19
-tags: [development, python]
-published: true
-author:
- name: Gergely Polonkai
- email: gergely@polonkai.eu
----
-
-Today I needed a function to create a slug (an ASCII-only representation of
-a string). I went Googling a bit, and found an
-excellend [Flask snippet](http://flask.pocoo.org/snippets/5/). Problem is,
-it is designed for Python 2, so I came up with a Python 3 version.
-
-{% gist 1866fd363f75f4da5f86103952e387f6 slugify.py %}
-
-As I don’t really like the transliteration done in the first example
-(e.g. converting ü to ue), I went with the second example.
diff --git a/_posts/2016-12-22-finding-non-translated-strings-in-python-code.md b/_posts/2016-12-22-finding-non-translated-strings-in-python-code.md
deleted file mode 100644
index cace971..0000000
--- a/_posts/2016-12-22-finding-non-translated-strings-in-python-code.md
+++ /dev/null
@@ -1,115 +0,0 @@
----
-layout: post
-title: "Finding non-translated strings in Python code"
-date: 2016-12-22 09:35:11
-tags: [development, python]
-published: true
-author:
- name: Gergely Polonkai
- email: gergely@polonkai.eu
----
-
-When creating multilingual software, be it on the web, mobile, or desktop,
-you will eventually fail to mark strings as translatable. I know, I know,
-we developers are superhuman and never do that, but somehow I stopped
-trusting myself recently, so I came up with an idea.
-
-Right now I assist in the creation of a multilingual site/web application,
-where a small part of the strings come from the Python code instead of HTML
-templates. Call it bad practice if you like, but I could not find a better
-way yet.
-
-As a start, I tried to parse the source files with simple regular
-expressions, so I could find anything between quotation marks or
-apostrophes. This attempt quickly failed with strings that had such
-characters inside, escaped or not; my regexps became so complex I lost all
-hope. Then the magic word “lexer” came to mind.
-
-While searching for ready made Python lexers, I bumped into the awesome
-`ast` module. AST stands for Abstract Syntax Tree, and this module does
-that: parses a Python file and returns a tree of nodes. For walking through
-these nodes there is a `NodeVisitor` class (among other means), which is
-meant to be subclassed. You add a bunch of `visitN` methods (where `N` is
-an `ast` class name like `Str` or `Call`), instantiate it, and call its
-`visit()` method with the root node. For example, the `visitStr()` method
-will be invoked for every string it finds.
-
-#### How does it work?
-
-Before getting into the details, let’s me present you the code I made:
-
-{% gist 1a16a47e5a1971ca33e58bdfd88c5059 string-checker.py %}
-
-The class initialization does two things: creates an empty `in_call` list
-(this will hold our primitive backtrace), and saves the filename, if
-provided.
-
-`visitCall`, again, has two tasks. First, it checks if we are inside a
-translation function. If so, it reports the fact that we are translating
-something that is not a raw string. Although it is not necessarily a bad
-thing, I consider it bad practice as it may result in undefined behaviour.
-
-Its second task is to walk through the positional and keyword arguments of
-the function call. For each argument it calls the `visit_with_trace()`
-method.
-
-This method updates the `in_call` property with the current function name
-and the position of the call. This latter is needed because `ast` doesn’t
-store position information for every node (operators are a notable example).
-Then it simply visits the argument node, which is needed because
-`NodeVisitor.visit()` is not recursive. When the visit is done (which, with
-really deeply nested calls like `visit(this(call(iff(you(dare)))))` will be
-recursive), the current function name is removed from `in_call`, so
-subsequent calls on the same level see the same “backtrace”.
-
-The `generic_visit()` method is called for every node that doesn’t have a
-named visitor (like `visitCall` or `visitStr`. For the same reason we
-generate a warning in `visitCall`, we do the same here. If there is
-anything but a raw string inside a translation function call, developers
-should know about it.
-
-The last and I think the most important method is `visitStr`. All it does
-is checking the last element of the `in_call` list, and generates a warning
-if a raw string is found somewhere that is not inside a translation function
-call.
-
-For accurate reports, there is a `get_func_name()` function that takes an
-`ast` node as an argument. As function call can be anything from actual
-functions to object methods, this goes all down the node’s properties, and
-recursively reconstructs the name of the actual function.
-
-Finally, there are some test functions in this code. `tst` and
-`actual_tests` are there so if I run a self-check on this script, it will
-find these strings and report all the untranslated strings and all the
-potential problems like the string concatenation.
-
-#### Drawbacks
-
-There are several drawbacks here. First, translation function names are
-built in, to the `TRANSLATION_FUNCTIONS` property of the `ShowString` class.
-You must change this if you use other translation functions like
-`dngettext`, or if you use a translation library other than `gettext`.
-
-Second, it cannot ignore untranslated strings right now. It would be great
-if a pragma like `flake8`’s `# noqa` or `coverage.py`’s `# pragma: no cover`
-could be added. However, `ast` doesn’t parse comment blocks, so this proves
-to be challenging.
-
-Third, it reports docstrings as untranslated. Clearly, this is wrong, as
-docstrings generally don’t have to be translated. Ignoring them, again, is
-a nice challenge I couldn’t yet overcome.
-
-The `get_func_name()` helper is everything but done. As long as I cannot
-remove that final `else` clause, there may be error reports. If that
-happens, the reported class should be treated in a new `elif` branch.
-
-Finally (and the most easily fixed), the warnings are simply printed on the
-console. It is nice, but it should be optional; the problems identified
-should be stored so the caller can obtain it as an array.
-
-#### Bottom line
-
-Finding strings in Python sources is not as hard as I imagined. It was fun
-to learn using the `ast` module, and it does a great job. Once I can
-overcome the drawbacks above, this script will be a fantastic piece of code
-that can assist me in my future tasks.
diff --git a/_posts/2017-01-02-rename-automatically-named-foreign-keys-with-alembic.md b/_posts/2017-01-02-rename-automatically-named-foreign-keys-with-alembic.md
deleted file mode 100644
index c11e576..0000000
--- a/_posts/2017-01-02-rename-automatically-named-foreign-keys-with-alembic.md
+++ /dev/null
@@ -1,34 +0,0 @@
----
-layout: post
-title: "Rename automatically named foreign keys with Alembic"
-date: 2017-01-02 09:41:23
-tags: [mysql, development, flask, python]
-published: true
-author:
- name: Gergely Polonkai
- email: gergely@polonkai.eu
----
-
-I have recently messed up my Alembic migrations while modifying my
-SQLAlchemy models. To start with, I didn’t update the auto-generated
-migration files to name the indexes/foreign keys a name, so Alembic used its
-own naming scheme. This is not an actual problem until you have to modify
-columns that have such constraints. I have since fixed this problem, but
-first I had to find which column references what (I had no indexes other
-than primary key back then, so I could go with foreign keys only). Here is
-a query I put together, mostly using
-[this article](http://www.binarytides.com/list-foreign-keys-in-mysql/).
-
-``` sql
-SELECT constraint_name,
- CONCAT(table_name, '.', column_name) AS 'foreign key',
- CONCAT(referenced_table_name, '.', referenced_column_name) AS 'references'
-FROM information_schema.key_column_usage
-WHERE referenced_table_name IS NOT NULL AND
- table_schema = 'my_app';
-```
-
-Now I could easily drop such constraints using
-`alembic.op.drop_constraint('users_ibfk1', 'users', type_='foreignkey')` and
-recreate them with `alembic.op.create_foreign_key('fk_user_client', 'users',
-'clients', ['client_id'], ['id'])`
diff --git a/_posts/2017-03-26-category-based-logging-with-flask.md b/_posts/2017-03-26-category-based-logging-with-flask.md
deleted file mode 100644
index d808dc0..0000000
--- a/_posts/2017-03-26-category-based-logging-with-flask.md
+++ /dev/null
@@ -1,91 +0,0 @@
----
-layout: post
-title: "Category-based logging with Flask"
-date: 2017-03-26 22:00:52
-tags: [development, python, flask]
-published: true
-author:
- name: Gergely Polonkai
- email: gergely@polonkai.eu
----
-
-I’m in a team who are developing a Flask-based web application, which uses
-logging extensively. For a while now it spews out a lot of lines so the
-need arose to index them in ElasticSearch, and more importantly, to search
-through them for auditing purposes. This latter user story brought up one
-more question: why don’t we categorize our log messages? I quickly came up
-with an extended log format (`[auth]` is the new category name):
-
- [2017-01-14 00:55:42,554] [8286] [INFO] [auth] invalid password for john@example.com [at __init__.py:12, in function utils.validate_login]
-
-Here, `[auth]` is the category name. In the ideal solution, all I’d have to
-do is adding `%(category)s` to my formatter, and I could call
-`app.logger.info('auth', 'invalid password')` to achieve this output.
-Unfortunately, `Flask.logger` (and, in the background, the `logging` module)
-is not that easy to tame.
-
-As it turns out, a Flask application’s `logger` property is a subclass of
-`logging.Logger`, so my first idea was to monkey patch that class. When the
-app’s logger is initialised, it subclasses `logging.Logger` and tweaks the
-log level so it goes down to `logging.DEBUG` if the app is running in debug
-mode. This is done by using a different logger class depending on the app
-config. Fortunately it doesn’t directly subclass `logging.Logger`; it calls
-`logging.getLoggerClass()` to find which class it should extend. To achieve
-my goals, all I had to do is to subclass the original logger class, and pass
-it to `logging.setLoggerClass()` *before* I initialise my app, and I have a
-fail-safe(ish) solution. So far so good, on to the extra category
-parameter.
-
-Now if you add a new variable to the formatter like my new `%(category)s`,
-you get a nifty `KeyError` saying there is no `category` in the format
-expansion dictionary. If you add `category='auth` to the
-`app.logger.info()` calls and its cousins, it’s fine, because these methods
-use the magic `**kwarg` argument to swallow it. Everything goes well until
-control arrives to the `_log()` method: it complains about that extra
-`category` keyword argument. Taking a peek at Python’s internals, I found
-two things: `info()`, `error()`, and co. pass `*args` and `**kwargs` to
-`_log()` unmodified, and the `_log()` method doesn’t have `**kwargs`
-present in its definition to swallow it. A little doc reading later I found
-that if I want to pass extra arguments for such a formatter, I should do it
-via the `extra` keyword argument to `_log()`. A call like
-`app.logger.info('invalid password', extra={'category': 'auth'})` solved the
-problem. Now *that* is tedious.
-
-My first idea was to override all the standard logging methods like `info()`
-and `error()`, and handle `category` there. But this resulted in lots of
-repeating code. I changed the specification a bit, so my calls would look
-like `info('message', category='auth)` instead of the original plan of
-`info('auth', 'message')`: as the logging methods pass all keyword arguments
-to `_log()`, I can handle it there. So at the end, my new logger class
-only patches `_log()`, by picking out `category` from the kwarg list, and
-inserting it to `extra` before calling `super`.
-
-As you can see, this is a bit ugly solution. It requires me, the app
-author, to know about Flask’s internals (that I can set my own logging class
-before the app is created, and so the app will use it.) This means if Flask
-developers change the way how logging is done, I have to adapt and find a
-workaround for the new version (well, unless they let me directly set the
-logging class. That would make it easy.)
-
-What is worse, I must know about Python internals. I know the `extra` kwarg
-is documented well (I just failed to notice), but this made adding a new
-formatter variable so hard. Python version doesn’t change as often as Flask
-version in this project, and I think the standard library won’t really
-change until 4.0, so I don’t think my tampering with a “protected” method
-will cause any trouble in the future. Still, this makes me feel a bit
-uneasy.
-
-All the above can be circumvented if this class, and the whole solution have
-some tests. As my class uses the same method as Flask (use
-`logging.getLoggerClass()` as a base class instead of using
-`logging.Logger()` directly), if the base logger class changes in Python or
-in the running environment, my app won’t care. By checking if the app
-logger can use my special `category` variable (ie. it doesn’t raise an
-exception *and* the category actually gets into the log output), I made sure
-my class is used as a base in Flask, so if they change the way they
-construct `app.logger`, I will know about it when I first run my tests after
-upgrading Flask.
-
-If you are interested in such functionality (and more), you can grab it
-from [GitHub](https://github.com/gergelypolonkai/flask-logging-extras), or
-via [PyPI](https://pypi.python.org/pypi/Flask-Logging-Extras/).
diff --git a/_posts/2017-10-02-add-sysadmin-day-to-emacs-calendar.md b/_posts/2017-10-02-add-sysadmin-day-to-emacs-calendar.md
deleted file mode 100644
index c744c7b..0000000
--- a/_posts/2017-10-02-add-sysadmin-day-to-emacs-calendar.md
+++ /dev/null
@@ -1,27 +0,0 @@
----
-layout: post
-title: "Add SysAdmin day to Emacs Calendar"
-date: 2017-10-02 09:37:52
-tags: [emacs]
-published: true
-author:
- name: Gergely Polonkai
- email: gergely@polonkai.eu
----
-I’m a SysAdmin since 1998. Maybe a bit earlier, if you count managing our home computer. This
-means [SysAdmin Day](http://sysadminday.com/) is also celebrating me. However, my Emacs Calendar
-doesn’t show it for some reason.
-
-The solution is pretty easy:
-
-``` lisp
-(add-to-list 'holiday-other-holidays '(holiday-float 7 5 -1 "SysAdmin Day") t)
-```
-
-Now invoke `holidays-list` for any year, choosing “Other” as the category, and there you go:
-
-```
-…
-Friday, July 28, 2017: SysAdmin Day
-…
-```
diff --git a/_posts/2018-07-19-recurring-events.md b/_posts/2018-07-19-recurring-events.md
deleted file mode 100644
index 56bd2bc..0000000
--- a/_posts/2018-07-19-recurring-events.md
+++ /dev/null
@@ -1,37 +0,0 @@
----
-layout: post
-title: "Recurring events are hard"
-date: 2018-07-19 13:22:00
-tags: [development]
-published: true
-author:
- name: Gergely Polonkai
- email: gergely@polonkai.eu
----
-
-It was almost a month ago when I
-[announced]({% post_url 2018-06-26-please-welcome-calendar-social %}) the development of
-Calendar.social. Since then I’m over some interesting and some less interesting stuff; (web)
-development, after all, is just a recurrence of patterns. Speaking of recurrence, I arrived to a
-really interesting topic: recurring events.
-
-My initial thought was like “oh, that’s easy! Let’s insert all future occurences as a separate
-`Event` object, linking to the original one for the details. That makes handling exceptions easy,
-as I just have to update/delete that specific instance.” Well, not really. I mean, an event
-repeating daily *forever* would fill up the database quickly, isn’t it? That’s when I decided to
-look how other projects do it.
-
-As it turns out, my first thought is about the same as everyone else has their mind, with about
-the same reasons. Then, they usually turn down the idea just like I did. And instead, they
-implement recurrence patterns and exception patterns.
-
-My favourite is
-[this article](https://github.com/bmoeskau/Extensible/blob/master/recurrence-overview.md) so far.
-The author suggests to use the recurrence patterns specced by
-[RFC2445](http://www.ietf.org/rfc/rfc2445.txt) (the spec for the iCalendar format). The
-interesting part in this solution is how to query recurring events: you simply store the timestamp
-of the last occurence of the events (or, if the event repeats forever, the greatest timestamp your
-database supports.)
-
-Choosing the maximum date seemed to be the tricky one, but it turned out both Python and popular
-SQL backends support dates up to the end of year 9999.
diff --git a/_posts/2018-07-26-check-if-last-git-commit-has-test-coverage.md b/_posts/2018-07-26-check-if-last-git-commit-has-test-coverage.md
deleted file mode 100644
index 9432d51..0000000
--- a/_posts/2018-07-26-check-if-last-git-commit-has-test-coverage.md
+++ /dev/null
@@ -1,214 +0,0 @@
----
-layout: post
-title: "Check if the last Git commit has test coverage"
-date: 2018-07-26 12:49:52
-tags: [python,development,testing]
-published: true
-author:
- name: Gergely Polonkai
- email: gergely@polonkai.eu
----
-
-I use Python at work and for private projects. I also aim to write tests for my code, especially
-recently. And as I usually don’t start from 100% code coverage (TDD is not my game), I at least
-want to know if the code I just wrote have full coverage.
-
-The trick is to collect all the lines that changed, and all the lines that has no coverage. Then
-compare the two, and you have the uncovered lines that changed!
-
-### Getting the list of changed lines
-
-Recently, I bumped into
-[this article](https://adam.younglogic.com/2018/07/testing-patch-has-test/). It is a great awk
-script that lists the lines that changed in the latest commit. I have really no problem with awk,
-but I’m pretty sure it can be done in Python, as that is my main language nowadays.
-
-```python
-def get_changed_lines():
- """Get the line numbers that changed in the last commit
- """
-
- git_output = subprocess.check_output('git show', shell=True).decode('utf-8')
-
- current_file = None
- lines = {}
- left = 0
- right = 0
-
- for line in git_output.split('\n'):
- match = re.match(r'^@@ -([0-9]+),[0-9]+ [+]([0-9]+),[0-9]+ @@', line)
-
- if match:
- left = int(match.groups()[0])
- right = int(match.groups()[1])
-
- continue
-
- if re.match(r'^\+\+\+', line):
- current_file = line[6:]
-
- continue
-
- if re.match(r'^-', line):
- left += 1
-
- continue
-
- if re.match(r'^[+]', line):
- # Save this line number as changed
- lines.setdefault(current_file, [])
- lines[current_file].append(right)
- right += 1
-
- continue
-
- left += 1
- right += 1
-
- return lines
-```
-
-OK, not as short as the awk script, but works just fine.
-
-### Getting the uncovered lines
-
-Coverage.py can list the uncovered lines with `coverage report --show-missing`. For Calendar.social, this looks something like this:
-
-```
-Name Stmts Miss Cover Missing
-----------------------------------------------------------------------
-calsocial/__init__.py 173 62 64% 44, 138-148, 200, 239-253, 261-280, 288-295, 308-309, 324-346, 354-363
-calsocial/__main__.py 3 3 0% 4-9
-calsocial/account.py 108 51 53% 85-97, 105-112, 125, 130-137, 148-160, 169-175, 184-200, 209-212, 221-234
-calsocial/app_state.py 10 0 100%
-calsocial/cache.py 73 11 85% 65-70, 98, 113, 124, 137, 156-159
-calsocial/calendar_system/__init__.py 10 3 70% 32, 41, 48
-calsocial/calendar_system/gregorian.py 77 0 100%
-calsocial/config_development.py 11 11 0% 4-17
-calsocial/config_testing.py 12 0 100%
-calsocial/forms.py 198 83 58% 49, 59, 90, 136-146, 153, 161-169, 188-195, 198-206, 209-212, 228-232, 238-244, 252-253, 263-267, 273-277, 317-336, 339-342, 352-354, 362-374, 401-413
-calsocial/models.py 372 92 75% 49-51, 103-106, 177, 180-188, 191-200, 203, 242-248, 257-268, 289, 307, 349, 352-359, 378, 392, 404-409, 416, 444, 447, 492-496, 503, 510, 516, 522, 525, 528, 535-537, 545-551, 572, 606-617, 620, 652, 655, 660, 700, 746-748, 762-767, 774-783, 899, 929, 932
-calsocial/security.py 15 3 80% 36, 56-58
-calsocial/utils.py 42 5 88% 45-48, 52-53
-----------------------------------------------------------------------
-TOTAL 1104 324 71%
-```
-
-All we have to do is converting these ranges into a list of numbers, and compare it with the
-result of the previous function:
-
-```python
-def get_uncovered_lines(changed_lines):
- """Get the full list of lines that has not been covered by tests
- """
-
- column_widths = []
- uncovered_lines = {}
-
- for line in sys.stdin:
- line = line.strip()
-
- if line.startswith('---'):
- continue
-
- if line.startswith('Name '):
- match = re.match(r'^(Name +)(Stmts +)(Miss +)(Cover +)Missing$', line)
- assert match
-
- column_widths = [len(col) for col in match.groups()]
-
- continue
-
- name = [
- line[sum(column_widths[0:idx]):sum(column_widths[0:idx]) + width].strip()
- for idx, width in enumerate(column_widths)][0]
- missing = line[sum(column_widths):].strip()
-
- for value in missing.split(', '):
- if not value:
- continue
-
- try:
- number = int(value)
- except ValueError:
- first, last = value.split('-')
- lines = range(int(first), int(last) + 1)
- else:
- lines = range(number, number + 1)
-
- for lineno in lines:
- if name in changed_lines and lineno not in changed_lines[name]:
- uncovered_lines.setdefault(name, [])
- uncovered_lines[name].append(lineno)
-
- return uncovered_lines
-```
-
-At the end we have a dictionary that has filenames as keys, and a list of changed but uncovered
-lines.
-
-### Converting back to ranges
-
-To make the final result more readable, let’s convert them back to a nice `from_line-to_line`
-range list first:
-
-```python
-def line_numbers_to_ranges():
- """List the lines that has not been covered
- """
-
- changed_lines = get_changed_lines()
- uncovered_lines = get_uncovered_lines(changed_lines)
-
- line_list = []
-
- for filename, lines in uncovered_lines.items():
- lines = sorted(lines)
- last_value = None
-
- ranges = []
-
- for lineno in lines:
- if last_value and last_value + 1 == lineno:
- ranges[-1].append(lineno)
- else:
- ranges.append([lineno])
-
- last_value = lineno
-
- range_list = []
-
- for range_ in ranges:
- first = range_.pop(0)
-
- if range_:
- range_list.append(f'{first}-{range_[-1]}')
- else:
- range_list.append(str(first))
-
- line_list.append((filename, ', '.join(range_list)))
-
- return line_list
-```
-
-### Printing the result
-
-Now all that is left is to print the result on the screen in a format digestable by a human being:
-
-```python
-def tabular_print(uncovered_lines):
- """Print the list of uncovered lines on the screen in a tabbed format
- """
-
- max_filename_len = max(len(data[0]) for data in uncovered_lines)
-
- for filename, lines in uncovered_lines:
- print(filename.ljust(max_filename_len + 2) + lines)
-```
-
-And we are done.
-
-### Conclusion
-
-This task never seemed hard to accomplish, but somehow I never put enough energy into it to make
-it happen. Kudos to Adam Young doing some legwork for me!
diff --git a/_posts/_md-to-org.py b/_posts/_md-to-org.py
deleted file mode 100755
index 38a8d56..0000000
--- a/_posts/_md-to-org.py
+++ /dev/null
@@ -1,58 +0,0 @@
-#! /usr/bin/env python3
-
-import re
-import sys
-
-import yaml
-
-
-RENAME_REGEX = re.compile(r'\.(markdown|md)')
-FRONT_MATTER_REGEX = re.compile(r'^---\n([\s\S]+?)\n---', re.MULTILINE)
-
-def convert(filename):
- org_filename = re.sub(RENAME_REGEX, '.org', filename)
-
- with open(filename) as md_file:
- markdown = md_file.read()
-
- filename = re.sub(RENAME_REGEX, '', filename)
-
- # Get the front matter
- m = re.match(FRONT_MATTER_REGEX, markdown)
- if not m:
- print(f'No front matter found in {filename}')
-
- return
-
- front_matter = m.groups()[0]
- markdown = markdown[len(front_matter) + 10:]
- front_matter = yaml.load(front_matter)
-
- markdown = '\n'.join(' ' + line if line else '' for line in markdown.split('\n'))
-
- tags = ''
- permalink = ''
- date = front_matter['date'].isoformat().replace('T', ' ')
-
- if 'tags' in front_matter:
- tags = ' :' + ':'.join(front_matter['tags']) + ':'
-
- if 'permalink' in front_matter:
- permalink = f' :PERMALINK: {front_matter["permalink"]}\n'
-
- markdown = markdown.replace('`', '~')
-
- org_content = f'''* {front_matter['title']}{tags}
- CLOSED: [{date}]
- :PROPERTIES:
- :EXPORT_FILENAME: {filename}
-{permalink} :END:
-
-{markdown}'''
-
- with open(org_filename, 'w') as org_file:
- org_file.write(org_content)
-
-if __name__ == '__main__':
- for filename in sys.argv[1:]:
- convert(filename)
diff --git a/about.html b/about.html
deleted file mode 100644
index db8b6bf..0000000
--- a/about.html
+++ /dev/null
@@ -1,30 +0,0 @@
----
-layout: page
-title: About the author
-permalink: /about/
----
-{% include about.html %}
-
-
------BEGIN GEEK CODE BLOCK-----
-Version: 3.1
-GCM/CS/IT/O d--(+) s++:- a C++$ UB++L++++$ P++ L+++$ E++>$ W+++$ N o? K w+ O M- V PS+ PE Y+ PGP+(++) t+ 5 X R !tv b+ DI++ D+ G e h----() r+++ y++++
------END GEEK CODE BLOCK-----
-
+ The page you are looking for is not here.
+ Maybe it was but I have removed it.
+ Most likely it was intentionally.
+ If you think I made a mistake, please tell me.
+
+
+
+
+
diff --git a/content/pages/about.rst b/content/pages/about.rst
new file mode 100644
index 0000000..b066a52
--- /dev/null
+++ b/content/pages/about.rst
@@ -0,0 +1,41 @@
+About the author
+################
+
+:url: about/
+:save_as: about/index.html
+:status: published
+
+Gergely Polonkai is a systems engineer of a telco company, and also a freelancer self- and
+software developer.
+
+He is learning about different IT subjects since the late 1990s. These include web development,
+application building, systems engineering, IT security and many others. He also dug his nose
+deeply into free software, dealing with different types of Linux and its applications, while also
+writing and contributing to some open source projects.
+
+On this site he is writing posts about different stuff he faces during work (oh my, yet another IT
+solutions blog), hoping they can help others with their job, or just to get along with their brand
+new netbook that shipped with Linux.
+
+.. epigraph::
+
+ I believe one can only achieve success if they follow their own instincts and listen to, but
+ not bend under others’ opinions. If you change your course just because someone says so, you
+ are following their instincts, not yours.
+
+I have my own GeekCode
+======================
+
+Because who doesn’t:
+
+.. include:: ../files/geekcode.txt
+ :code: text
+
+And i have a `public PGP key <{static}../gergely@polonkai.eu.asc>`_
+===================================================================
+
+Its fingerprint is ``13D6 0476 B35A FCA8 BC01 3A32 F42B BA58 B074 0C4C`` and you can copy its
+contents from here:
+
+.. include:: ../gergely@polonkai.eu.asc
+ :code: text
diff --git a/content/pages/disclaimer.rst b/content/pages/disclaimer.rst
new file mode 100644
index 0000000..78a9cee
--- /dev/null
+++ b/content/pages/disclaimer.rst
@@ -0,0 +1,25 @@
+Disclaimer
+##########
+
+:url: disclaimer/
+:save_as: disclaimer/index.html
+:status: published
+
+.. image:: https://i.creativecommons.org/l/by-sa/4.0/80x15.png
+ :alt: Creative Commons License
+ :target: http://creativecommons.org/licenses/by-sa/4.0/
+
+This work by `Gergely Polonkai `_ is licensed under a `Creative Commons Attribution-ShareAlike 4.0 International License `_.
+
+
+Therefore, views expressed on this site are my personal views and do not necessarily reflect the
+views of my employer. The articles and thoughts on this site are solely my own unless otherwise
+stated, and therefore, they do not represent (nor are they intended to represent) the positions,
+opinions or policies of my employer or any other company or person.
+
+If you happen to use anything in your own work, please put a backlink to the given article(s) or
+the main page.
+
+The social media icons in the contact menu are made by `Rogie King `_.
+
+That thing you may call the site’s design is made using `Twitter Bootstrap `_.
diff --git a/content/pages/resume.html b/content/pages/resume.html
new file mode 100644
index 0000000..62fa5f8
--- /dev/null
+++ b/content/pages/resume.html
@@ -0,0 +1,252 @@
+
+
+
+
+
+ Resume
+
+
+
+ I am Gergely Polonkai (sometimes referred
+ to as W00d5t0ck or Polesz), a software
+ developer, systems engineer and administrator. I was born on 7 March, 1983 in Budapest, Hungary. I spent
+ my life moving here-and-there in the country, and finally settled in Veresegyház.
+
+
+
+ You can reach me on gergely@polonkai.eu,
+ or by phone on +36 (30) 7375-706. I
+ fluently speak and write English and Hungarian and currently learning Icelandic.
+
+
+
+ I have graduated in 2001 from Táncsics
+ Mihály Szakközépiskola, Szakiskola és Kollégium, an architecture high
+ school based in Veszprém, Hungary. There, I learned about electricity and elevators, while getting my feet wet in the area
+ of IT systems engineering. Together with some teachers, we developed the IT infrastructure of the school,
+ building it from scratch with Windows XP
+ based clients, and Debian GNU/Linux servers with
+ Squid proxy, an Apache
+ httpd web server, Exim+Courier IMAP based internal mailing and a Samba file server. Meanwhile, I have created the school’s first
+ web page using Perl CGI, and later it’s replacement in PHP. Although I did that as a student, I consider it my first
+ job.
+
+
+
+ My first contract was made in 2002 with a small Budapest
+ based ISP that served Internet connection to a large warren. I have mastered Linux
+ based firewalling and routing
+ there using iptables, and tc for QoS. I have also created a web
+ page for the company using PHP and MySQL.
+
+
+
+ After that I contracted with a small web development
+ company in 2004. Here I was in the role of both a
+ web developer and a systems administrator. I
+ have mastered PHP there, together with MySQL administration. I also built a small router/firewall out of a PC for office needs.
+
+
+
+ My next job came in 2006, when I contracted with a small
+ VoIP company developing a call center software based on
+ Asterisk. My job here was to create a base system
+ for this software as small as possible, while managing the old, Ubuntu based
+ ones. For the new version we targeted Gentoo Linux
+ because of its possible small size, and performance reasons.
+
+
+
+ The job that followed was with a world-wide IT services company in 2007, where I became a member of a large team supporting and
+ administering several thousand servers, mostly based on Red Hat Enterprise Linux and SUSE Linux
+ Enterprise Server. There I mastered cluster technologies (both Heartbeat 2 and Red Hat
+ Cluster), SAN, iSCSI and NFS based storages, Apache httpd and Tomcat
+ web servers, administration of MySQL and Oracle 10g Databases, Bacula based backup, Windows 2003
+ Server and Windows Server 2008 (both
+ standalone and cluster) with Active Directory,
+ Group Policy, Microsoft
+ Exchange Server 2005 and Microsoft SQL Server
+ 2005, Xen Open Source virtualization, Citrix XenServer and XenApp, VMware ESXi
+ and vSphere, Nagios monitoring (and monitoring
+ in general), and last, but not least, Linux
+ hardening (SELinux, firewalls of different
+ kinds, fighting application security issues).
+
+
+
+ All this knowledge came in very handy, when I went to a leading Hungarian
+ financial company in 2010. The IT infrastructure was in a
+ very bad shape there, and my job was to rebuild the Linux parts from scratch. We
+ utilized Debian GNU/Linux servers (both standalone
+ and Heartbeat 2 clusters), Apache httpd web servers, Exim+Courier IMAP for mailing,
+ Bacula based backup, MySQL and PostgreSQL database servers, Oracle Databases (both 10g and 11g), Microsoft SQL Servers
+ (both 2005 and
+ 2008), Windows 2003 Server and Windows
+ Server 2008 (both standalone and clusters), Active
+ Directory, Group Policy, centralised ESET NOD32 anti-virus, Windows
+ cluster based file
+ server with AD backend, WSUS, OTRS::ITSM helpdesk, Zabbix based
+ monitoring, virtualization with Citrix XenServer,
+ IT security solutions with SonicWall appliances,
+ SELinux, Snort and
+ iptables, Perl for system administration scripts, and PHP and the Symfony 2 framework for
+ internal web development. Although much has changed in this list since then, it
+ was my best and most challenging experience so far.
+
+
+
+ I left that company in 2013 to work as a freelancer developer and a systems
+ engineer for a startup network monitoring
+ company. Here we were building a help desk system using open source
+ products like OTRS::ITSM, OpenLDAP, and Zabbix. I also dug my
+ nose into Docsis based ISP networks and SIP-based telephony.
+
+
+
+ Unfortunately our main employer went bankrupt in 2014, so
+ after a few months of freelancing I got a new job at the R&D division of a
+ leading telecommunications company. My current role is pretty close to
+ DevOps. Nowadays I’m developing a Django-based
+ internal web application, while maintaining internal scripts written in both Perl, Python, bash and tcsh or trying to
+ migrate the internal source code repositories from ClearCase to Git.
+
+
+
+ I left that company in 2016, as such a slow moving giant couldn’t really keep up
+ with my pace. I signed with another startup creating games capable of analysing
+ work behaviour. Here we mainly use Flask, Cassandra, and Tensorflow.
+ Unlike the previous one, this is a true learning organization, and given its size,
+ it is capable of taking quick turns if market changes (and that’s exactly what I
+ need).
+
+
+
+ In my free time, I wander in forests, take pictures, and
+ sometimes manipulate them with the GIMP. Sometimes
+ I write short fantasy or sci-fi novels using LibreOffice. I am also developing some software in C, Python, and Vala, whose source code is managed with Git. When I’m not in the mood for writing, I go and check out the
+ news on several technical areas, mostly IT and engineering, or give a try to a new
+ programming language in the name of “why not?”.
+
+
+
+
+
+
+
+
diff --git a/pgpkey b/content/pgpkey
similarity index 100%
rename from pgpkey
rename to content/pgpkey
diff --git a/content/stories/a-new-home.rst b/content/stories/a-new-home.rst
new file mode 100644
index 0000000..cfd9d2b
--- /dev/null
+++ b/content/stories/a-new-home.rst
@@ -0,0 +1,29 @@
+A new home
+##########
+
+:date: 2016-05-09T15:19Z
+:status: published
+
+This is an excerpt from a novel of mine. The tree is the prophet of the highest god in that
+universe and thus can see everything that was or will ever be. It is said that whoever sleeps
+among its roots or branches will see colourful dreams about these stories, so it is often visited
+by bards.
+
+Zuuron and Niminer couldn’t go any farther. It looked like there is no way out of this grove, as
+the way they came in was blocked by the angry mass who wanted to catch them. A breeze came
+suddenly, and it sounded as the leaves were talking. “Come, rest between my roots. I’ll hide you
+until they get away.”
+
+Having no other choice, the couple hid among the roots and waited. The tree kept its promise and
+hid them well, and when the mob left the grove they came out. While they were fleeing, they
+didn’t recognize how beautiful this place was: green grass was everywhere, and colorful fruits
+were hanging from the nearby trees like little lanterns. They fought themselves, as they didn’t
+want to leave.
+
+“You don’t have to” the tree whispered, as if it can read their minds. ”They won’t find their way
+back here, not until I let them. You can live here in peace.”
+
+In the following years they have built a home around the tree while listening the stories it told
+about times even their grandparents could not remember. And as the tree went on with these
+stories even after they finished building, they started painting and writing them down, and they
+hung their creations on the tree’s branches so others who may come after them can remember, too.
diff --git a/content/stories/animal-spirit.rst b/content/stories/animal-spirit.rst
new file mode 100644
index 0000000..25b2e8a
--- /dev/null
+++ b/content/stories/animal-spirit.rst
@@ -0,0 +1,21 @@
+Animal spirit
+#############
+
+:date: 2012-09-18T16:20Z
+:status: published
+
+They surprised her; four men, overpowering her for sure. It rarely happened to her, but she was
+prepared. The men were smiling in lusciousness; they were circling around her for a while, but
+this was enough for her to ask help from the Spirit world. She closed her eyes, humming. They
+didn’t even hear it, just saw that she’s tapping with her feet. A scratch in the air; a scar
+appears on the face of the man just in front of her. It wasn’t deep, but it was obvious it
+couldn’t be done by the girl, standing about five feet from them. They looked at each other and
+sprang at the girl as one, but she evaded them with a cat’s dexterity. She got behind them
+easily. Her humming could be heard well now, although they couldn’t understand her words. Her
+feet were still doing the rhythmic tapping.
+
+The attackers got nervous and furious, and this was even strengthened by the scratches they got
+seemingly from nothing. They got tired and pain took over their minds. They attacked with anger
+and they mostly followed the girl’s voice. Through the mist of anger and pain, in the corner of
+their eyes they saw what is happening, but it was too late. The black panther followed the moves
+of her protégé, disarming all four men.
diff --git a/content/stories/coincidents.rst b/content/stories/coincidents.rst
new file mode 100644
index 0000000..9ac0ad6
--- /dev/null
+++ b/content/stories/coincidents.rst
@@ -0,0 +1,25 @@
+Coincidents
+###########
+
+:date: 2015-08-04T17:21Z
+:status: published
+
+They were both without someone for a while now without any intention, spoken or not, to find a new
+one. They sat next to each other on the train and listened to music. They both peeked to each
+other’s screen to check what the other one is listening to and it turned out to be the same album
+of the same artist. “Strange coincident” they both thought and looked away. The same thing
+happening three times on consecutive days, though, couldn’t have been a coincident.
+
+On the fifth day one of them left the earphones at home; it was malfunctioning thus useless. They
+sat next to each other again, more of chance than by will. The other one saw the lack of
+earphones and offered half of theirs without words. They listened to the same music again. The
+next day this other one brought a splitter and a second pair of earphones to make things better.
+
+The other day, one of them brought an e-book reader and started reading a book just when the other
+sat down. Just out of curiousity the other peeked into the book, started reading just to find out
+if they have the common grounds in books, too. They waited for each other at the end of each page
+without signals. This continued until they reached the end of the book; by then, they almost
+cuddled each day.
+
+Finally, one of them decided to speak. “We totally forgot to introduce ourselves, my name is…”
+the sentence started, but couldn’t be finished; it was interrupted by a passionate kiss.
diff --git a/content/stories/destructive-creation.rst b/content/stories/destructive-creation.rst
new file mode 100644
index 0000000..efaadf1
--- /dev/null
+++ b/content/stories/destructive-creation.rst
@@ -0,0 +1,45 @@
+Destructive Creation
+####################
+
+:date: 2011-12-30T18:22Z
+:status: published
+
+They stood on the top of a hill, looking sadly at the town and the forest slowly devoured by it.
+They really tried everything. They asked the workers, even the higher management to stop this, or
+it won’t end well. They told that the forest will get fed up with this and will do whatever it
+must to protect itself. No one listened. No one ever listened to what they said, but still, they
+were always right.
+
+Today’s try was the last one to stop the logging. Naturally, they laughed in their faces and
+shooed them away. They always got away with that much, no one ever hunted them as they were only
+two “green guys” who only have big mouths. But the spirit of the forest didn’t think that. It
+saw the potency and power in them to make their prophecies happen. But somehow it wasn’t enough
+to teach the lesson to a whole city, as the forest spirit was weak, too. It was weakened by the
+death of its children, so as the two youngster left the town, they made an alliance without words.
+
+Everything looked small and insignificant from the top of the hill, but still, they felt it
+actually isn’t. If they do it here and now, thousands, maybe tens of thousands will die. Once.
+The others may be saved, if they want to be saved. Or they will be marked as murderers and will
+be chased forever. But they will figure that out; this is much more important now.
+
+They sighed together. “Please, stop it. It’s still not too late.” It just got through their
+mind, and in the very same moment a cold chill ran down from the hill, through the town. But the
+machines went on, only a few workers noticed the strange wind. They may have understood, some of
+them even went off for a short rest. They may survive, if the forest wants that.
+
+The boy raised his right arm, his palms towards the sky as if he’s asking for aid. The girl took
+his other hand, then offered her body to the spirit of the forest. A tear drop ran down on their
+faces, accompanied by a smile. They felt calm, as if they knew only better may come after this.
+But they still waited, maybe they understand everything down there. But finally, that hand in the
+air dropped, as if life escaped from it suddenly. Quiet rumble crawled up the hill: the spirit of
+the forest started off with all the powers of them for its destructive journey. They turned
+around, satisfied, and left for somewhere, hopefully for home.
+
+They still heard the noise from down there, but they didn’t have to look to know what is
+happening. The forest got fed up and stroke back. Huge roots pulled the machines under the
+ground and smashed houses to dust. They destroyed, devoured everything, not sparing anyone living
+there. Just like they did with its children. The once peaceful forest was raging, engulfing
+everything within reach.
+
+The murmuring slowly faded away, and at the place of the town there was only a cloud of dust at
+the foot of the hill. And all of a sudden, with the promise of new life, it started raining.
diff --git a/content/stories/dreamers.rst b/content/stories/dreamers.rst
new file mode 100644
index 0000000..ac2aca3
--- /dev/null
+++ b/content/stories/dreamers.rst
@@ -0,0 +1,33 @@
+Dreamers
+########
+
+:date: 2011-02-11T11:23Z
+:status: published
+
+We are the Dreamers. Others hardly believe that anyone could do it, although practically it's
+possible. You just have to believe, but most people miss this ability.
+
+We are all different, and it’s just right this way. Should we be similar, the world would turn
+completely grey. Of course, some think it already did; they are the ones who can’t look behind
+things. They only see monotonity because they can’t change their own, monotonous life. But it
+takes only one step to become a Dreamer, they just think they would step in a chasm.
+
+We, Dreamers are all different, either. Some of us just see, forward or backward in time. Even
+this is a great experience, to see what is missing from history books, or what is going to get to
+them later. But most of us can do much more. With our will and dreams we slowly transform the
+world around us to make our life more beautiful and colourful. We can see all shades of grey, but
+what is more important: we can see the colours. We make our life beautiful with them, and the
+life of people around us, too. Because that’s our job. Some think this is selfish because if we
+can do such a thing, we must make all the bad things disappear from this world. They are just
+jealous. They want to become Dreamers, but their lust for power makes them unable to. They
+really would be selfish. Maybe they will learn that sadness and bad things are one of all the
+colours, and besides laughing they will learn to cry a bit, too. Because you must know that, too.
+But they all teach their kids whoever cries is sad. They just tend to forget mentioning that if
+everyone would be happy, the world wouldn’t be such a funny place. It would even become boring.
+
+Dreamers… As i said, we are many. It’s easy to find us because even we find each other easily
+through our dreams and intuitions. And where we gather, huge colourful spots are created that are
+visible to even the average people. At first they will find us weird, light-headed, or ever sick.
+Then they realise that the colourful world is actually a good thing and soon, one step at a time,
+they become Dreamers, too. The colourful spots become bigger and bigger this way, and who knows?
+We may colour everyone a bit sooner or later. But we are here even until then. Us, Dreamers.
diff --git a/content/stories/first-travel-together.rst b/content/stories/first-travel-together.rst
new file mode 100644
index 0000000..c698174
--- /dev/null
+++ b/content/stories/first-travel-together.rst
@@ -0,0 +1,78 @@
+First travel together
+#####################
+
+:date: 2012-01-03T19:23Z
+:status: published
+
+In the middle of the panel jungle, on the rooftop of a house a man who called himself Megron was
+talking to his apprentices when the wind began to blow. Everyone looked him up in awe that when
+he was talking about the spiritual power of the air, the wind was blowing stronger and stronger.
+The man stopped. He didn’t channel energies during his speech, he didn’t even think it would be
+impressive or even funny if he would. He looked around suspiciously, but as he didn’t sense
+anything out of the ordinary, he stood up, walked to the edge of the roof and looked down to the
+city. It didn’t take much time for his sharp eyes, not even from this far to see the encounter of
+those two creatures.
+
+“Get away from the roof!” he said. “We continue later. Molden, help them get to a secure place.”
+
+They understood each other without words after so much time together, so Molden just nodded and
+leaped towards the narrow hole they used to get to the roof. He knew that if Megron is this
+excited there must be something big happening. That many years of training, and he can finally
+use his powers today.
+
+All of the apprentices got through the hole slowly and got to the corridor on the tenth floor,
+then took the stairs to Megron’s flat on the first. Molden has just closed the door when the
+first quakes began. The others got excited. They used to hear about Megron’s theories about the
+end of the known world is nigh, and there will be significant events until then, but none of them
+thought it may turn out true.
+
+Molden tried to calm them, told them it will be over soon but the quakes didn’t seem to stop.
+They even grew stronger. The pictures and shelves dropped from the walls and the whole house was
+shaking. The face of one of the girls was slowly taken over by worry.
+
+“Gardan? Is everything all right?” Molden asked putting his hand on the girl’s shoulder. The
+girl tried to hide her feelings and just nodded.
+
+“You are worried of your parents, aren’t you?” continued Molden.
+
+A huge tear drop rolled down on Gardan’s face. She was fighting her emotions so she could only
+nod again.
+
+“I know you want to go but in the current situation it is a very bad idea. Don’t worry, we take
+care of them.”
+
+Gardan could not hold it in any more and yelled everything at Molden that she never dared to tell
+before.
+
+“How could you know? You haven’t seen your mother for years and don’t even know your father! You
+try to look like a grand master telling that you protect us, even them at the other end of the
+city, but how? You never did such a thing, just sat in the shadow of Megron and drank his words
+as if you could become someone this way. Well, you did not, and you are not even my father to
+tell me what to do or what not!”
+
+Molden got angry for a brief moment. He was about to yell back, to show this little girl who he
+actually is. But instead he reached for Gardan’s coat.
+
+“Close all the windows. If they can’t stand the earthquakes, get to the inner room, as far from
+any kind of glass as possible. Megron will be here soon and help you. Gardan, you take your coat
+and we go.”
+
+The girl, just like the others were so surprised they couldn’t say a word. Most of them shared
+Gardan’s opinion, they thought Molden is just a weak shadow of Megron who can’t do anything
+without his master. Finally, Gardan took her coat and got through the door.
+
+They walked fast from street to street but were soon blocked by the panicked masses. The girl
+didn’t dare to say anything just followed Molden silently who was darting forward, passing by and
+through the masses, choosing the least crowded streets by instinct.
+
+It was about fifteen minutes since they left Megron’s flat of safety, but only now had Gardan
+thought she should take the lead. “He doesn’t even know where I live” she thought and she reached
+out for Molden’s shoulder when the other thought came. “…yet he goes in just the right direction.
+Maybe Megron told him where is each of us from.” “No, I just see where your heart takes you” said
+the man as if he was replying to her thoughts. “Or, if you like, I read your mind.”
+
+A light chill ran down Gardan’s spine. She felt the weight of Molden’s words and began to feel
+guilty about what she said minutes before at Megron’s flat.
+
+They may have been half way there when the earthquakes stopped and the man came to a halt. “Can
+you see that red mist?” he asked.
diff --git a/content/stories/little-emma.rst b/content/stories/little-emma.rst
new file mode 100644
index 0000000..fa65320
--- /dev/null
+++ b/content/stories/little-emma.rst
@@ -0,0 +1,37 @@
+Little Emma
+###########
+
+:date: 2012-08-07T14:18Z
+:status: published
+
+As of date, little Emma hasn’t eaten for weeks. The whole family feared for her as only those
+tubes entangling her body kept her alive. Still, her eyes seemed happy, though she was dizzy and
+sometimes saw little globes of light. She was awake for hours, much longer than she used to be in
+the last few weeks. Her parents sat next to her for minutes, caressing her, just to leave the
+room moments later to burst in tears. They all knew what was yet to come. She closed her eyes in
+her mother’s caring arms while her dad hugged both of them tight.
+
+Even from behind the tears they saw when that *something* appeared in the middle of the room. A
+thin but beautiful woman; her clothes, as if they were made of millions of ribbons, waved in the
+air at each of her steps. She was beautiful and scary as she approached the bed, covering the
+vibrating light of the ceiling neon lamps.
+
+The little girl looked up and smiled. Then, as if she knew this tall woman long ago, she got up
+from the bed and hugged her. The woman took her hand, but before they left she said “thank you
+for taking care of her. You were very good parents, showing everyone you can raise a child even
+if she’s this fragile. You loved her and raised her as a bonding family even if you knew I will
+come for her soon. It couldn’t happen any other way. Please, never forget this little Soul as
+you gave so much to her. Still, know that where we are headed now, she won’t have any similar
+problems. She will return anew when the time comes. You succeeded on the first trial, but what
+comes next will be much harder. Let her go so she can take this journey.”
+
+Then she turned away. Spreading her huge, purple, angel-wings they left through a gate, to the
+place from where there is no return.
+
+*Based on a true story.*
+
+Little Emma was family to me and died at the age of six, with chronic eating disorder the doctors
+barely understand. She had six heart attacks before she turned two. Her parents were with her
+until the last moment. Unfortunately, they failed their second trial and ended up divorcing. I
+wrote this back in 2012, after her burial, knowing the purple winged Angel of Death took her to
+that place she promised. Blessed be, tiny Soul.
diff --git a/content/stories/protecting-light.rst b/content/stories/protecting-light.rst
new file mode 100644
index 0000000..c143769
--- /dev/null
+++ b/content/stories/protecting-light.rst
@@ -0,0 +1,54 @@
+Protecting light
+################
+
+:date: 2011-12-29T13:17Z
+:status: published
+
+“Can you see that red mist?”
+
+“Yes I can. It looks like it’s closing in.” Gardan answered.
+
+“It does. When it gets here, close your eyes and seal yourself.”
+
+The mist slowly engulfed them. The girl closed her eyes and channeled all her energies to seal
+herself from the outer world.
+
+“Stronger!” Molden shouted.
+
+“But it hurts!” she replied, almost crying.
+
+No, it’s the mist that burns you. Seal! Stronger!”
+
+She focused, but the mist was biting her everywhere as if a desert storm was blowing tiny grains
+of sand through her body. It felt like it was eating up things from her mind that was kind or
+important for her.
+
+“This thing… it takes away my memories!”
+
+“SEAL!” Molden shouted once more. “Totally! And don’t even leave until the storm goes away.”
+
+“I can’t!” the girl shouted, crying.
+
+At this very moment all the memories she feared for this mist burst up from her. Her mother’s
+embrace, her old and new friends who she could always counted on whether she was happy or sad.
+They will protect her. Molden would, too, if he could, but he had to care about his own survival.
+She looked at the man; he was standing still, staring at the mist. As if he didn’t feel it, as if
+the millions of shards wouldn’t bite him, wouldn’t cut him from the inside. Even his hair was
+motionless, despite the strong gale around them. How did he do it? Nothing could be seen on his
+face. He was just standing there like a statue. His eyes… those green eyes full of life are now
+staring at the mist callously. Then she sensed those small dots of light. They were swirling
+around Molden and was catching and diverting the red shards of the mist. Were they emotions,
+contraptions of a weird new technology, or even magic, she couldn’t decide yet. But she realised
+it is Molden who controls them. That’s why he didn’t heed her. He sealed himself, totally. He’s
+watching the mist to know when he can open again.
+
+That was when she caught a glimpse of those small spheres around herself. They were hovering next
+to her, glowing white in the mist that cut to the bones. The storm tried to sweep them away, but
+the didn’t allow it. They were the feelings that burst out of her a moment ago. The memories she
+loved so much she didn’t want to ever loose them. Tears were bursting in her eyes while she
+whispered “Help me, please!”
+
+The globes started moving. Though feebly, but they started to pursue the red shards. As Gardan
+felt the cuts getting weaker, she tried to strengthen those spheres, and they became lightning
+fast catching and diverting the red shards of the mist. Gardan stood still, her eyes staring at
+the mist callously.
diff --git a/content/stories/resurrection.rst b/content/stories/resurrection.rst
new file mode 100644
index 0000000..0f341f1
--- /dev/null
+++ b/content/stories/resurrection.rst
@@ -0,0 +1,73 @@
+Resurrection
+############
+
+:date: 2009-10-31T12:16Z
+:status: published
+
+“Good morning, inspector.”
+
+“Good morning. What happened?”
+
+“We don’t know yet. A jogger found this young man about half an hour ago. No sign of violence,
+no injuries, no nothing. He has no ID, no driver’s license, no passport nor anything that could
+give us a hint on who he might be.”
+
+“Doctor?”
+
+“Just as he says. I can tell you more in the morgue. The only thing I’m sure about is he’s dead
+for about two or three hours.”
+
+“Thank you. Please check the surroundings, maybe we get to know something about him or his
+death.”
+
+Two strong men put the body in the van and transported it to the morgue. They put it in the
+“waiting room” until the pathologist arrives.
+
+John woke up.
+
+“It’s so cold here… wait a minute, where am I?” he thought and looked around. Beds everywhere,
+like the ones in a hospital, but all of them are empty. Dim, blue light, misty, cold air. He
+tried to remember what happened to him. His last memory was that he’s drinking wine with his
+friends. Not much, at least not that much it could hit him this hard. He realized where he is.
+“My goodness, it’s a morgue! How the heck did I get here?”
+
+He heard the lock clicking, and a doctor-like figure entered. “Finally someone!” he shouted.
+“Why am I in a morgue? Is this a joke? Because if so, it’s not funny…” he said. The doctor, as
+if he hadn’t heard John’s words, stepped next to John’s bed and lifted the plastic sheet. His
+face turned sad as he saw how young the boy was who lied in front of him. John looked down and
+was shocked. He saw himself lying there.
+
+“He can’t hear you.” a voice said, but John didn’t look at the source.
+
+“Is that… me? Am I dead?” he finally asked, still staring at his own corpse.
+
+“Not yet, no. But you have only a few minutes before your body gives up.”
+
+“How did I die?” he asked, finally looking up at the man speaking. “I can’t remember a thing.”
+
+“Well, technically… you can say I killed you.”
+
+John’s face changed from shocked to angry. “What did you do?”
+
+“Yes, you heard it right. It was me, although it is not actually a murder. I just asked you to
+leave your body for a few minutes. Looks like this state takes a little longer, I’m terribly
+sorry about that.” the man said. John was still shaken from the scene so it took time to
+understand what he said.
+
+“What do you mean I have only a few minutes left?” he finally asked as he calmed down.
+
+“I trusted you, John. I thought you are a Witch as you always said you are. Now it seems you
+don’t even know the basics.” The man was angry, John clearly felt that. “You didn’t notice me
+talking to you through dreams, and also don’t remember my command for your bodies to split. And
+last, but not least, you don’t even have an idea on how to glue them together so your life won’t
+end.”
+
+“But… this can’t happen! This is impossible! If anyone would have such power in their hands they
+would already rule the whole universe by now!” came the reply from John, who seemed to ignore the
+fact that he’s dying in front of his own eyes.
+
+“That, my friend, is the biggest mistake of your life. And, seeing your body here, it looks like
+it is the last one. We will meet in your next life. It was a pleasure knowing you.”
+
+At this very moment the doctor made the first dissection on John’s body; fresh, red blood oozed
+from the wound. John woke up instantly with a loud scream.
diff --git a/content/stories/samillinors-pride.rst b/content/stories/samillinors-pride.rst
new file mode 100644
index 0000000..c4bdb5f
--- /dev/null
+++ b/content/stories/samillinors-pride.rst
@@ -0,0 +1,205 @@
+Samillinor’s Pride
+##################
+
+:date: 2012-08-10T11:15Z
+:status: published
+
+It was time again. Day after day it was the same, and Samillinor was more and more upset about
+it. Since the temple was built her daily routine was the same: wake up with the Light, prepare
+the ritual, make the ritual, fail the ritual, eat something which she felt like it had no taste at
+all, prepare, make and fail another ritual, then go to sleep with the Light. Today must be
+different or she will go mad for sure.
+
+She entered the temple and headed towards the altar. She grabbed the clothing of a random
+apprentice or hers just to get some attention and took him to the fire while ordering the others
+to follow them. She then tossed the apprentice back into the crowd and began speaking.
+
+“As you all know, we are trying to get our beloved Lady Mirinar back to Erodar. It’s a holy
+mission, much bigger than survival itself. But we continuously fail. You, and I mean all of you,
+will never see the Lady of Fire in this life. Even I fear of this sometimes, and my lifespan is
+going to be much longer than yours. But I tell you this: if you try hard, we may at least summon
+the powers of the Lady back to our hands. I’ve met the Prophets of other Gods. Some of them are
+trying to achieve the same thing. They fail miserably, just like us. We have failed many times,
+and many of you… *left* in the process. I know you are all fed up with this, so I don’t blame you
+if you leave now.”
+
+She paused for a brief moment to see the outcome of this not-so-good speech. Murmuring started in
+the crowd, and soon a few Souls left the hall. After a short while, Samillinor continued. But
+unlike the theatrical voice she used just a moment ago, she sounded more serious.
+
+“The lava beasts will take care of those traitors. Now listen to me. I did not sleep last night.
+Although that is not rare, its cause was something different. I have seen something like the
+Gods’ visions. It wasn’t exactly the same, but it was strong, and it felt true. And if it is
+indeed true, we will succeed today.”
+
+The apprentices were all prepared to hear the same speech as almost every day. Most of them were
+surprised that she allowed some of them to leave, even if that was only part of the act, but only
+now they looked up to their leader. She looked exhausted, but unlike her usual tone, this time
+her voice was really cheering. They started murmuring again, that maybe she’s right this time,
+while others were afraid of some accident.
+
+Apprentices of lesser ranks started to prepare today’s ritual. Some others left for the personal
+quarters, hardly believing Samillinor’s words. Geoth, one of Samillinor’s oldest abbots, stepped
+next to the High Priestess.
+
+“Lady Samillinor, you look exhausted. Are you sure you don’t want to postpone today’s ritual?”
+
+“You know very well that simply because I’m tired, I won’t die. I can’t die at all, actually.
+Why would I postpone it?”
+
+“Yes, I know, I know. I’m just… you look troubled, High Priestess. Many left for their private
+quarters because they fear of a big accident today.”
+
+“Whoever fears the powers of Lady Mirinar I will personally feed to the lava beasts. Now leave
+and make the preparations!”
+
+“Yes, your Highness!”
+
+Mentioned preparations were fast, as always. Apprentices of lowest ranks swept the floor, others
+changed the pelmets. A tamed lava beast brought in a stone cauldron filled with hot lava, so the
+maids could refresh the lights. Meanwhile the fire-starters prepared the bonfires. Finally, as
+the last step, Geoth brought the ritual bowl and put it on the altar.
+
+The timing was perfect, the ritual began with Liran on the top of the sky. Samillinor stood
+behind the altar in her ritual robe embroidered with flame patterns. Her red hair also looked
+like flames.
+
+“Fellow apprentices of Mirinar!” Samillinor began, with the usual theatrical moves. “We are here
+once again to summon the powers of our beloved Lady back to Erodar. So let the ritual begin!
+Fire-starters, light the bonfires!”
+
+The accosted grabbed their torches immediately, dipped them into the lava and lit the bonfires.
+While they caught flame, all the apprentices started to pray. They asked their Lady to send a
+sign, and to allow them to once again use her powers on Erodar.
+
+The bonfires lit quickly; the fire-starters were proud that they collected dry enough wood for
+them. The hot air started circulating in the well constructed building. It blew Samillinor’s
+hair so it much more resembled flames. She dipped the bowl into the lava cauldron, and held it
+high. Then she cited the old words; her apprentices thought these are summoning words, but in
+fact, they weren’t. They were used to transform the hot lava into water; although she could have
+swallowed lava without being harmed if she wanted, it gave her hard times for a few days.
+
+The next moment it turned out that Samillinor was right: something was very different this time.
+As soon as she raised her bowl, the bonfires started to burn with huge flames. The apprentices
+were surprised, but didn’t stop praying. Samillinor closed her eyes, held the bowl at her mouth
+and drank its contents. The first swallow of lava surprised her so much that she dropped the
+bowl. The burning material inside spouted and her robe caught fire. Her senses blurred as she
+felt a strong presence. There was no doubt, it was Mirinar, her beloved Lady. She used her body
+to materialize on Erodar once again.
+
+Mirinar stretched and looked around. She was standing in a small circle of ash, the remains of
+Samillinor’s robe. The altar survived. Nice stone contraption, made of Roban-stone that endures
+the hottest lava. Between them lied a small bowl made of the same material, with cooling lava all
+around. She looked up. Her body was still Samillinor’s, but her eyes were made of actual flames,
+and so was her hair. She looked at the apprentices around who stood shocked and in awe.
+
+“Finally” she said, taking a step next to one of the bonfires and looked in the eye of the
+fire-starter in front of her. There stood a short lava Duaron, his skin black and eyes red like
+lava. She grabbed his wrist so strong that the Duaron dropped her torch.
+
+“What is your name?” she asked with fury in her voice. She knew the answer just well, she just
+enjoyed speaking again.
+
+“Harash, my Lady” said the fire-starter while he couldn’t look away from Mirinar’s eyes.
+
+“How long do you serve the Fire?”
+
+“Several years, my Lady. I don’t keep track, shame on me.”
+
+“It has been twenty-seven years and nine days, Harash. You seem to serve me well. So tell me… do
+you want to become my first Priest?”
+
+Harash could not speak. That was what he wanted since he first saw the temple as a child.
+
+“Yes, that was my only wish since I entered this temple for the first time. But I’m still a long
+way from there.”
+
+“Indeed, Harash, you are a long way. I don’t need a Priest who is not as committed as he can be.”
+
+Mirinar, while still holding the wrists of Harash, looked at the other apprentices. Harash
+started feeling the anger boiling inside him. He served Mirinar for almost three decades, and she
+says he’s not worthy enough. He couldn’t see Mirinar’s face, but she was smiling. And soon,
+Harash burst out, forgetting the fact that a God was holding his wrist”
+
+“How dare you say that? I am serving your purpose for decades. I fed your beloved lava beasts, I
+swept these floors for years, I can make the biggest bonfires of all the apprentices. If I was
+given a chance, I could serve you much better than anyone else in this room, and you still think
+I’m not worthy enough?”
+
+Mirinar turned back, still smiling. Harash was confused, but was still filled with anger. Soon,
+Mirinar made a sign for Harash with her other hand to turn around. So he did: the bonfire behind
+him became so huge its flames reached the ceiling. Until now he didn’t even feel that the air
+circulating in the room became so hot that some thin textiles caught fire. “There it is, your
+real power” she whispered without anyone else than Harash hearing it. Harash stood in awe.
+
+“That’s the Priest I need” said Mirinar to the others, and released Harash’s wrist, and forced him
+to turn back at her. “Now look into my eyes, Harash, and tell me once again: do you want to
+become my first Priest?”
+
+The Duaron, still filled with fiery rage, stood her stare for a minute. “Yes, I do!” he finally
+answered with confidence in his voice.
+
+The bonfire collapsed under its own weight, but as it was not controlled, it collapsed right on
+Harash. He was used to even lava, but this time the heat was unbearable. He screamed as he felt
+all his bodies burning, although he was sure he’s not dying. It felt like forever before he could
+dig himself out of the embers. He stood proud before Mirinar, who was pointing at his bare chest.
+
+Harash looked down. A large symbol, Mirinar’s holy sign was flaming on his skin. Despite the
+looks, it felt confortably warm. Harash felt pride; his childhood dreams came true. Not just he
+met with his beloved Lady, but was initiated by her personally.
+
+Mirinar turned around. With Harash on her side she looked at the crowd. Most of them were still
+shocked by the almighty presence and what they just witnessed. Some, especially Samillinor’s
+abbots were filled with rage that a lowly fire-starter got initiated by the Lady instead of them.
+Mirinar just stared at them, still smiling.
+
+“The Parents, thank to your constant prayers, allowed us back to Erodar once again” she said and
+then paused. The apprentices started to regain their consciousness. Finally they realised that
+after all these years, all the failed rituals, today they reached their goal, and summoned their
+Lady on Erodar.
+
+“That’s the good news” Mirinar continued, before anyone could start to applaud. “The bad news is,
+you are the first and last to see me in person. The new rules are strict. We are able to
+materialise once in front of, or through our Prophet. After that, we can only communicate with
+them through visions. Them, and our new Priests. Priests get all our power for their loyalty.”
+
+The crowd became confused. They were happy about Mirinar’s presence, but they couldn’t yet
+understand these new rules she was talking about.
+
+“Now, what should I do with you…? Is there anyone who prayed to any of my brothers or sisters?”
+
+Everyone stood in silence.
+
+“Come on, don’t be shy! In fact, if you did, you won’t survive the next few minutes. Or if you
+will, you will be sorry to do so. So once again. If there is anyone among you who have prayed to
+any other Gods, leave now, and I mean immediately! Also leave if you think you couldn’t bear the
+godly powers and don’t want to become my Priest.”
+
+No one moved. They were all ready, or at least thought to be ready for the task.
+
+“Good. See you in the Passage soon!”
+
+Samillinor passed out. When she woke up, her temple was gone. All she could see was cooled lava
+and ashes. Amongst them stood her apprentices, or at least most of them. They were talking in
+excitement, in small groups among the ruins. Goeth sat next to her on a stone, guarding her body.
+
+“I guess that means everyone was right about this ritual” he said, while helping Samillinor to
+stand up.
+
+“So I guess it wasn’t just a vision” she replied.
+
+“No, it was very real” said Goeth, gesturing at his chest. He had Mirinar’s burning symbol, just
+like everyone else around.
+
+“I still don’t know if I should be proud or sad. I was waiting to see my Lady for an Age, and
+when she comes I cannot see her. Yet, she was using my very body to materialise. That’s not
+something you feel every day.”
+
+She stood up and looked at her body thoroughly. Now that all her clothes were burned to ashes,
+she could see that she was in a much better shape than she remembered. Her skin looked younger
+and she felt the energy burning inside.
+
+“Whatever happened, we won. Mirinar is back, and I have a feeling we have made it first. Send
+word to the harbour to prepare my ship. I need to get to Turamo’r as soon as possible.” She
+paused for a moment to look around before she continued. “Oh, and arrange the making of a huge
+amount of robes. Members of the Order of Fire cannot walk Erodar naked.”
diff --git a/content/stories/shadow-of-the-sun-twins.rst b/content/stories/shadow-of-the-sun-twins.rst
new file mode 100644
index 0000000..dac5662
--- /dev/null
+++ b/content/stories/shadow-of-the-sun-twins.rst
@@ -0,0 +1,104 @@
+Shadow of the Sun Twins
+#######################
+
+:date: 2018-07-29T14:54Z
+:category: stories
+:tags: scifi
+:url: stories/shadow-of-the-sun-twins
+:save_as: stories/shadow-of-the-sun-twins/index.html
+:status: published
+:author: Gergely Polonkai
+
+The below sci-fi short is a reply for `this writing prompt
+`_:
+
+ Life is hard for a dirty salvager on this junk planet. If the heat of the desert's twin suns
+ don't kill you, the molten rain coming down from the ship graveyard orbiting the planet
+ might. But today is a good day. Today you found what looks to be a fully operational
+ spacecraft.
+
+The desert was calm. Hot as ever, but at least the acidic molten rain stopped almost a week ago
+now. The couple darted from wreck to wreck, just like every day since they crashed on this living
+hell almost two decades ago. Salvagers. Thatʼs what they were for their whole lives, which was
+almost forty years now. Everyone despised their kind yet, a lot of of megacorps were relying on
+them. They could easily identify parts their commissioners wanted, sometimes hundreds of feet
+away. They werenʼt the best of the best, but they were good.
+
+Their clothes are mostly rags, but they didnʼt stand out during the rare occasions when they
+visited one of the local colonies. Everyone and everything was dirty and wrecked here. It was a
+home for outcasts and criminals.
+
+Shiny ships landed about once a month to pick up things they ordered, and trade it for food and
+water. They had some old tools to sell, but you had to be either wealthy or revered to buy them.
+
+Thatʼs how Raleh and Gerth got their only wealth, the binoculars. The image they provided was
+crystal clear, and the software running on it could easily identify any types of spacecraft they
+were specialised in. It costed them a small fortune, in both sense of the word. They still made
+jokes occasionally about that day when they planned their uncertain future years after getting
+them.
+
+“Enter” a machine voice said, after the door on the spacecraft, that seemed to be a wreck, opened.
+
+They hesitated. Neither of them saw a ship on this planet before that was capable of
+communication not counting the crafts of their employers. The ship was small, more like a
+personal carrier than a battle cruiser. It didnʼt have any sign of authority or ownership except
+the confederation flag painted on both sides.
+
+“Enter” the voice repeated.
+
+Raleh was always more brave, recklessly so. After stepping inside, she waved for Gerth.
+
+“Come inside! We could use this to make ourself a future.” she said, but Gerth was still
+shuffling outside.
+
+“What, you think anyone would buy a ship that allows anyone on board?” Gerth replied. And indeed,
+federal law stated anyone approaching a spacecraft without proper authorisation would be zapped to
+death by the shipʼs defense system. They saw it countless times. They even buried a friend who
+tried it.
+
+“Who cares? If nothing else, we can rip it to pieces and sell all the parts.” Raleh insisted,
+then disappeared inside the craft.
+
+Inside it was dark, or at least it seemed so after getting out of the scorching light of the sun
+twins. Her eye got used to it eventually. The ship seemed completely intact. No burning, no
+sign of crashing in the inside.
+
+“Hon!” It was Gerth, and sounded really excited. “Honey, come out, I have to show you
+something!”
+
+Raleh left through the small door to find her partner squatting next to the ship. She was
+touching the shield, examining it closely.
+
+“This ship didnʼt crash land here.” she announced. “It was shot several times, and one of the
+engines were hit, but it simply landed.”
+
+“Go figure,” Raleh replied, “the inside is good as new.”
+
+The two entered the ship again and looked around.
+
+“Computer!” Gerth said in loud and firm tone. “Self diagnosis.” She knew well from the times
+they were salvaging in space that a confederation ship will identify itself as part of the
+response.
+
+“Cruiser type PC-79-1, registration code MID-683, owned by the Intelligence Department of the
+Confederate Military.” the machine told, and continued. “Shield operational and lowered down.
+Hull 97% intact. Solar panels providing 230% of required energy. All reserve batteries at 100%.
+Engine one operational. Engine two operational. Engine three damaged, manual intervention
+needed. Ship is capable of lift off and flight. Software level diagnosis must be requested
+explicitly.”
+
+“Thatʼs nice” Gerth summed. “But why would the Intelligence department leave a functioning ship
+in the middle of hell?”
+
+“Beats me. But we should decide what to do with it before someone else finds it” Raleh said, and
+now it was her time to get nervous.
+
+“Computer, close doors” Gerth commanded and waited until the ship carries out her order. “Just so
+no one sees us from the distance. Computer! Identify your captain!”
+
+On the screen, a picture of a woman appeared. She was probably around her forties with short
+blonde hair and deep green eyes, and a fierce, but happy look on her face. Her uniform showed the
+rank of a confederate colonel. If it werenʼt for the rags and the messy hair, it could have
+easily been Gerth.
+
+“Colonel Gerthrud Miartan” the ship announced. “Welcome back on board.”
diff --git a/content/stories/the-encounter.rst b/content/stories/the-encounter.rst
new file mode 100644
index 0000000..b3a46f7
--- /dev/null
+++ b/content/stories/the-encounter.rst
@@ -0,0 +1,124 @@
+The Encounter
+#############
+
+:date: 2012-01-02T10:15Z
+:status: published
+
+Mendari stood on the top of a worn-out, old panel house. He looked down on the masses on the
+street. “Your life depends on the fact that I have not chosen to end it yet. As soon as my
+brother is gone, no one will be left to save you” he thought, then looked to the farther parts of
+the city. In a less crowded district, he’s waiting for him in a park. “Where else? The concrete
+jungle is not his world. He’s weak. He was always too weak to change. The city grew around him
+and he left in his weary park where nothing changes.” He turned his head towards the park. He
+always sits there, and Mendari was sure it’s the same even now. He took two quick steps and took
+off from the edge of the roof; spreading his red, bat-like wings he was nose-diving towards the
+ground.
+
+Eldreth was sitting in his well known park on the most hidden bench. No one went that way, not
+even the homeless. No one ever encountered him but still, everyone recognised this as his own
+place. But everything will change soon. Mendari will come here and will try to destruct
+everything he still got since the city was built. He will leave soon. Humans destroy all the
+forests on this planet, and he will have less and less place to live. Whatever is left is not
+suitable for him. He tried to move into some densely populated districts, but his head went
+buzzing. And the downtown parts are even unbearable.
+
+He looked up for a brief moment, but even this was enough for him to see his brother, nose-diving
+from the roof. He had plenty of time. Slowly, but with with nobility he stood up and waited
+until his brother arrives. As soon as he was close by he spread his white wings to blind his
+future opponent.
+
+Mendari came to a halt seeing those wings. He knew exactly Eldreths powers, but he hoped he got
+lazy and cannot use them.
+
+“It seems I have underestimated you, brother” he said with irony in his voice. “You seem to use
+your powers well, especially knowing that the mayors have taken almost everything from you.”
+
+“Fortunately, I have my reserves” Eldreth said, smiling.
+
+They stood there for minutes, probably for hours, in front of each other. Who passed by may have
+only seen two men there. They have dissambled their wings in this world as they knew if anyone
+would have seen them they would have gotten huge attention in the noisy media of the world. But
+what they were planning right now cannot go unnoticed. They were sure it will cause a huge media
+storm at the price of their own demise. But it doesn’t matter now. The time has come, it must
+happen here and now.
+
+The encounter was unbearable for everyone around them. Nothing could be seen, they just
+experienced the hurricane like wind. When they grabbed each other even the earth began to shake.
+At first only around them, but they slowly spreaded to the whole city. The walls of the panel
+houses, which were not built to stand a bigger earthquake, began to crack. The pictures on the
+walls, the flowers celebrating the new mayor, and even the lamp posts dropped to the ground one by
+one. Even this was enough for the locals to panic. They flocked to the streets and it didn’t
+take much time before a group or two got to the park. Whoever came this far could see the two
+brothers in the epicentre of the quakes, with their huge wings spread, holding each other without
+moving. The trees in the park fell, and the small pond in the middle of the park, with all the
+boats and the people in them quickly leaked into a newly opened gap. Soon, some of the refugees
+recognised the potential in the events and started to take pictures.
+
+“See?” thundered Mendari. “Nothing is enough for them! Only success and money moves them. Look!
+LOOK! They have surrendered their homes that were crumbled to dust but they don’t lament anything
+just take pictures. Here are all the fallen trees, some of them has people under them and what
+they do? Are they mourning? NO! They take pictures hoping a magazine will pay loads of money
+for this trash!”
+
+Eldreth was used to such scenes, and although his brother was trying to plant disdain and anger in
+his heart, he could not pull Light to the Darkness’ side. So Mendari, seeing his brother’s
+persistence, continued.
+
+“Do you really want to save these? Why? They have no use on this planet. They never had!”
+
+“I think you misunderstood something. I never wanted to save *them*. Just life. That’s what you
+cannot take from them without punishment. For that both me and all Spirits of life will turn
+against you.”
+
+Mendari didn’t say a word, just pushed two photographers to the chasm with his wing. They tried
+to grab anything, screaming, but without success. The ground swallowed them with a quiet rumble.
+
+“So where are these spirits now? Nowhere. Why haven’t they saved this two sacred lives? Where
+are they that they couldn’t catch any of them?” Mendari tried to give emphasis to his words by
+shaking his brothers shoulders while he was taking care not to let him go.
+
+“No one has to catch them on the way down to save them. At the bottom there is the Spirit of the
+lake. He will catch them, and although it will hurt much, they will survive.
+
+The demon got furious. “How can you remain this calm? Your life, the humans’ life is in my hands
+and you still don’t fight me!”
+
+“I’m not calm. I know what will happen and I know it must happen this way.”
+
+The earthquake got stronger and finally, the ground started to open below them. At first only a
+small crack flashed between them, but it became wider with time until the brothers had to release
+each other. They jumped to the air. The people around them stopped, forgetting about the panic,
+staring at them in awe.
+
+Up until now only their minds were fighting, but now even their bodies clashed. It was true
+wrestling in the air, with the aim of bringing the other to the ground. But Eldreth only parried,
+never attacking back. He easily evaded his brother’s moves so Mendari was trying more furiously.
+They got higher in the air, but it was the angel who wanted this. His brother followed in
+delirium just to finish him already.
+
+He doesn’t have to wait for too long. Eldreth had to miss only a tiny move. Mendari took
+advantage and held down all of his brothers limbs. They were plummeting towards the ground, the
+demon controlling it so he would have been on top when they reach the ground. There was
+maleficence and satisfaction in his eyes looking at Eldreth pinned down body.
+
+The angel looked up and smiled. Endless gratitude whirled from him, even towards Mendari.
+
+“I always loved you, my dear brother” he whispered. “Maybe once, much later, we will see each
+other again.”
+
+They slammed to the ground with a deafening crash, almost at the middle of the place where once
+the park was. The huge dust cloud caused by the earthquakes, hid their bodies. The noise
+stopped, so as the quakes. It was over. They fell so hard it was fatal for both of them.
+
+Mendari’s body exploded to millions of red shards that slowly spread in the park. They flooded
+the region as a dreadful dollop, biting the flesh from everyone’s bones.
+
+Eldreth turned into small, fog-like drops of water. These blended together with the red mass,
+diluting it. He was trying to protect life even in his death.
+
+The red fog slowly covered the city. Weakened by Eldreth’s powers it couldn’t physically harm
+people, but it turned to be more dangerous this way. It burned people’s feelings and emotions.
+
+With the earthquake stopping the wind began to blow again. A desert-like storm approached the
+city, which was direful together with shards of the red fog. It engulfed everyone and everything.
+Mendari wanted to spare no one.
diff --git a/content/stories/trust.rst b/content/stories/trust.rst
new file mode 100644
index 0000000..cc7829e
--- /dev/null
+++ b/content/stories/trust.rst
@@ -0,0 +1,83 @@
+Trust
+#####
+
+:date: 2015-02-13T08:10Z
+
+The girl was small both in height and stature. Her blonde hair was mostly covered by a cute hat.
+She stared outside the bus window with dreamy blue-grey eyes.
+
+The guy, also thin, was so tall that he hit his head in the holding bars, usually out of reach for
+anyone else, almost every time he got on the bus. His long brown hair was stuffed under his thick
+black jacket. His ears were plugged with a pair of earphones as almost every day; he barely heard
+anything, but his perception wasn’t blocked at all. He was reading a book, but the story wasn’t
+fascinating enough. He instead used to look up at the mirror image of the girl in the window.
+Sometimes they exchanged a look, but it was as short as if it was just by accident.
+
+This continued for many days and weeks before the man gathered all his bravery and greeted her one
+morning. He didn’t insist on starting a conversation, which was obvious from his face. It was
+like a greeting of a hardly known neighbour except for the wide smile. The girl wasn’t surprised
+at all, she even returned both the smile and the greeting. It was a big step forward for both of
+them, even if they somewhat stopped at this point.
+
+Not less than a month later came a day full of coincidences. The man changed to a lighter coat
+and left his earphones in the pockets of the old one. He held a new book in his hand, looking for
+a seat, and the only free one was next to the girl. She looked sad, almost crying. He greeted
+her with the usual smile, which she forcefully returned. The guy was wondering what the problem
+might have been, but didn’t intend to break their unspoken customs.
+
+“May I snuggle to you?” she asked, mostly from herself. She spoke very low, almost whispering.
+But despite the book, the man was totally aware of her and all of her actions. Honestly, he was
+preparing to ask what the matter was.
+
+“Sure”, the reply came and he lifted his arm to hug her. She was surprised, not because he
+accepted, but that in an instant the hesitating man became so confident. She buried her face in
+the thin black coat, shivering for a moment of the cold surface. She wasn’t really crying just
+sobbing every now and then. The man didn’t say anything, only gently slicked her hair.
+
+They left the bus at the terminal speechless and, as usual, they went in two different ways.
+Weeks passed without them meeting again.
+
+One day the girl stood at the terminal when the man took off. He greeted her smiling, and darted
+off towards the little bakery where he bought his breakfast every day. The girl followed him,
+asking “Do you mind if I accompany you for a short while?”
+
+“Certainly not,” he said, “I’m just buying some breakfast before taking the underground. You want
+something?”
+
+The girl wondered. She usually didn’t eat anything until noon, except a small bowl of cereals
+every other day which she omitted today, but the offer made her hungry. “Surprise me! I like
+sweeter things,” she finally replied as they entered the shop. The guy bought two pieces of the
+same croissant, filled with chocolate, and handed one of them over. “I hope you will like it,
+these are my favourite.”
+
+They headed to the underground station, gnawing on the croissants silently.
+
+“Why did you do it last time? The cuddling, I mean” she started after finishing her part. “We do
+not know each other, I don’t even know why do we greet each other in the mornings. Hell, I don’t
+even know why I dared to ask you.” The man smiled politely without a word so the girl continued.
+“I don’t even know why I am doing this conversation with a man who can say nothing, not even a
+reply!”
+
+She was becoming grumpy, and the man felt it just too well.
+
+“Come on, you are not mute, I heard your voice several times already, and we speak the same
+language!” she said with growing anger in her voice.
+
+They just arrived to the bottom of the stairs. In a blink of an eye, the man jumped in front of
+her and hugged her.
+
+“What do you feel?” he asked. The girl was surprised and hesitating. She didn’t really want to
+free herself, but she was embarassed because of the last few moments. Finally, she hugged back
+and buried her face in his chest. The coat was open, so this time she didn’t shiver, touching the
+warm sweater. She felt all too comfortable and safe, as if there were no crowd around them. She
+turned her head, sticking her ear where her face was just a moment ago. The beating of his heart
+was slow and comforting that she didn’t even want to leave that warmth. “What do you feel?” he
+asked again after a few seconds, with patience and calmness in his voice.
+
+“Safety, I guess.” she replied, but didn’t loosen her grip. “I feel safe besides you, even though
+I do not know you or if you can be trusted. Maybe you will drag me in a dark alley to rape and
+kill me, but while I’m here close to you, I just don’t care.”
+
+“Don’t give me ideas.“ the man grinned, though the girl couldn’t see it. “It takes time to
+achieve this deep trust. It’s very hard to get, very easy to lose, and even harder to get back if
+you do. I’m glad I earned yours.”
diff --git a/content/stories/white-cell.rst b/content/stories/white-cell.rst
new file mode 100644
index 0000000..dbaf49a
--- /dev/null
+++ b/content/stories/white-cell.rst
@@ -0,0 +1,114 @@
+White cell
+##########
+
+:date: 2009-07-28T20:29Z
+:status: published
+
+Thomas stepped in his room. He felt strange but he couldn’t explain it until he closed the door
+behind him. The furniture, all his personal stuff, even the window and the door has disappeared,
+and the walls were glowing bright white. For a brief moment he thought he got blind, but then
+realised he could see his own body just fine. He tried to open the door where it used to be, but
+he grabbed wall instead of the knob. Suddenly he heard a calm voice from his back.
+
+“Hello, Thomas. I was waiting for you.”
+
+“Who are you? And what happened to my room? Or my senses?”
+
+“Nothing. Both you and your room are the same as you left about two hours ago.”
+
+The man was tall and thin, his long white hair reached the middle of his back. He looked young,
+but his deep green eyes radiated a long life and wisdom.
+
+“I am a magician. Just like how you like to call yourself” he added.
+
+“Because I am! Now let me out of here!”
+
+“Please, sit down” the man asked, but Thomas refused.
+
+“Why would I?”
+
+“Because I asked you nicely.”
+
+“But I don’t want to sit down. I want to get back to my room and to my life! My disciples are
+waiting for me!”
+
+“You can leave freely, whenever you please.”
+
+“How could I? Even the door has disappeared.”
+
+The white haired man disappeared without an answer. Thomas became more furious every minute,
+which transitioned to despair. He hit the wall until his fist was bleeding, although the
+bloodstains couldn’t be seen on the glowing surface.
+
+“Where are you, *magician*?” he asked. “You locked me up here but you fear to face me? Come back
+so I can beat you up until you release me!”
+
+“I was always here, Thomas.” The magician stood exactly whence he disappeared. “Why are you so
+upset? You are safe and sound in your room. The bed, your wardrobe, the door and window are all
+at their usual places. You simply have to step to the door and leave.”
+
+“What are you talking about? You locked me up in this white cell, which has no windows, no door,
+just the glowing white walls. There’s nothing here, especially no exit. Now bring me back to my
+room!”
+
+Thomas tried to hit the magician, but he was too slow for his supernatural senses and dexterity.
+
+“I don’t want to fight you” the sorcerer said. “I just want you to understand the world around
+you so you don’t have to lie to your disciples any more.”
+
+Thomas tried even more, but he was no real opponent for the sorcerer.
+
+“Would you feel better if you could hit me?”
+
+“I would feel better if you would finally release me!”
+
+“Come on, Thomas, you would better…” the man began, but Thomas interrupted.
+
+“Don’t call me Thomas! I hate that name. I don’t use it for years.”
+
+“Your parents gave you that name. You shouldn’t make you sad with dropping the name they gave
+you. Yes, it is common and simple. But it’s not the name that will make you different from
+others.”
+
+“What do you know about names? You didn’t even tell me yours”
+
+“Because I don’t have one. My parents didn’t want me, so they didn’t give me a name.” the man
+replied, with a still calm voice. “Call me Anonymus, or whatever you like.”
+
+While he was talking, Thomas continued the attacks, but without success.
+
+“Your hand is bleeding. It should be treated.”
+
+“I would, if you would let me back to my room!”
+
+“You still don’t understand. You are worse than I hoped. Now please, sit down so I can show you
+the way back to your beloved room.”
+
+Thomas attacked again with a loud battle cry. The wizard stepped to the left with ease, grabbed
+Thomas’ arm and forced him to a sitting position with a quick move.
+
+“I asked you twice to calm down and sit. If you wouldn’t be such an arrogant fool, you would sit
+in your room by now.” His voice was thundering and shocking which scared Thomas, so he remained
+sitting.
+
+“Thank you” the wizard continued. “Only one thing remains. You must believe that I’m not lying
+when I say you are in your room.”
+
+Thomas didn’t say a word. He thought this guy is insane, or even a pervert that he keeps him
+here.
+
+“Okay, so you don’t believe me. In this case let’s just assume you are in your room. Your window
+used to be here, right behind me. You keep telling your disciples that visualisation is so
+important. Now do it!”
+
+Thomas tried. He believed that this stranger will keep him here forever, so he had nothing to
+loose. Then, when he was focusing for ten minutes, the silhouettes of the window appeared on the
+wall, right behind the sorcerer. He was surprised as although he really did say to his disciples,
+he never really succeeded in visualisation. After the surprise caused by the window, Thomas
+looked around and could see everything crystal clear in his room.
+
+“Just as I said” said the wizard. “You could have left whenever you wanted.”
+
+“What kind of bad joke is this?” Thomas asked, still shocked.
+
+“It wasn’t a joke. It was your imagination. Or… was it mine?”
diff --git a/symbolon/images/01.jpg b/content/symbolon/images/01.jpg
similarity index 100%
rename from symbolon/images/01.jpg
rename to content/symbolon/images/01.jpg
diff --git a/symbolon/images/02.jpg b/content/symbolon/images/02.jpg
similarity index 100%
rename from symbolon/images/02.jpg
rename to content/symbolon/images/02.jpg
diff --git a/symbolon/images/03.jpg b/content/symbolon/images/03.jpg
similarity index 100%
rename from symbolon/images/03.jpg
rename to content/symbolon/images/03.jpg
diff --git a/symbolon/images/04.jpg b/content/symbolon/images/04.jpg
similarity index 100%
rename from symbolon/images/04.jpg
rename to content/symbolon/images/04.jpg
diff --git a/symbolon/images/05.jpg b/content/symbolon/images/05.jpg
similarity index 100%
rename from symbolon/images/05.jpg
rename to content/symbolon/images/05.jpg
diff --git a/symbolon/images/06.jpg b/content/symbolon/images/06.jpg
similarity index 100%
rename from symbolon/images/06.jpg
rename to content/symbolon/images/06.jpg
diff --git a/symbolon/images/07.jpg b/content/symbolon/images/07.jpg
similarity index 100%
rename from symbolon/images/07.jpg
rename to content/symbolon/images/07.jpg
diff --git a/symbolon/images/08.jpg b/content/symbolon/images/08.jpg
similarity index 100%
rename from symbolon/images/08.jpg
rename to content/symbolon/images/08.jpg
diff --git a/symbolon/images/09.jpg b/content/symbolon/images/09.jpg
similarity index 100%
rename from symbolon/images/09.jpg
rename to content/symbolon/images/09.jpg
diff --git a/symbolon/images/10.jpg b/content/symbolon/images/10.jpg
similarity index 100%
rename from symbolon/images/10.jpg
rename to content/symbolon/images/10.jpg
diff --git a/symbolon/images/11.jpg b/content/symbolon/images/11.jpg
similarity index 100%
rename from symbolon/images/11.jpg
rename to content/symbolon/images/11.jpg
diff --git a/symbolon/images/12.jpg b/content/symbolon/images/12.jpg
similarity index 100%
rename from symbolon/images/12.jpg
rename to content/symbolon/images/12.jpg
diff --git a/symbolon/images/13.jpg b/content/symbolon/images/13.jpg
similarity index 100%
rename from symbolon/images/13.jpg
rename to content/symbolon/images/13.jpg
diff --git a/symbolon/images/14.jpg b/content/symbolon/images/14.jpg
similarity index 100%
rename from symbolon/images/14.jpg
rename to content/symbolon/images/14.jpg
diff --git a/symbolon/images/15.jpg b/content/symbolon/images/15.jpg
similarity index 100%
rename from symbolon/images/15.jpg
rename to content/symbolon/images/15.jpg
diff --git a/symbolon/images/16.jpg b/content/symbolon/images/16.jpg
similarity index 100%
rename from symbolon/images/16.jpg
rename to content/symbolon/images/16.jpg
diff --git a/symbolon/images/17.jpg b/content/symbolon/images/17.jpg
similarity index 100%
rename from symbolon/images/17.jpg
rename to content/symbolon/images/17.jpg
diff --git a/symbolon/images/18.jpg b/content/symbolon/images/18.jpg
similarity index 100%
rename from symbolon/images/18.jpg
rename to content/symbolon/images/18.jpg
diff --git a/symbolon/images/19.jpg b/content/symbolon/images/19.jpg
similarity index 100%
rename from symbolon/images/19.jpg
rename to content/symbolon/images/19.jpg
diff --git a/symbolon/images/20.jpg b/content/symbolon/images/20.jpg
similarity index 100%
rename from symbolon/images/20.jpg
rename to content/symbolon/images/20.jpg
diff --git a/symbolon/images/21.jpg b/content/symbolon/images/21.jpg
similarity index 100%
rename from symbolon/images/21.jpg
rename to content/symbolon/images/21.jpg
diff --git a/symbolon/images/22.jpg b/content/symbolon/images/22.jpg
similarity index 100%
rename from symbolon/images/22.jpg
rename to content/symbolon/images/22.jpg
diff --git a/symbolon/images/23.jpg b/content/symbolon/images/23.jpg
similarity index 100%
rename from symbolon/images/23.jpg
rename to content/symbolon/images/23.jpg
diff --git a/symbolon/images/24.jpg b/content/symbolon/images/24.jpg
similarity index 100%
rename from symbolon/images/24.jpg
rename to content/symbolon/images/24.jpg
diff --git a/symbolon/images/25.jpg b/content/symbolon/images/25.jpg
similarity index 100%
rename from symbolon/images/25.jpg
rename to content/symbolon/images/25.jpg
diff --git a/symbolon/images/26.jpg b/content/symbolon/images/26.jpg
similarity index 100%
rename from symbolon/images/26.jpg
rename to content/symbolon/images/26.jpg
diff --git a/symbolon/images/27.jpg b/content/symbolon/images/27.jpg
similarity index 100%
rename from symbolon/images/27.jpg
rename to content/symbolon/images/27.jpg
diff --git a/symbolon/images/28.jpg b/content/symbolon/images/28.jpg
similarity index 100%
rename from symbolon/images/28.jpg
rename to content/symbolon/images/28.jpg
diff --git a/symbolon/images/29.jpg b/content/symbolon/images/29.jpg
similarity index 100%
rename from symbolon/images/29.jpg
rename to content/symbolon/images/29.jpg
diff --git a/symbolon/images/30.jpg b/content/symbolon/images/30.jpg
similarity index 100%
rename from symbolon/images/30.jpg
rename to content/symbolon/images/30.jpg
diff --git a/symbolon/images/31.jpg b/content/symbolon/images/31.jpg
similarity index 100%
rename from symbolon/images/31.jpg
rename to content/symbolon/images/31.jpg
diff --git a/symbolon/images/32.jpg b/content/symbolon/images/32.jpg
similarity index 100%
rename from symbolon/images/32.jpg
rename to content/symbolon/images/32.jpg
diff --git a/symbolon/images/33.jpg b/content/symbolon/images/33.jpg
similarity index 100%
rename from symbolon/images/33.jpg
rename to content/symbolon/images/33.jpg
diff --git a/symbolon/images/34.jpg b/content/symbolon/images/34.jpg
similarity index 100%
rename from symbolon/images/34.jpg
rename to content/symbolon/images/34.jpg
diff --git a/symbolon/images/35.jpg b/content/symbolon/images/35.jpg
similarity index 100%
rename from symbolon/images/35.jpg
rename to content/symbolon/images/35.jpg
diff --git a/symbolon/images/36.jpg b/content/symbolon/images/36.jpg
similarity index 100%
rename from symbolon/images/36.jpg
rename to content/symbolon/images/36.jpg
diff --git a/symbolon/images/37.jpg b/content/symbolon/images/37.jpg
similarity index 100%
rename from symbolon/images/37.jpg
rename to content/symbolon/images/37.jpg
diff --git a/symbolon/images/38.jpg b/content/symbolon/images/38.jpg
similarity index 100%
rename from symbolon/images/38.jpg
rename to content/symbolon/images/38.jpg
diff --git a/symbolon/images/39.jpg b/content/symbolon/images/39.jpg
similarity index 100%
rename from symbolon/images/39.jpg
rename to content/symbolon/images/39.jpg
diff --git a/symbolon/images/40.jpg b/content/symbolon/images/40.jpg
similarity index 100%
rename from symbolon/images/40.jpg
rename to content/symbolon/images/40.jpg
diff --git a/symbolon/images/41.jpg b/content/symbolon/images/41.jpg
similarity index 100%
rename from symbolon/images/41.jpg
rename to content/symbolon/images/41.jpg
diff --git a/symbolon/images/42.jpg b/content/symbolon/images/42.jpg
similarity index 100%
rename from symbolon/images/42.jpg
rename to content/symbolon/images/42.jpg
diff --git a/symbolon/images/43.jpg b/content/symbolon/images/43.jpg
similarity index 100%
rename from symbolon/images/43.jpg
rename to content/symbolon/images/43.jpg
diff --git a/symbolon/images/44.jpg b/content/symbolon/images/44.jpg
similarity index 100%
rename from symbolon/images/44.jpg
rename to content/symbolon/images/44.jpg
diff --git a/symbolon/images/45.jpg b/content/symbolon/images/45.jpg
similarity index 100%
rename from symbolon/images/45.jpg
rename to content/symbolon/images/45.jpg
diff --git a/symbolon/images/46.jpg b/content/symbolon/images/46.jpg
similarity index 100%
rename from symbolon/images/46.jpg
rename to content/symbolon/images/46.jpg
diff --git a/symbolon/images/47.jpg b/content/symbolon/images/47.jpg
similarity index 100%
rename from symbolon/images/47.jpg
rename to content/symbolon/images/47.jpg
diff --git a/symbolon/images/48.jpg b/content/symbolon/images/48.jpg
similarity index 100%
rename from symbolon/images/48.jpg
rename to content/symbolon/images/48.jpg
diff --git a/symbolon/images/49.jpg b/content/symbolon/images/49.jpg
similarity index 100%
rename from symbolon/images/49.jpg
rename to content/symbolon/images/49.jpg
diff --git a/symbolon/images/50.jpg b/content/symbolon/images/50.jpg
similarity index 100%
rename from symbolon/images/50.jpg
rename to content/symbolon/images/50.jpg
diff --git a/symbolon/images/51.jpg b/content/symbolon/images/51.jpg
similarity index 100%
rename from symbolon/images/51.jpg
rename to content/symbolon/images/51.jpg
diff --git a/symbolon/images/52.jpg b/content/symbolon/images/52.jpg
similarity index 100%
rename from symbolon/images/52.jpg
rename to content/symbolon/images/52.jpg
diff --git a/symbolon/images/53.jpg b/content/symbolon/images/53.jpg
similarity index 100%
rename from symbolon/images/53.jpg
rename to content/symbolon/images/53.jpg
diff --git a/symbolon/images/54.jpg b/content/symbolon/images/54.jpg
similarity index 100%
rename from symbolon/images/54.jpg
rename to content/symbolon/images/54.jpg
diff --git a/symbolon/images/55.jpg b/content/symbolon/images/55.jpg
similarity index 100%
rename from symbolon/images/55.jpg
rename to content/symbolon/images/55.jpg
diff --git a/symbolon/images/56.jpg b/content/symbolon/images/56.jpg
similarity index 100%
rename from symbolon/images/56.jpg
rename to content/symbolon/images/56.jpg
diff --git a/symbolon/images/57.jpg b/content/symbolon/images/57.jpg
similarity index 100%
rename from symbolon/images/57.jpg
rename to content/symbolon/images/57.jpg
diff --git a/symbolon/images/58.jpg b/content/symbolon/images/58.jpg
similarity index 100%
rename from symbolon/images/58.jpg
rename to content/symbolon/images/58.jpg
diff --git a/symbolon/images/59.jpg b/content/symbolon/images/59.jpg
similarity index 100%
rename from symbolon/images/59.jpg
rename to content/symbolon/images/59.jpg
diff --git a/symbolon/images/60.jpg b/content/symbolon/images/60.jpg
similarity index 100%
rename from symbolon/images/60.jpg
rename to content/symbolon/images/60.jpg
diff --git a/symbolon/images/61.jpg b/content/symbolon/images/61.jpg
similarity index 100%
rename from symbolon/images/61.jpg
rename to content/symbolon/images/61.jpg
diff --git a/symbolon/images/62.jpg b/content/symbolon/images/62.jpg
similarity index 100%
rename from symbolon/images/62.jpg
rename to content/symbolon/images/62.jpg
diff --git a/symbolon/images/63.jpg b/content/symbolon/images/63.jpg
similarity index 100%
rename from symbolon/images/63.jpg
rename to content/symbolon/images/63.jpg
diff --git a/symbolon/images/64.jpg b/content/symbolon/images/64.jpg
similarity index 100%
rename from symbolon/images/64.jpg
rename to content/symbolon/images/64.jpg
diff --git a/symbolon/images/65.jpg b/content/symbolon/images/65.jpg
similarity index 100%
rename from symbolon/images/65.jpg
rename to content/symbolon/images/65.jpg
diff --git a/symbolon/images/66.jpg b/content/symbolon/images/66.jpg
similarity index 100%
rename from symbolon/images/66.jpg
rename to content/symbolon/images/66.jpg
diff --git a/symbolon/images/67.jpg b/content/symbolon/images/67.jpg
similarity index 100%
rename from symbolon/images/67.jpg
rename to content/symbolon/images/67.jpg
diff --git a/symbolon/images/68.jpg b/content/symbolon/images/68.jpg
similarity index 100%
rename from symbolon/images/68.jpg
rename to content/symbolon/images/68.jpg
diff --git a/symbolon/images/69.jpg b/content/symbolon/images/69.jpg
similarity index 100%
rename from symbolon/images/69.jpg
rename to content/symbolon/images/69.jpg
diff --git a/symbolon/images/70.jpg b/content/symbolon/images/70.jpg
similarity index 100%
rename from symbolon/images/70.jpg
rename to content/symbolon/images/70.jpg
diff --git a/symbolon/images/71.jpg b/content/symbolon/images/71.jpg
similarity index 100%
rename from symbolon/images/71.jpg
rename to content/symbolon/images/71.jpg
diff --git a/symbolon/images/72.jpg b/content/symbolon/images/72.jpg
similarity index 100%
rename from symbolon/images/72.jpg
rename to content/symbolon/images/72.jpg
diff --git a/symbolon/images/73.jpg b/content/symbolon/images/73.jpg
similarity index 100%
rename from symbolon/images/73.jpg
rename to content/symbolon/images/73.jpg
diff --git a/symbolon/images/74.jpg b/content/symbolon/images/74.jpg
similarity index 100%
rename from symbolon/images/74.jpg
rename to content/symbolon/images/74.jpg
diff --git a/symbolon/images/75.jpg b/content/symbolon/images/75.jpg
similarity index 100%
rename from symbolon/images/75.jpg
rename to content/symbolon/images/75.jpg
diff --git a/symbolon/images/76.jpg b/content/symbolon/images/76.jpg
similarity index 100%
rename from symbolon/images/76.jpg
rename to content/symbolon/images/76.jpg
diff --git a/symbolon/images/77.jpg b/content/symbolon/images/77.jpg
similarity index 100%
rename from symbolon/images/77.jpg
rename to content/symbolon/images/77.jpg
diff --git a/symbolon/images/78.jpg b/content/symbolon/images/78.jpg
similarity index 100%
rename from symbolon/images/78.jpg
rename to content/symbolon/images/78.jpg
diff --git a/symbolon/index.html b/content/symbolon/index.html
similarity index 99%
rename from symbolon/index.html
rename to content/symbolon/index.html
index 01fe2b4..cb712d7 100644
--- a/symbolon/index.html
+++ b/content/symbolon/index.html
@@ -3,6 +3,8 @@
+
+
diff --git a/symbolon/planets/jupiter.svg b/content/symbolon/planets/jupiter.svg
similarity index 100%
rename from symbolon/planets/jupiter.svg
rename to content/symbolon/planets/jupiter.svg
diff --git a/symbolon/planets/mars.svg b/content/symbolon/planets/mars.svg
similarity index 100%
rename from symbolon/planets/mars.svg
rename to content/symbolon/planets/mars.svg
diff --git a/symbolon/planets/mercury.svg b/content/symbolon/planets/mercury.svg
similarity index 100%
rename from symbolon/planets/mercury.svg
rename to content/symbolon/planets/mercury.svg
diff --git a/symbolon/planets/moon.svg b/content/symbolon/planets/moon.svg
similarity index 100%
rename from symbolon/planets/moon.svg
rename to content/symbolon/planets/moon.svg
diff --git a/symbolon/planets/neptune.svg b/content/symbolon/planets/neptune.svg
similarity index 100%
rename from symbolon/planets/neptune.svg
rename to content/symbolon/planets/neptune.svg
diff --git a/symbolon/planets/pluto.svg b/content/symbolon/planets/pluto.svg
similarity index 100%
rename from symbolon/planets/pluto.svg
rename to content/symbolon/planets/pluto.svg
diff --git a/symbolon/planets/saturn.svg b/content/symbolon/planets/saturn.svg
similarity index 100%
rename from symbolon/planets/saturn.svg
rename to content/symbolon/planets/saturn.svg
diff --git a/symbolon/planets/sun.svg b/content/symbolon/planets/sun.svg
similarity index 100%
rename from symbolon/planets/sun.svg
rename to content/symbolon/planets/sun.svg
diff --git a/symbolon/planets/uranus.svg b/content/symbolon/planets/uranus.svg
similarity index 100%
rename from symbolon/planets/uranus.svg
rename to content/symbolon/planets/uranus.svg
diff --git a/symbolon/planets/venus.svg b/content/symbolon/planets/venus.svg
similarity index 100%
rename from symbolon/planets/venus.svg
rename to content/symbolon/planets/venus.svg
diff --git a/symbolon/signs/aquarius.svg b/content/symbolon/signs/aquarius.svg
similarity index 100%
rename from symbolon/signs/aquarius.svg
rename to content/symbolon/signs/aquarius.svg
diff --git a/symbolon/signs/aries.svg b/content/symbolon/signs/aries.svg
similarity index 100%
rename from symbolon/signs/aries.svg
rename to content/symbolon/signs/aries.svg
diff --git a/symbolon/signs/cancer.svg b/content/symbolon/signs/cancer.svg
similarity index 100%
rename from symbolon/signs/cancer.svg
rename to content/symbolon/signs/cancer.svg
diff --git a/symbolon/signs/capricorn.svg b/content/symbolon/signs/capricorn.svg
similarity index 100%
rename from symbolon/signs/capricorn.svg
rename to content/symbolon/signs/capricorn.svg
diff --git a/symbolon/signs/gemini.svg b/content/symbolon/signs/gemini.svg
similarity index 100%
rename from symbolon/signs/gemini.svg
rename to content/symbolon/signs/gemini.svg
diff --git a/symbolon/signs/leo.svg b/content/symbolon/signs/leo.svg
similarity index 100%
rename from symbolon/signs/leo.svg
rename to content/symbolon/signs/leo.svg
diff --git a/symbolon/signs/libra.svg b/content/symbolon/signs/libra.svg
similarity index 100%
rename from symbolon/signs/libra.svg
rename to content/symbolon/signs/libra.svg
diff --git a/symbolon/signs/pisces.svg b/content/symbolon/signs/pisces.svg
similarity index 100%
rename from symbolon/signs/pisces.svg
rename to content/symbolon/signs/pisces.svg
diff --git a/symbolon/signs/sagittarius.svg b/content/symbolon/signs/sagittarius.svg
similarity index 100%
rename from symbolon/signs/sagittarius.svg
rename to content/symbolon/signs/sagittarius.svg
diff --git a/symbolon/signs/scorpio.svg b/content/symbolon/signs/scorpio.svg
similarity index 100%
rename from symbolon/signs/scorpio.svg
rename to content/symbolon/signs/scorpio.svg
diff --git a/symbolon/signs/taurus.svg b/content/symbolon/signs/taurus.svg
similarity index 100%
rename from symbolon/signs/taurus.svg
rename to content/symbolon/signs/taurus.svg
diff --git a/symbolon/signs/virgo.svg b/content/symbolon/signs/virgo.svg
similarity index 100%
rename from symbolon/signs/virgo.svg
rename to content/symbolon/signs/virgo.svg
diff --git a/symbolon/small/01.jpg b/content/symbolon/small/01.jpg
similarity index 100%
rename from symbolon/small/01.jpg
rename to content/symbolon/small/01.jpg
diff --git a/symbolon/small/02.jpg b/content/symbolon/small/02.jpg
similarity index 100%
rename from symbolon/small/02.jpg
rename to content/symbolon/small/02.jpg
diff --git a/symbolon/small/03.jpg b/content/symbolon/small/03.jpg
similarity index 100%
rename from symbolon/small/03.jpg
rename to content/symbolon/small/03.jpg
diff --git a/symbolon/small/04.jpg b/content/symbolon/small/04.jpg
similarity index 100%
rename from symbolon/small/04.jpg
rename to content/symbolon/small/04.jpg
diff --git a/symbolon/small/05.jpg b/content/symbolon/small/05.jpg
similarity index 100%
rename from symbolon/small/05.jpg
rename to content/symbolon/small/05.jpg
diff --git a/symbolon/small/06.jpg b/content/symbolon/small/06.jpg
similarity index 100%
rename from symbolon/small/06.jpg
rename to content/symbolon/small/06.jpg
diff --git a/symbolon/small/07.jpg b/content/symbolon/small/07.jpg
similarity index 100%
rename from symbolon/small/07.jpg
rename to content/symbolon/small/07.jpg
diff --git a/symbolon/small/08.jpg b/content/symbolon/small/08.jpg
similarity index 100%
rename from symbolon/small/08.jpg
rename to content/symbolon/small/08.jpg
diff --git a/symbolon/small/09.jpg b/content/symbolon/small/09.jpg
similarity index 100%
rename from symbolon/small/09.jpg
rename to content/symbolon/small/09.jpg
diff --git a/symbolon/small/10.jpg b/content/symbolon/small/10.jpg
similarity index 100%
rename from symbolon/small/10.jpg
rename to content/symbolon/small/10.jpg
diff --git a/symbolon/small/11.jpg b/content/symbolon/small/11.jpg
similarity index 100%
rename from symbolon/small/11.jpg
rename to content/symbolon/small/11.jpg
diff --git a/symbolon/small/12.jpg b/content/symbolon/small/12.jpg
similarity index 100%
rename from symbolon/small/12.jpg
rename to content/symbolon/small/12.jpg
diff --git a/symbolon/small/13.jpg b/content/symbolon/small/13.jpg
similarity index 100%
rename from symbolon/small/13.jpg
rename to content/symbolon/small/13.jpg
diff --git a/symbolon/small/14.jpg b/content/symbolon/small/14.jpg
similarity index 100%
rename from symbolon/small/14.jpg
rename to content/symbolon/small/14.jpg
diff --git a/symbolon/small/15.jpg b/content/symbolon/small/15.jpg
similarity index 100%
rename from symbolon/small/15.jpg
rename to content/symbolon/small/15.jpg
diff --git a/symbolon/small/16.jpg b/content/symbolon/small/16.jpg
similarity index 100%
rename from symbolon/small/16.jpg
rename to content/symbolon/small/16.jpg
diff --git a/symbolon/small/17.jpg b/content/symbolon/small/17.jpg
similarity index 100%
rename from symbolon/small/17.jpg
rename to content/symbolon/small/17.jpg
diff --git a/symbolon/small/18.jpg b/content/symbolon/small/18.jpg
similarity index 100%
rename from symbolon/small/18.jpg
rename to content/symbolon/small/18.jpg
diff --git a/symbolon/small/19.jpg b/content/symbolon/small/19.jpg
similarity index 100%
rename from symbolon/small/19.jpg
rename to content/symbolon/small/19.jpg
diff --git a/symbolon/small/20.jpg b/content/symbolon/small/20.jpg
similarity index 100%
rename from symbolon/small/20.jpg
rename to content/symbolon/small/20.jpg
diff --git a/symbolon/small/21.jpg b/content/symbolon/small/21.jpg
similarity index 100%
rename from symbolon/small/21.jpg
rename to content/symbolon/small/21.jpg
diff --git a/symbolon/small/22.jpg b/content/symbolon/small/22.jpg
similarity index 100%
rename from symbolon/small/22.jpg
rename to content/symbolon/small/22.jpg
diff --git a/symbolon/small/23.jpg b/content/symbolon/small/23.jpg
similarity index 100%
rename from symbolon/small/23.jpg
rename to content/symbolon/small/23.jpg
diff --git a/symbolon/small/24.jpg b/content/symbolon/small/24.jpg
similarity index 100%
rename from symbolon/small/24.jpg
rename to content/symbolon/small/24.jpg
diff --git a/symbolon/small/25.jpg b/content/symbolon/small/25.jpg
similarity index 100%
rename from symbolon/small/25.jpg
rename to content/symbolon/small/25.jpg
diff --git a/symbolon/small/26.jpg b/content/symbolon/small/26.jpg
similarity index 100%
rename from symbolon/small/26.jpg
rename to content/symbolon/small/26.jpg
diff --git a/symbolon/small/27.jpg b/content/symbolon/small/27.jpg
similarity index 100%
rename from symbolon/small/27.jpg
rename to content/symbolon/small/27.jpg
diff --git a/symbolon/small/28.jpg b/content/symbolon/small/28.jpg
similarity index 100%
rename from symbolon/small/28.jpg
rename to content/symbolon/small/28.jpg
diff --git a/symbolon/small/29.jpg b/content/symbolon/small/29.jpg
similarity index 100%
rename from symbolon/small/29.jpg
rename to content/symbolon/small/29.jpg
diff --git a/symbolon/small/30.jpg b/content/symbolon/small/30.jpg
similarity index 100%
rename from symbolon/small/30.jpg
rename to content/symbolon/small/30.jpg
diff --git a/symbolon/small/31.jpg b/content/symbolon/small/31.jpg
similarity index 100%
rename from symbolon/small/31.jpg
rename to content/symbolon/small/31.jpg
diff --git a/symbolon/small/32.jpg b/content/symbolon/small/32.jpg
similarity index 100%
rename from symbolon/small/32.jpg
rename to content/symbolon/small/32.jpg
diff --git a/symbolon/small/33.jpg b/content/symbolon/small/33.jpg
similarity index 100%
rename from symbolon/small/33.jpg
rename to content/symbolon/small/33.jpg
diff --git a/symbolon/small/34.jpg b/content/symbolon/small/34.jpg
similarity index 100%
rename from symbolon/small/34.jpg
rename to content/symbolon/small/34.jpg
diff --git a/symbolon/small/35.jpg b/content/symbolon/small/35.jpg
similarity index 100%
rename from symbolon/small/35.jpg
rename to content/symbolon/small/35.jpg
diff --git a/symbolon/small/36.jpg b/content/symbolon/small/36.jpg
similarity index 100%
rename from symbolon/small/36.jpg
rename to content/symbolon/small/36.jpg
diff --git a/symbolon/small/37.jpg b/content/symbolon/small/37.jpg
similarity index 100%
rename from symbolon/small/37.jpg
rename to content/symbolon/small/37.jpg
diff --git a/symbolon/small/38.jpg b/content/symbolon/small/38.jpg
similarity index 100%
rename from symbolon/small/38.jpg
rename to content/symbolon/small/38.jpg
diff --git a/symbolon/small/39.jpg b/content/symbolon/small/39.jpg
similarity index 100%
rename from symbolon/small/39.jpg
rename to content/symbolon/small/39.jpg
diff --git a/symbolon/small/40.jpg b/content/symbolon/small/40.jpg
similarity index 100%
rename from symbolon/small/40.jpg
rename to content/symbolon/small/40.jpg
diff --git a/symbolon/small/41.jpg b/content/symbolon/small/41.jpg
similarity index 100%
rename from symbolon/small/41.jpg
rename to content/symbolon/small/41.jpg
diff --git a/symbolon/small/42.jpg b/content/symbolon/small/42.jpg
similarity index 100%
rename from symbolon/small/42.jpg
rename to content/symbolon/small/42.jpg
diff --git a/symbolon/small/43.jpg b/content/symbolon/small/43.jpg
similarity index 100%
rename from symbolon/small/43.jpg
rename to content/symbolon/small/43.jpg
diff --git a/symbolon/small/44.jpg b/content/symbolon/small/44.jpg
similarity index 100%
rename from symbolon/small/44.jpg
rename to content/symbolon/small/44.jpg
diff --git a/symbolon/small/45.jpg b/content/symbolon/small/45.jpg
similarity index 100%
rename from symbolon/small/45.jpg
rename to content/symbolon/small/45.jpg
diff --git a/symbolon/small/46.jpg b/content/symbolon/small/46.jpg
similarity index 100%
rename from symbolon/small/46.jpg
rename to content/symbolon/small/46.jpg
diff --git a/symbolon/small/47.jpg b/content/symbolon/small/47.jpg
similarity index 100%
rename from symbolon/small/47.jpg
rename to content/symbolon/small/47.jpg
diff --git a/symbolon/small/48.jpg b/content/symbolon/small/48.jpg
similarity index 100%
rename from symbolon/small/48.jpg
rename to content/symbolon/small/48.jpg
diff --git a/symbolon/small/49.jpg b/content/symbolon/small/49.jpg
similarity index 100%
rename from symbolon/small/49.jpg
rename to content/symbolon/small/49.jpg
diff --git a/symbolon/small/50.jpg b/content/symbolon/small/50.jpg
similarity index 100%
rename from symbolon/small/50.jpg
rename to content/symbolon/small/50.jpg
diff --git a/symbolon/small/51.jpg b/content/symbolon/small/51.jpg
similarity index 100%
rename from symbolon/small/51.jpg
rename to content/symbolon/small/51.jpg
diff --git a/symbolon/small/52.jpg b/content/symbolon/small/52.jpg
similarity index 100%
rename from symbolon/small/52.jpg
rename to content/symbolon/small/52.jpg
diff --git a/symbolon/small/53.jpg b/content/symbolon/small/53.jpg
similarity index 100%
rename from symbolon/small/53.jpg
rename to content/symbolon/small/53.jpg
diff --git a/symbolon/small/54.jpg b/content/symbolon/small/54.jpg
similarity index 100%
rename from symbolon/small/54.jpg
rename to content/symbolon/small/54.jpg
diff --git a/symbolon/small/55.jpg b/content/symbolon/small/55.jpg
similarity index 100%
rename from symbolon/small/55.jpg
rename to content/symbolon/small/55.jpg
diff --git a/symbolon/small/56.jpg b/content/symbolon/small/56.jpg
similarity index 100%
rename from symbolon/small/56.jpg
rename to content/symbolon/small/56.jpg
diff --git a/symbolon/small/57.jpg b/content/symbolon/small/57.jpg
similarity index 100%
rename from symbolon/small/57.jpg
rename to content/symbolon/small/57.jpg
diff --git a/symbolon/small/58.jpg b/content/symbolon/small/58.jpg
similarity index 100%
rename from symbolon/small/58.jpg
rename to content/symbolon/small/58.jpg
diff --git a/symbolon/small/59.jpg b/content/symbolon/small/59.jpg
similarity index 100%
rename from symbolon/small/59.jpg
rename to content/symbolon/small/59.jpg
diff --git a/symbolon/small/60.jpg b/content/symbolon/small/60.jpg
similarity index 100%
rename from symbolon/small/60.jpg
rename to content/symbolon/small/60.jpg
diff --git a/symbolon/small/61.jpg b/content/symbolon/small/61.jpg
similarity index 100%
rename from symbolon/small/61.jpg
rename to content/symbolon/small/61.jpg
diff --git a/symbolon/small/62.jpg b/content/symbolon/small/62.jpg
similarity index 100%
rename from symbolon/small/62.jpg
rename to content/symbolon/small/62.jpg
diff --git a/symbolon/small/63.jpg b/content/symbolon/small/63.jpg
similarity index 100%
rename from symbolon/small/63.jpg
rename to content/symbolon/small/63.jpg
diff --git a/symbolon/small/64.jpg b/content/symbolon/small/64.jpg
similarity index 100%
rename from symbolon/small/64.jpg
rename to content/symbolon/small/64.jpg
diff --git a/symbolon/small/65.jpg b/content/symbolon/small/65.jpg
similarity index 100%
rename from symbolon/small/65.jpg
rename to content/symbolon/small/65.jpg
diff --git a/symbolon/small/66.jpg b/content/symbolon/small/66.jpg
similarity index 100%
rename from symbolon/small/66.jpg
rename to content/symbolon/small/66.jpg
diff --git a/symbolon/small/67.jpg b/content/symbolon/small/67.jpg
similarity index 100%
rename from symbolon/small/67.jpg
rename to content/symbolon/small/67.jpg
diff --git a/symbolon/small/68.jpg b/content/symbolon/small/68.jpg
similarity index 100%
rename from symbolon/small/68.jpg
rename to content/symbolon/small/68.jpg
diff --git a/symbolon/small/69.jpg b/content/symbolon/small/69.jpg
similarity index 100%
rename from symbolon/small/69.jpg
rename to content/symbolon/small/69.jpg
diff --git a/symbolon/small/70.jpg b/content/symbolon/small/70.jpg
similarity index 100%
rename from symbolon/small/70.jpg
rename to content/symbolon/small/70.jpg
diff --git a/symbolon/small/71.jpg b/content/symbolon/small/71.jpg
similarity index 100%
rename from symbolon/small/71.jpg
rename to content/symbolon/small/71.jpg
diff --git a/symbolon/small/72.jpg b/content/symbolon/small/72.jpg
similarity index 100%
rename from symbolon/small/72.jpg
rename to content/symbolon/small/72.jpg
diff --git a/symbolon/small/73.jpg b/content/symbolon/small/73.jpg
similarity index 100%
rename from symbolon/small/73.jpg
rename to content/symbolon/small/73.jpg
diff --git a/symbolon/small/74.jpg b/content/symbolon/small/74.jpg
similarity index 100%
rename from symbolon/small/74.jpg
rename to content/symbolon/small/74.jpg
diff --git a/symbolon/small/75.jpg b/content/symbolon/small/75.jpg
similarity index 100%
rename from symbolon/small/75.jpg
rename to content/symbolon/small/75.jpg
diff --git a/symbolon/small/76.jpg b/content/symbolon/small/76.jpg
similarity index 100%
rename from symbolon/small/76.jpg
rename to content/symbolon/small/76.jpg
diff --git a/symbolon/small/77.jpg b/content/symbolon/small/77.jpg
similarity index 100%
rename from symbolon/small/77.jpg
rename to content/symbolon/small/77.jpg
diff --git a/symbolon/small/78.jpg b/content/symbolon/small/78.jpg
similarity index 100%
rename from symbolon/small/78.jpg
rename to content/symbolon/small/78.jpg
diff --git a/symbolon/symbolon.css b/content/symbolon/symbolon.css
similarity index 100%
rename from symbolon/symbolon.css
rename to content/symbolon/symbolon.css
diff --git a/symbolon/symbolon.json b/content/symbolon/symbolon.json
similarity index 100%
rename from symbolon/symbolon.json
rename to content/symbolon/symbolon.json
diff --git a/css/style.sass b/css/style.sass
deleted file mode 100644
index b63fdc0..0000000
--- a/css/style.sass
+++ /dev/null
@@ -1,238 +0,0 @@
----
----
-
-$main-font: sans-serif
-$page-background: #333333
-$content-background: #ffffff
-$content-text: #544240
-$header-background: #4d4d4d
-$header-text: #ffffff
-$menu-background: #f18137
-$menu-text: #ffffff
-$footer-text: #7f7f7f
-$well-background: #ccc
-$link-color: #018cb0
-$light-color: #666
-
-=border-top-right-radius($value)
- border-top-right-radius: $value
- -moz-border-radius-topright: 2px
- -webkit-border-top-right-radius: $value
-
-=border-top-left-radius($value)
- border-top-left-radius: $value
- -moz-border-radius-topleft: $value
- -webkit-border-top-left-radius: $value
-
-=border-bottom-right-radius($value)
- border-bottom-right-radius: $value
- -moz-border-radius-bottomright: $value
- -webkit-border-bottom-right-radius: $value
-
-=border-bottom-left-radius($value)
- border-bottom-left-radius: $value
- -moz-border-radius-bottomleft: $value
- -webkit-border-bottom-left-radius: $value
-
-=border-radius($tr, $br: $tr, $bl: $br, $tl: $tr)
- +border-top-right-radius($tr)
- +border-bottom-right-radius($br)
- +border-bottom-left-radius($bl)
- +border-top-left-radius($tl)
-
-=background-clip-padding-box
- -moz-background-clip: padding
- -webkit-background-clip: padding-box
- background-clip: padding-box
-
-h1, h2, h3, h4, h5, h6, .h1, .h2, .h3, .h4, .h5, .h6
- color: $content-text
-
-a
- color: $link-color
-
- code
- text-decoration: underline
-
-#main-container
- background-color: $content-background
-
-.popover
- max-width: 100%
-
-.navbar-inverse
- background-color: $menu-background
-
- a.navbar-brand
- color: $menu-text
-
- .navbar-nav
- li
- a
- color: $menu-text
- font-weight: bold
-
- li.open
- background-color: $menu-background
-
- a.dropdown-toggle
- background-color: $menu-background
-
- ul.dropdown-menu
- background-color: $content-background
- color: $content-text
-
- li
- background-color: $content-background
- color: $content-text
-
- a
- background-color: $content-background
- color: $content-text
- font-weight: normal
-
-article.post
- div.meta
- font-size: 80%
- color: $light-color
- margin-top: .8em
- margin-bottom: .5em
-
- img
- max-width: 900px
- margin: 0 auto
- display: block
-
-.gist-data
- max-height: 300px
- overflow: auto
-
-body
- background-color: $page-background
- margin: 50px 0 0 0
-
- .well, .jumbotron
- background-color: $well-background
- color: $content-text
-
- small
- color: $content-background
-
- .jumbotron
- margin-top: 20px
-
- #about-well-image
- background-color: white
- margin-right: 1em
-
- img
- width: 150px
- background-color: white
- border: 1px solid #000
- margin: .5em
- padding: 1em
-
- #keywords-button
- font-size: 50%
- color: #7f7f7f
- font-weight: normal
- text-decoration: none
-
- #keywords-button:hover
- background-color: #4d4d4d
- color: #ffffff
- cursor: pointer
-
- .keyword-first-letter
- font-weight: bold
- color: #f18137
-
- .i
- font-style: italic
-
- .b
- font-weight: bold
-
- .post
- margin-bottom: 2em
-
- p.article-date
- text-indent: 0
- font-size: 80%
- color: #7f7f7f
-
- .paginator
- margin: .5em 0
-
-.tag-label
- +border-radius(2px, 2px, 0, 0)
- +background-clip-padding-box
- float: left
- position: relative
- background: #ccc
- margin-left: 16px
- margin-top: 3px
- padding: 0 15px 0 14px
- line-height: 24px
- font-size: 12px
- color: #555
- display: inline-block
-
-.tag-label:first-child
- margin-left: 7px
-
-.tag-label:before
- position: absolute
- left: -7px
- top: 0
- width: 0
- height: 0
- display: block
- border-style: solid
- border-width: 12px 7px 12px 0
- border-color: transparent #ccc transparent transparent
- content: ""
-
-/* the "hole" on the left end */
-.tag-label:after
- content: ""
- position: absolute
- width: 5px
- height: 5px
- background: $content-background
- top: 9px
- left: -1px
- border-radius: 50%
- box-shadow: inset 0 1px 1px #aaa
-
-.tag-label:hover:before
- border-color: transparent $menu-background transparent transparent
-
-.tag-label:hover
- background: $menu-background
- color: $menu-text
- text-decoration: none
-
-.tag-label:hover:after
- box-shadow: inset 0 1px 1px $menu-background
-
-blockquote
- font-size: 100%
-
-kbd
- border: 1px solid black
- background-color: #a9a9a9
- color: black
- padding: 5px
-
-h3.tag
- text-transform: uppercase
-
-h5
- font-weight: bold
-
-#tilda
- z-index: 10000
-
-pre.code-block
- max-height: 10em
diff --git a/disclaimer.md b/disclaimer.md
deleted file mode 100644
index f766502..0000000
--- a/disclaimer.md
+++ /dev/null
@@ -1,27 +0,0 @@
----
-layout: page
-title: Disclaimer
----
-
-
-The content of this site is written by Gergely Polonkai and is licensed under a Creative Commons Attribution-ShareAlike 4.0 International License.
-
-> Therefore, views expressed on this site are my personal views and do
-> not necessarily reflect the views of my employer. The articles and
-> thoughts on this site are solely my own unless otherwise stated, and
-> therefore, they do not represent (nor are they intended to
-> represent) the positions, opinions or policies of my employer or any
-> other company or person.
-
-> The comments on this site may be moderated by me, but even so the
-> opinions expressed in those comments are not necessarily shared by
-> me.
-
-> If you happen to use anything in your own work, please put a
-> backlink to the given article(s) or the main page.
-
-The social media icons in the contact menu are made by [Rogie
-King](http://rog.ie/).
-
-That thing you may call the site’s design is made using [Twitter
-Bootstrap](http://getbootstrap.com/).
\ No newline at end of file
diff --git a/gergely@polonkai.eu.asc b/gergely@polonkai.eu.asc
deleted file mode 100644
index 63d4091..0000000
--- a/gergely@polonkai.eu.asc
+++ /dev/null
@@ -1,3 +0,0 @@
----
----
-{% include pubkey.asc %}
diff --git a/images/contact/index.html b/images/contact/index.html
deleted file mode 100644
index a845151..0000000
--- a/images/contact/index.html
+++ /dev/null
@@ -1,2 +0,0 @@
----
----
diff --git a/images/eye.svg b/images/eye.svg
deleted file mode 100644
index 3276ddf..0000000
--- a/images/eye.svg
+++ /dev/null
@@ -1,195 +0,0 @@
-
-
-
-
diff --git a/images/profile.png b/images/profile.png
deleted file mode 100644
index 2df1c00..0000000
Binary files a/images/profile.png and /dev/null differ
diff --git a/index.html b/index.html
deleted file mode 100644
index aed24d0..0000000
--- a/index.html
+++ /dev/null
@@ -1,30 +0,0 @@
----
-layout: default
-title: Gergely Polonkai
-post_listing: true
----
-
-
-
- Gergely Polonkai
- developer, systems engineer and administrator
-
+{% if articles %}
+ {% for article in articles_page.object_list %}
+ {# First item #}
+ {% if loop.first and not articles_page.has_previous() %}
+
+ {% if loop.length > 1 %}
+
+
- I am Gergely Polonkai
- (sometimes referred to
- as W00d5t0ck
- or Polesz), a software developer, systems engineer and
- administrator. I was born on 7 March, 1983 in Budapest,
- Hungary. I spent my life moving here-and-there in the country,
- and finally settled in
- Veresegyház.
-
-
-
- You can reach me on
- gergely@polonkai.eu,
- or by phone on +36 (30)
- 7375-706. I fluently speak and
- write English
- and Hungarian and currently learning Icelandic.
-
-
-
- I have graduated in 2001
- from Táncsics Mihály Szakközépiskola,
- Szakiskola és Kollégium, an architecture high school
- based in Veszprém, Hungary. There, I learned
- about electricity and elevators, while
- getting my feet wet in the area of IT systems
- engineering. Together with some teachers, we
- developed the
- IT infrastructure of the school, building it from
- scratch with Windows XP
- based clients, and Debian
- GNU/Linux servers with Squid
- proxy, an Apache httpd
- web server, Exim+Courier IMAP based internal mailing and
- a Samba file server. Meanwhile,
- I have created the school’s first web page using Perl CGI, and later it’s replacement
- in PHP. Although I did that as
- a student, I consider it my first job.
-
-
-
- My first contract was made in 2002 with
- a small Budapest based ISP that served Internet connection to
- a large warren. I have mastered Linux based firewalling and routing
- there using iptables,
- and tc for QoS. I
- have also created a web page for the
- company using PHP
- and MySQL.
-
-
-
- After that I contracted with a small web
- development company in 2004.
- Here I was in the role of both a web developer and
- a systems administrator. I have
- mastered PHP there, together
- with MySQL administration. I
- also built a small router/firewall out of a PC for office
- needs.
-
-
-
- My next job came in 2006, when I
- contracted with a small VoIP company
- developing a call center software based on Asterisk. My job here was to create a base
- system for this software as small as possible, while managing
- the old, Ubuntu based ones. For the new version we
- targeted Gentoo Linux because
- of its possible small size, and performance reasons.
-
-
-
- The job that followed was with a world-wide IT services
- company in 2007, where I became a
- member of a large team supporting and administering several
- thousand servers, mostly based on Red
- Hat Enterprise Linux and SUSE
- Linux Enterprise Server. There I mastered cluster
- technologies (both Heartbeat 2
- and Red Hat
- Cluster), SAN, iSCSI and NFS
- based storages, Apache httpd
- and Tomcat web servers,
- administration of MySQL and Oracle 10g
- Databases, Bacula based
- backup, Windows 2003 Server
- and Windows Server 2008 (both
- standalone and cluster) with Active
- Directory, Group
- Policy, Microsoft Exchange
- Server 2005 and Microsoft SQL
- Server 2005, Xen Open
- Source virtualization, Citrix
- XenServer and XenApp, VMware
- ESXi and vSphere, Nagios
- monitoring (and monitoring in
- general), and last, but not least, Linux hardening (SELinux, firewalls of different kinds,
- fighting application security
- issues).
-
-
-
- All this knowledge came in very handy, when I went to a
- leading Hungarian financial company
- in 2010. The IT infrastructure was in a
- very bad shape there, and my job was to rebuild the Linux
- parts from scratch. We utilized Debian
- GNU/Linux servers (both standalone and Heartbeat 2 clusters), Apache httpd web servers, Exim+Courier
- IMAP for mailing, Bacula
- based backup, MySQL and PostgreSQL database
- servers, Oracle Databases
- (both 10g and 11g), Microsoft SQL
- Servers (both 2005 and 2008), Windows 2003 Server and Windows Server 2008 (both standalone and
- clusters), Active
- Directory, Group Policy,
- centralised ESET NOD32
- anti-virus, Windows
- cluster based file server with AD
- backend, WSUS, OTRS::ITSM helpdesk, Zabbix based monitoring, virtualization
- with Citrix XenServer, IT
- security solutions with SonicWall appliances, SELinux, Snort
- and iptables, Perl
- for system administration scripts, and PHP and the Symfony
- 2 framework for internal web development. Although much
- has changed in this list since then, it was my best and most
- challenging experience so far.
-
-
-
- I left that company in 2013 to work as
- a freelancer developer and
- a systems engineer for
- a startup network monitoring
- company. Here we were building a help desk system using
- open source products like OTRS::ITSM, OpenLDAP, and Zabbix. I also dug my nose into Docsis based ISP networks and SIP-based telephony.
-
-
-
- Unfortunately our main employer went bankrupt
- in 2014, so after a few months of
- freelancing I got a new job at the R&D division of a
- leading telecommunications company. My current role is pretty
- close to DevOps. Nowadays I’m developing a Django-based internal web application, while
- maintaining internal scripts written in both Perl, Python, bash
- and
- tcsh or trying to migrate the
- internal source code repositories from ClearCase to Git.
-
-
-
- I left that company in 2016, as such a slow moving giant couldn’t
- really keep up with my pace. I signed with another startup creating
- games capable of analysing work behaviour. Here we mainly use
- Flask,
- Cassandra, and
- Tensorflow. Unlike the previous one,
- this is a true learning organization, and given its size, it is
- capable of taking quick turns if market changes (and that’s exactly
- what I need).
-
-
-
- In my free time, I wander in forests,
- take pictures, and sometimes manipulate them with
- the GIMP. Sometimes
- I write short fantasy or sci-fi novels
- using LibreOffice. I am also
- developing some software in C,
- Python, and
- Vala, whose source code is managed
- with Git. When I’m not in the mood
- for writing, I go and check out the news on several technical areas,
- mostly IT and engineering, or give a try to a new programming
- language in the name of “why not?”.
-
-
-
-
-
-
diff --git a/setup.py b/setup.py
new file mode 100644
index 0000000..fc70a6b
--- /dev/null
+++ b/setup.py
@@ -0,0 +1,11 @@
+from setuptools import setup, find_packages
+
+
+setup(name='gergelypolonkaieu-site',
+ version='1.0.0',
+ description='gergely.polonkai.eu site',
+ author='Gergely Polonkai',
+ author_email='gergely@polonkai.eu',
+ license='All Rights Reserved',
+ packages=find_packages('.'),
+ zip_safe=False)
diff --git a/stories/index.html b/stories/index.html
deleted file mode 100644
index 3e097f8..0000000
--- a/stories/index.html
+++ /dev/null
@@ -1,14 +0,0 @@
----
-layout: page
-title: Stories
----
-
-These are little stories I write time to time, either from my own head or in response to writing
-prompts.
-
-
diff --git a/stories/shadow-of-the-sun-twins.md b/stories/shadow-of-the-sun-twins.md
deleted file mode 100644
index 7773182..0000000
--- a/stories/shadow-of-the-sun-twins.md
+++ /dev/null
@@ -1,56 +0,0 @@
----
-layout: story
-title: "Shadow of the Sun Twins"
----
-
-The below sci-fi short is a reply for [this writing prompt](https://mastodon.social/@WritingPrompts/100457172434884207):
-
-> Life is hard for a dirty salvager on this junk planet. If the heat of the desert's twin suns don't kill you, the molten rain coming down from the ship graveyard orbiting the planet might. But today is a good day. Today you found what looks to be a fully operational spacecraft.
-
-The desert was calm. Hot as ever, but at least the acidic molten rain stopped almost a week ago now. The couple darted from wreck to wreck, just like every day since they crashed on this living hell almost two decades ago. Salvagers. Thatʼs what they were for their whole lives, which was almost forty years now. Everyone despised their kind yet, a lot of of megacorps were relying on them. They could easily identify parts their commissioners wanted, sometimes hundreds of feet away. They werenʼt the best of the best, but they were good.
-
-Their clothes are mostly rags, but they didnʼt stand out during the rare occasions when they visited one of the local colonies. Everyone and everything was dirty and wrecked here. It was a home for outcasts and criminals.
-
-Shiny ships landed about once a month to pick up things they ordered, and trade it for food and water. They had some old tools to sell, but you had to be either wealthy or revered to buy them.
-
-Thatʼs how Raleh and Gerth got their only wealth, the binoculars. The image they provided was crystal clear, and the software running on it could easily identify any types of spacecraft they were specialised in. It costed them a small fortune, in both sense of the word. They still made jokes occasionally about that day when they planned their uncertain future years after getting them.
-
-“Enter” a machine voice said, after the door on the spacecraft, that seemed to be a wreck, opened.
-
-They hesitated. Neither of them saw a ship on this planet before that was capable of communication not counting the crafts of their employers. The ship was small, more like a personal carrier than a battle cruiser. It didnʼt have any sign of authority or ownership except the confederation flag painted on both sides.
-
-“Enter” the voice repeated.
-
-Raleh was always more brave, recklessly so. After stepping inside, she waved for Gerth.
-
-“Come inside! We could use this to make ourself a future.” she said, but Gerth was still shuffling outside.
-
-“What, you think anyone would buy a ship that allows anyone on board?” Gerth replied. And indeed, federal law stated anyone approaching a spacecraft without proper authorisation would be zapped to death by the shipʼs defense system. They saw it countless times. They even buried a friend who tried it.
-
-“Who cares? If nothing else, we can rip it to pieces and sell all the parts.” Raleh insisted, then disappeared inside the craft.
-
-Inside it was dark, or at least it seemed so after getting out of the scorching light of the sun twins. Her eye got used to it eventually. The ship seemed completely intact. No burning, no sign of crashing in the inside.
-
-“Hon!” It was Gerth, and sounded really excited. “Honey, come out, I have to show you something!”
-
-Raleh left through the small door to find her partner squatting next to the ship. She was touching the shield, examining it closely.
-
-“This ship didnʼt crash land here.” she announced. “It was shot several times, and one of the engines were hit, but it simply landed.”
-
-“Go figure,” Raleh replied, “the inside is good as new.”
-
-The two entered the ship again and looked around.
-
-“Computer!” Gerth said in loud and firm tone. “Self diagnosis.” She knew well from the times they were salvaging in space that a confederation ship will identify itself as part of the response.
-
-“Cruiser type PC-79-1, registration code MID-683, owned by the Intelligence Department of the Confederate Military.” the machine told, and continued. “Shield operational and lowered down. Hull 97% intact. Solar panels providing 230% of required energy. All reserve batteries at 100%. Engine one operational. Engine two operational. Engine three damaged, manual intervention needed. Ship is capable of lift off and flight. Software level diagnosis must be requested explicitly.”
-
-“Thatʼs nice” Gerth summed. “But why would the Intelligence department leave a functioning ship in the middle of hell?”
-
-“Beats me. But we should decide what to do with it before someone else finds it” Raleh said, and now it was her time to get nervous.
-
-“Computer, close doors” Gerth commanded and waited until the ship carries out her order. “Just so no one sees us from the distance. Computer! Identify your captain!”
-
-On the screen, a picture of a woman appeared. She was probably around her forties with short blonde hair and deep green eyes, and a fierce, but happy look on her face. Her uniform showed the rank of a confederate colonel. If it werenʼt for the rags and the messy hair, it could have easily been Gerth.
-
-“Colonel Gerthrud Miartan” the ship announced. “Welcome back on board.”
diff --git a/tasks.py b/tasks.py
new file mode 100644
index 0000000..e89b3db
--- /dev/null
+++ b/tasks.py
@@ -0,0 +1,110 @@
+# -*- coding: utf-8 -*-
+
+import os
+import shutil
+import sys
+import datetime
+
+from invoke import task
+from invoke.util import cd
+from pelican.server import ComplexHTTPRequestHandler, RootedHTTPServer
+from pelican.settings import DEFAULT_CONFIG, get_settings_from_file
+
+SETTINGS_FILE_BASE = 'pelicanconf.py'
+SETTINGS = {}
+SETTINGS.update(DEFAULT_CONFIG)
+LOCAL_SETTINGS = get_settings_from_file(SETTINGS_FILE_BASE)
+SETTINGS.update(LOCAL_SETTINGS)
+
+CONFIG = {
+ 'settings_base': SETTINGS_FILE_BASE,
+ 'settings_publish': 'publishconf.py',
+ # Output path. Can be absolute or relative to tasks.py. Default: 'output'
+ 'deploy_path': SETTINGS['OUTPUT_PATH'],
+ # Port for `serve`
+ 'port': 8000,
+}
+
+@task
+def clean(c):
+ """Remove generated files"""
+ if os.path.isdir(CONFIG['deploy_path']):
+ shutil.rmtree(CONFIG['deploy_path'])
+ os.makedirs(CONFIG['deploy_path'])
+
+@task
+def build(c):
+ """Build local version of site"""
+ c.run('pelican -s {settings_base}'.format(**CONFIG))
+
+@task
+def rebuild(c):
+ """`build` with the delete switch"""
+ c.run('pelican -d -s {settings_base}'.format(**CONFIG))
+
+@task
+def regenerate(c):
+ """Automatically regenerate site upon file modification"""
+ c.run('pelican -r -s {settings_base}'.format(**CONFIG))
+
+@task
+def serve(c):
+ """Serve site at http://localhost:$PORT/ (default port is 8000)"""
+
+ class AddressReuseTCPServer(RootedHTTPServer):
+ allow_reuse_address = True
+
+ server = AddressReuseTCPServer(
+ CONFIG['deploy_path'],
+ ('', CONFIG['port']),
+ ComplexHTTPRequestHandler)
+
+ sys.stderr.write('Serving on port {port} ...\n'.format(**CONFIG))
+ server.serve_forever()
+
+@task
+def reserve(c):
+ """`build`, then `serve`"""
+ build(c)
+ serve(c)
+
+@task
+def preview(c):
+ """Build production version of site"""
+ c.run('pelican -s {settings_publish}'.format(**CONFIG))
+
+@task
+def livereload(c):
+ """Automatically reload browser tab upon file modification."""
+ from livereload import Server
+ build(c)
+ server = Server()
+ # Watch the base settings file
+ server.watch(CONFIG['settings_base'], lambda: build(c))
+ # Watch content source files
+ content_file_extensions = ['.md', '.rst']
+ for extension in content_file_extensions:
+ content_blob = '{0}/**/*{1}'.format(SETTINGS['PATH'], extension)
+ server.watch(content_blob, lambda: build(c))
+ # Watch the theme's templates and static assets
+ theme_path = SETTINGS['THEME']
+ server.watch('{}/templates/*.html'.format(theme_path), lambda: build(c))
+ static_file_extensions = ['.css', '.js']
+ for extension in static_file_extensions:
+ static_file = '{0}/static/**/*{1}'.format(theme_path, extension)
+ server.watch(static_file, lambda: build(c))
+ # Serve output path on configured port
+ server.serve(port=CONFIG['port'], root=CONFIG['deploy_path'])
+
+
+@task
+def publish(c):
+ """Publish to production via rsync"""
+ c.run('pelican -s {settings_publish}'.format(**CONFIG))
+ c.run(
+ 'rsync --delete --exclude ".DS_Store" -pthrvz -c '
+ '-e "ssh -p {ssh_port}" '
+ '{} {ssh_user}@{ssh_host}:{ssh_path}'.format(
+ CONFIG['deploy_path'].rstrip('/') + '/',
+ **CONFIG))
+