Europa Journal, door Jack Castle

europajournalIsaac Asimov en een aantal andere later bekend geworden science-fictionschrijver zijn hun professionele carrière begonnen als broodschrijver voor tijdschrijften als Astounding Science Fiction en Amazing Stories. Ze kregen per woord betaald als ze gepubliceerd werden. Veel van die verhalen volgden een zelfde soort stramien: een of meer mensen belanden op een vreemde planeet en hebben daar wondelijke ontmoetingen, soms met een moraal.

Er is veel van deze scifi-pulp geproduceerd en Jack Castle treedt in de voetsporen van deze schrijvers. Hij doet dat op een bijzondere manier: hoewel de karakters en het verhaal zelf redelijk voorspelbaar zijn, zet hij in zijn verhaal moderne technologieën in en gebruikt hij een moderne schrijfstijl.

Het resultaat is een boek dat liefhebbers van klassieke scifi (Jack Vance, de vroege Asimov en Philip K. Dick, A.E. van Vogt) zal aanspreken en liefhebbers van modernere scifi goed kan vermaken. Verwacht geen grootse inzichten. Dit is meer een lekker weglezende curiositeit.

Advies: niks te verliezen; lezen maar.

Command-line TweetDeck clone

Today we’re making a command-line TweetDeck clone! I hope you’ve all brought your Twitter account, your phone and access to your Linux workstation or server. It’s supposed to also work on Mac devices but you’ll have to figure that out for yourselves. While it is perfectly possible to install Ruby on Windows I am not aware of screen or tmux possibilities there and that would take away half the fun.

So Linux it is. Pick any distribution; we’re not picky today. I’m using Debian 8 so this will most likely also work on the Ubuntus and Mint.

tdclone25

 

Our project consists of four parts:
1 – command-line Twitter client
2 – your custom Twitter application so you can use the Twitter api
3 – tmux for the columns
4 – PuTTY with customized colours

I assume some prior Linux experience; I won’t explain how to install Linux or connect with PuTTY.

We’ll be using @sferik’s excellent command-line power tool for Twitter: ‘t’. Instructions on that site are pretty clear; here I’m just dressing it up a bit.

If you haven’t done so yet, you MUST associate a cell phone number with your Twitter account for this. Do that first, then come back here.

Time to prepare your system for t!

# aptitude install build-essential ruby ruby-dev

If you’re on a system that uses yum instead of apt, try

# yum groupinstall 'Development Tools'

I haven’t tested that though; in any case you need stuff like ‘make’ to compile the Ruby gem.

Once completed you can install t by doing

# gem install t

If you get errors check if Ruby and its development environment are correctly installed.

Now as your regular user you must set up your Twitter account. Not to worry: t will give you clear instructions. It will even open necessary urls in your browser. As I am doing this on a machine without a browser I want to see the urls but not have them openened; I will copy and paste them in a browser on a different machine. To that effect you can use the –display-uri parameter. If you’re on a machine with a gui by all means leave that parameter out.

tdclone01

 

Now tell t about your account:

$ t authorize --display-uri

t will instruct you on how to proceed.

tdclone02

 

Press Enter. If you left out the –display-uri parameter then your browser will be opened. If you did provide the –display-uri parameter then you will be shown the url you should open. Copy the url and open it in a browser.

I’ll just assume you haven’t created any Twitter apps before. If you did you know the drill.

tdclone03

 

Provide a name, a description and a url for your app. Some Twitter apps show this data along with your tweets so keep that in mind.

tdclone04

 

Congratulations, you are now a Twitter app developer.

tdclone05

 

Go to the Permissions tab and set the correct permissions. Provide only the persmissions you need, never more.

tdclone10a

 

Go to the Keys and Access Tokens tab and copy the Consumer Key.

tdclone06

 

Paste the API key on the command line.

tdclone07

 

Copy the API secret key.

tdclone08

 

Paste it on the command line.

tdclone09

 

t will now instruct you to open the Twitter app authorization app. If you supplied the –display-uri parameter it will just show you the url you should open.

tdclone12

 

Authorize the app.

tdclone13

 

Copy the six digit code.

tdclone14

 

Paste the code on the command line.

tdclone15

 

If all is well t says ‘Authorization successful’.

Test it by sending a tweet:

$ t update 'Tweeting this from the command line!'

…or whatever tweet you like to send 😛

tdclone16

 

t provides the command for deleting the tweet if necessary. The numeric code is the unique tweet id.

tdclone17

 

~~

Now for the cosmetic part!

Do

# aptitude install tmux

if tmux isn’t installed on your system yet. It pays to read some documentation on basic tmux operations.

Start tmux and split the screen horizontally:

$ tmux
^b + "

tdclone18

 

Select the upper pane:

^b + q 0

or

^b + [up]

Split the upper pane in four separate vertical panes by using

^b + %

Move around the panes with

^b + [up|down|left|right]

Select a specific pane by issuing

^b + q

Select the desired pane number.

You’ll get the hang of it 😉

tdclone19

 

In the individual panes issue the t commands you want. I like to set it up like this:
– pane one: #dtv OR #durftevragen (search query)
– pane two: timeline
– pane three: mentions
– pane four: dms (not shown in this article, I forgot to set dm permissions for my app ;))

Of course you are free to set it up however you like. In my case these are the commands:

t stream search "#dtv OR #durftevragen"
t stream timeline
watch -d 600 t mentions

The third command is because you can’t stream mentions. Or you can but it didn’t work for me. Anyway the watch command ($ man watch) is helping me out here.

tdclone20

 

If you’re connecting from PuTTY you can play around with the font, colours, size, etc.

tdclone21

 

If you’re done select Session, enter a name and click Save so your settings are saved.

tdclone22

 

First result:

tdclone23

 

‘watch’ is stripping colour from my mentions so I’m working around that with a manual watch replacement:

$ while true; do clear; t mentions -n 6; sleep 600; done

tdclone24

 

Victory! We can use the lower horizontal pane to send updates in.

tdclone25

Upgrading Roundcube from the Debian repositories to the current version

Debian 8 in its repository holds version 1.1.5 of Roundcube. That is fine because that’s a stable version and it’s working without mentionable issues. However I wanted to install the current version (1.2.2) because it has a number of features I like. During installation I followed Roundcube’s own howto.

Basically I will just install the new Roundcube next to the old one and afterwards remove the older Roundcube.

I’m assuming your html files are in /var/www.

# cd /var/www

Download the source:
Head over to https://roundcube.net/download/. I’m downloading the 1.2.2 Complete version because it includes necessary third-party packages. On the server:

# wget https://github.com/roundcube/roundcubemail/releases/download/1.2.2/roundcubemail-1.2.2-complete.tar.gz

Extract the tar file:

# tar xvfz roundcubemail-1.2.2-complete.tar.gz

Rename the directory for typo reduction purposes:

# mv roundcubemail-1.2.2 newcube

Set permissions:

# chown -R www-data:www-data newcube

For security reasons move the temp directory out of the publicly accessible directory and delete the logging directory:

# mv /var/www/newcube/temp /var/roundcubetemp (or whatever directory you fancy).
# rm -rf /var/www/newcube/logs

Because we don’t want to overwrite the old Roundcube version we’ll set up a new database. I’m using the same user as for the old database. Note that you might find the old user’s password in /etc/roundcube/debian-db.php. Of course if you find it easier feel free to create a new user for this database.

# mysql -u root -p
mysql> CREATE DATABASE roundcube122;
mysql> GRANT ALL PRIVILEGES ON `roundcube122`.* TO 'roundcube'@'localhost';
mysql> FLUSH PRIVILEGES;
mysql> quit

Import the preconfigured MySQL database into the newly created one:

# mysql -u root -p roundcube122 < /var/www/newcube/SQL/mysql.initial.sql

Continue the installation from your browser: point it to https://example.com/newcube/installer/
Because I had the repository version installed all PHP and third-party requirements were already met. If some of them aren’t install and/or configure them; most are just PHP modules or Debian packages. If everything is in order press the Next button.

This brings us to the configuration page. I suggest to change the following settings:

temp_dir: /var/roundcubetemp/
log_driver: syslog
db_dsnw: MySQL, localhost, roundcube122, roundcube, P4ssw0rd (use the old roundcube user’s password here)

The SMTP server details depend on how you set up your SMTP server (duh). So change to your own settings.
smtp_server: localhost
smtp_user/smtp_pass: Use the current IMAP username and password for SMTP authentication

When you’re done click CREATE CONFIG.

If no errors occur click CONTINUE.

Delete the installer folder:

# rm -rf /var/www/newcube/installer

Disable the installer in /var/www/newcube/config/default.inc.php:

$config['enable_installer'] = false;

Plugins:
Install curl and git:

# aptitude install curl git

From https://plugins.roundcube.net/

# cd /var/www/newcube
# curl -s https://getcomposer.org/installer | php
# cp composer.json-dist composer.json

To install a plugin first find one you like: https://plugins.roundcube.net/explore/
I’ll be installing this one: https://plugins.roundcube.net/packages/sblaisot/automatic_addressbook

In /var/www/newcube/composer.json find this part:

    "require": {
        "php": ">=5.3.7",
        "pear/pear-core-minimal": "~1.10.1",
        "roundcube/plugin-installer": "~0.1.6",
        "pear-pear.php.net/net_socket": "~1.0.12",
        "pear-pear.php.net/auth_sasl": "~1.0.6",
        "pear-pear.php.net/net_idna2": "~0.1.1",
        "pear-pear.php.net/mail_mime": "~1.10.0",
        "pear-pear.php.net/net_smtp": "~1.7.1",
        "pear-pear.php.net/crypt_gpg": "~1.4.2",
        "roundcube/net_sieve": "~1.5.0"
    },

Add a comma to the second last line and add the plugin and version. The string to add appears at the top of the page. It is also (at the time of writing) the part of the url after ‘https://plugins.roundcube.net/packages/’.

    "require": {
        "php": ">=5.3.7",
        "pear/pear-core-minimal": "~1.10.1",
        "roundcube/plugin-installer": "~0.1.6",
        "pear-pear.php.net/net_socket": "~1.0.12",
        "pear-pear.php.net/auth_sasl": "~1.0.6",
        "pear-pear.php.net/net_idna2": "~0.1.1",
        "pear-pear.php.net/mail_mime": "~1.10.0",
        "pear-pear.php.net/net_smtp": "~1.7.1",
        "pear-pear.php.net/crypt_gpg": "~1.4.2",
        "roundcube/net_sieve": "~1.5.0",         <---- NOTE THE COMMA HERE
        "sblaisot/automatic_addressbook": "~0.4.2" <-- NO COMMA HERE
    },

Do

# php composer.phar install

For more consecutive plugins do

# php composer.phar update

The man in the high castle, door Philip K. Dick

themaninthehighcastleOp de achterkant van dit boek schrijft Eric Brown: “…one of the very best science fiction novels ever published.” Ik ben niet goed bekend met Eric Brown maar ik ben geen fan van hem. Om te beginnen heeft hij een uitgebreid voorwoord in mijn Penguin-uitgave van The man in the high castle geschreven waarin hij even uit de doeken doet wat er allemaal in het verhaal gebeurt. Hier was ik op voorbereid dus ik kon nog net op tijd stoppen met lezen. Vervolgens komt Eric met een blurb op de achterkant waarin hij zóiets zegt – de beste scifi. Dit is helemaal geen scifi, Eric Brown! Dit is alternatieve geschiedenis.

Alternatieve geschiedenis valt onder speculatieve fictie, net als science fiction. Maar dat maakt het niet hetzelfde! Er komt geen greintje science aan deze fictie te pas. The man in the high castle is een fijn boek en Philip K. Dick was een goeie schrijver. Ik ben blij dat ik het boek gelezen heb omdat ik er Dick beter door kan begrijpen. Maar Eric Brown kan in het vervolg in de boekenwinkel beter achter de kassa gaan zitten dan de kasten indelen want hij weet niet waar hij het over heeft.

The man in the high castle: een alternatieve geschiedenis die zich afspeelt ca. 1962 en waarin de geallieerden de Tweede Wereldoorlog hebben verloren. Duitsland en Japan hebben de wereld verdeeld op een stukje Amerika na. Het verhaal volgt een aantal verhaallijnen die elkaar soms kruisen.

De titel is ontleend aan de woonsituatie van de schrijver van een boek binnen het verhaal. Dit boek beschrijft een alternatieve geschiedenis waarin de geallieerden de Tweede Wereldoorlog hebben gewonnen en het is door de Duitsers verboden; vandaar dat de schrijver in een soort fort heet te wonen. Het is daarmee een typisch Dickiaans verhaal, met door elkaar lopende realiteiten.

Advies: lezen want je moet alles van Dick lezen.

Dark Matter, door Blake Crouch

darkmatterEen werkje over de many-worldstheorie: Quantum Leap met en een twist op het einde. Het is niet heel bijzonder en redelijk voorspelbaar. Door de drukwijze lijkt het verhaal drie keer langer dan het eigenlijk is.

De hoofdpersoon heeft een typisch Amerikaans karakter: alles kan worden opgelost met geweld en doordouwen; nadenken leidt alleen maar tot vertraging. De wetenschap in het boek wordt verklaard met handwavium: “ik heb het ooit begrepen maar nu niet meer”.

Voornamelijk veel geweld en achtervolgingen tegen een milde scifi-achtergrond; ik zou het indelen bij ‘young adult’.

Advies: meh.

Prophet of Bones, door Ted Kosmatka

prophetofbonesEen van de eerste boeken van Kosmatka. Het verhaal is rechttoe-rechtaan: de wereld waarin dit verhaal speelt, is streng religieus en ervan overtuigd dat de Aarde slechts 6000 jaar oud is en geschapen door God. Een jonge onderzoeker vindt botten die lijken op menselijke die mogelijk het tegendeel bewijzen. Het establishment vindt dit niet leuk.

Enigszins geforceerde verdieping van karakters, geweld, een beetje wetenschap, achtervolgingen en wat niet erg wereldschokkende onthullingen. Maar wél met een literatuurlijst achterin waaruit blijkt dat de wetenschap in het boek verantwoord is en allesbehalve onmogelijk. Juist dat laatste maakt de boeken van deze schrijver interessant: hij kijkt naar de bleeding edge van de wetenschap en schrijft er een verhaal omheen.

Ik ben dit boek vooral gaan lezen omdat ik geïnteresseerd was in de ideeën van Kosmatka. Dat dit boek geen wereldliteratuur is, spreekt in zijn voordeel: de boeken die hij ná Prophet of Bones heeft gepubliceerd, laten een stijgende lijn zien en als die trend doorzet, kan zijn volgende boek weleens ijzersterk worden.

Hou deze schrijver in de gaten!