Paretje's blog

Switch to nanoc

Yesterday, after my exam, I finally finished the transition of my blog to nanoc. I'm very happy to have a statically generated blog, instead of WordPress, in which I need to invest more time to keep it secure then I actually write posts.

And, as you see, this blog is transitioning to English now. I'm not quite sure how I'll kind of separate the old Dutch part from the English, but we'll see. It's not that important now.

With wp2nanoc, I imported my old WordPress posts. I needed to do some changes however, as the options with an argument don't work. I didn't want the conversion however, so I deleted it manually. The id's didn't work either, but I fixed it.

Those post don't suffice, however, as most of then are bbcode. I'm using pandoc for Markdown, but pandoc doesn't support bbcode. I found however this post which does the trick:

require 'rubygems'
require 'bb-ruby'

class BbcodeFilter < Nanoc3::Filter
  identifier :bbcode

  def run(content, args)
    content.bbcode_to_html
  end

end

This however, doesn't suffice, as some other tags have been used in the past. I'm not sure however what I'm going to do about code blocks, as pandoc does clearly a much better job.

Another thing I definitely wanted was pagination. I found the code of this blog, which has helped me tremendously. I did however some optimisations. For example, I do use pagination on categories,too.

module PaginationHelper
  def generate_pages(articles, title, base_url='')
    articles_to_paginate = articles
    pages = (articles.size - 1) / @config[:page_size] + 1
    article_groups = []
    until articles_to_paginate.empty?
      article_groups << articles_to_paginate.slice!(0..@config[:page_size]-1)
    end
    article_groups.each_with_index do |subarticles, i|
      items << Nanoc::Item.new("<%= render 'page', :pages => #{pages}, :page => #{i + 1}, :base_url => \"#{base_url}\" %>", {
        :title => title,
        :created_at => DateTime.now,
        :articles => subarticles
      }, link_for_page(i + 1, base_url))
    end
  end

  def link_for_page(page, base_url='')
    page == 1 ? base_url + '/' : "#{base_url}/page/#{page}"
  end
end

Install OSMC

Yesterday I installed OSMC on my Raspberry Pi, as OpenELEC gave a lot of problems since I upgraded to 6.0, as it freezed frequently when watching TS files, including live television. OSMC does make a lot of things a lot easier due to the fact it's Debian based. I switched to OpenELEC because of the hacky updating system of RaspBMC, but as OSMC now uses APT, it's alright.

It took quite a while to find out it was a software issue, as the first time I really realized there was a problem was after I did a spring clean at my desk, and I thought something had gone wrong. I wanted to try if it was an issue with the rpi itself by switching with the rpi I'd used for as a server at PCextreme. However, I was unable to do so, as I couldn't do much due that damned binary blob, which prevents me to use the video decoder! It's one of the last pieces of proprietary software I use, and I want to get rid of it. But it's uncertain to be possible in combination with my small old CRT television, and I'm not going to get a new one before I finished my studies.

I had a problem however with the switch to OSMC, more particularly with my remote control. It emulates a keyboard but, probably due to the fact OSMC uses lirc, it doesn't work completely in OSMC, although it works perfectly well on a clean Debian install. Debugging information shows it indeed receives lirc events. I tried to disable lirc, but it didn't really work well. After a lot of tries, I corrected the used Lircmap.xml so I could use the same keymap file as I used to.

Writing this I got an idea however in order to replace the pi now. I planed to use my first server for Kodi. I thought it wouldn't be possible to do so now because the only video card I have which has an RCA output uses a resolution which is bigger than standard PAL. However, it would probably work when I defined a custom xrandr output mode. I'm curious to try it, but first I'll have to prepare the replacement for my parents, as they're using the old server now.


Betalen via Bankcontact

In het verleden heb ik op verschillende websites problemen gehad met het betalen via Bankcontact. Telkens gaf mijn bank een error over technische problemen. Het werkt echter wel in een browser zonder verdere instellingen. Dit keer deed ik dat niet, maar startte ik Chromium. Ik gebruik die browser niet voor dagelijks gebruik, en er zijn dan ook geen extensies en dergelijke geïnstalleerd, en toch werkte het niet. Ik had gezien dat het icoontje dat er third-party cookies geblokkeerd waren aanwezig was, en probeerde dit eens uit te schakelen. En, jawel, het werkte nu wel.

Dus, ik concludeerde dat het in Iceweasel ook gewoon zou werken als ik third-party cookies niet zou blokkeren. Ik wou dit echter zeker niet algemeen gaan toestaan, en keek even naar de instellingen, en concludeerde dat een exception toevoegen om de juiste website altijd toe te laten voldoende zou zijn. Ik zag twee mogelijkheden: ogone (third-party cookie), of mijn bank (wil third-party cookie uitlezen), en het bleek mijn bank te zijn. Voortaan kan ik met een gerust hart op elke website betalen, zolang ze het gebruikte (sub)domein maar niet wijzigen.


Nanoc

Vanavond heb ik eens rond gekeken naar static site generators, want dat is wat ik wil voor de website van de Game Section. Die website is nu een wiki, met een handvol pagina's, en zonder dat er iemand anders iets (kan) wijzigen. Daarom had ik het graag statisch gedaan, en dan komen we dus snel uit bij SSG's.

Uiteindelijk heb ik er drie geprobeerd: jekyll (zoals bij GitHub Pages), pelican en nanoc. Pelican had voor mij alvast 1 voordeel, en wel het in Python geschreven is, en de anderen in Ruby. Echter, pelican, en na wat zoeken bleek zo ongeveer alle Python SSG's, zijn sterk gericht op blogging, wat hier dus zeker niet van toepassing is. Ook jekyll heeft blogging functionaliteiten, maat is ook zeer gemakkelijk algemeen inzetbaar. Uiteindelijk koos ik voor nanc, en wel vanwege de flexibiliteit. Het parsen van de source van de pagina's gebeurt bijvoorbeeld door filters, waardoor je zelf een bepaalde filter kan gebruiken voor bv een bepaalde extensie. Één zo'n filter is Pandoc, waardoor virtueel elk formaat ondersteund wordt, inclusief wiki-syntax, waardoor ik de bestaande pagina's, op een paar details na, kon copy-pasten.

Voordat ik het natuurlijk in gebruik kan nemen moet nog een stylesheet worden uitgewerkt, maar de pagina's zijn er al. Ik ben eigenlijk zozeer onder de indruk van nanc, dat ik besloten heb om Online - Urbanus niet naar WordPress te migreren, maar naar nanc. Dat is zeer eenvoudig, want nanc ondersteund ook probleemloos HTML als source.


Touchpad (5)

Vandaag heb ik de kernel op mijn laptop geüpgraded naar 4.0, waardoor de standaard drivers voor mijn touchpad bruikbaar worden, en waardoor ik dus de geportte drivers niet moet bijwerken. Voordeel aan de standaard driver is dat het gemakkelijker is om tekst te selecteren. Ik meen dat ik ergens gelezen heb dat de recentste kernels wel een goedwerkende driver hebben. We zullen zien ...


Voeding Raspberry Pi

Toen ik gisteren arriveerde op mijn kot, en mijn computer startte, had ik geen internet, en inderdaad de Raspberry Pi bleek volledig vast te zitten. De even in- en uittrekken bleek geen effect te hebben, en al snel begon ik te vrezen voor rpi. 's nachts heb ik hem uit gelaten, en uiteindelijk bleek het, ongeveer, te werken met enkel LAN, geen USB, waardoor ik het vermoeden kreeg dat er een probleem was met de interne USB hub. Toen deze avond echter bleek dat het LAN zeer onstabiel was toen ik uiteindelijk remote control geactiveerd had, en mijn XBMC bediende vanaf mijn GSM, leek die theorie niet te kloppen.

Uiteindelijk probeerde ik eens met de adapter van mijn GSM, en plots werkte alles, en begon hij alles die ik had proberen startten met mijn GSM effectief af te spelen, en de dader leek gevonden. Een nieuwe lader dus. Bij de website waar ik de rpi voor de tv thuis kocht lijkt wat nadelig, wegens de verzendkosten, al zou ik er wel twee moeten hebben, als mijn rpi van Pcextreme arriveert. Maar uiteindelijk heb ik het er toch op gewaagd, en een 2A GSM lader gekocht bij bol.com. Hopelijk zal ik het me niet beklagen ...


VPS

Afgelopen week is er heel wat gebeurt ... Al een tijdje was de boot-partitie van mijn Raspberry Pi read-only, wat eigenlijk geen problemen gaf, tot de nieuwe versie van de firmware een extra pakket nodig had, en zo de updates van andere pakketten tegenhield. Daarom heb ik de partitie geremount met rw. En dit leek te werken ... tot de root partitie tijdens het installeren van de updates ro werd.

Uiteindelijk bleek de SD kaart bad sector(en) te hebben. Nieuwe SD kaart met verse installatie zou me 25 euro excl. btw kosten. Aangezien ik al een tijdje af wou van mijn veel te ruime hosting abonnement, leek dit wel een heel goede gelegenheid om een VPS te gaan gebruiken op het cloud systeem van PCextreme. Ik gebruik hierbij een Agile instantie, die eigenlijk gewoon een vrij traditionele VPS is, zonder replication en dergelijke.

Uiteindelijk heb ik de VPS geïnstalleerd en de backups teruggeplaatst, intussen werd ook het certificaat van de blog vernieuwd. Intussen is het blog volledig gehost op de VPS, wat de website een pak sneller maakte. Ik dacht immers dat het vooral de rpi was die het zo traag maakte, maar na de overstap op de VPS zag ik dat de blog gewoon zo lang nodig had om te renderen. Intussen heb ik ook de community fora van de Game Section gemigreerd naar de VPS, meet https, uiteraard.

Het is dus de bedoeling alles over te zetten voor het einde van het jaar, wanneer mijn abonnement ten einde loopt. Ik heb voor dit alles trouwens geen gebruik gemaakt van de Apache en MySQL, maar van nginx en MariaDB. nginx om de simpele reden dat ik hier zeer tevreden over was bij mijn rpi, en ik met name de config sneller is. Over snelheid zal ik me niet uitspreken. MariaDB tov MySQL lijkt me logisch, aangezien MariaDB de GPL-only fork is uit de community, en actieve ontwikkeling kent, terwijl MySQL relatief dood lijkt. Blijkbaar zijn ook de meeste grote tech-bedrijven die MySQL gebruikten overgestapt naar MariaDB, dus ...

Daarnaast heb ik ook een aantal wijzigingen doorgevoerd aan dit blog, en zo is dit de eerste post die geformatteerd werd met markdown, ipv bbcode. De oude posts blijven echter zonder problemen werken met bbcode, dankzij een kleine wijziging aan de Markdown-plugin.

Ik denk er ook sterk over na om de Urbanus-website niet meer als afzonderlijke entiteit te hebben, maar in pagina's op het blog te stoppen, die dan ook onder een nieuw domein zou komen. Dit zou handiger zijn dan het huidige systeem dat afhangt van MyBB, en dat ik natuurlijk zelf up-to-date moet houden. Daarnaast kan ik dan ook wel eens beginnen nadenken over het nut van het forum. Mogelijk zou, zeker vanuit veiligheidsperspectief, het forum verdwijnen, met wel een HTML-versie van het forum. De wiki van de Game Section zou wel eens een gecompileerde wiki kunnen worden. Dit blog wordt mogelijk dan toch Engelstalig.


Touchpad (4)

Mijn vorige wijziging om selectie adhv tabs met touchpad mogelijk te maken blijken niet te werken. Ik vermoed dat Tab Drag Delay noodzakelijk is. Hoe het kan dat ik niet doorhad dat het nog niet werkte? Waarschijnlijk dacht ik dat ik het geselecteerd had, terwijl dit gewoon was door te klikken op het woord. Nu, de oplossing is, en deze keer echt, deze config.


Contextmenu search in achtergrond

Wanneer je in Iceweasel via het contextmenu geselecteerde tekst wil zoeken met een zoekmachine, dan opent de nieuwe tab zich in de voorgrond, terwijl ik meestal niet meteen naar de resultaten wil gaan, maar de huidige tekst wil verder lezen en misschien andere dingen zoeken. Ik heb nu even gezocht en vond de oplossing in about:config door browser.search.context.loadInBackground op true te zetten.


Touchpad (3)

Ik schreef reeds over het feit dat ik nu de cmt driver gebruik voor mijn touchpad. Er was één ding die me wel verveelde, en dat was dat er (standaard) geen "Tab Drag" was. Nu stond er reeds in het artikel een manier dit te doen met xinput, maar ik had het liever in xorg.

Ik heb dit nu eens uitgezocht, en uiteindelijk heb ik de symlink van /etc/X11/xorg.conf.d/50-touchpad-cmt-peppy.conf vervangen door een kopie en het volgende toegevoegd:
Option "Tab Drag Enable" "1"