Before I begin with what this is actually about, some words for those who aren't familiar with AniDB, MyAnimelist, XDCC-Bots or at least one of those:
AniDB and MyAnimelist are both websites that let you create a list of anime titles. In the case of AniDB the focus lies on the anime episodes you have stored somewhere, MyAnimelist cares more about what episodes you saw.
XDCC bots are IRC bots that send you files on demand. They are a common distribution method for fansubbed anime and offer so called packlists, where the list all the files they offer.
Now to the real story: I'm a user of both AniDB and MyAnimelist, but I only maintain a list on the latter. I use AniDB of keeping up to date with newly released episodes of airing series. The problem is, that if you only want to see notifies for new releases of certain subgroups, you have to add episodes of the respective anime from that subgroup to your list. I, however, don't maintain a list on that site, so I'd get a ton of unnecessary notifies.
Now, since I get all my new episodes from XDCC bots I though I could make use of simply parsing their packlists, which was the first thing I did: write a JSON file with all neccessary info, a small PHP script to parse the packlist and a minimalistic site to display the output. With that I always had an up to date list of all released episodes of the series I watch and only from the subgroup I want them from.
The problem with that approach was, that I had to memorize the number of the last episode I saw for every of those anime. So I had to come up with something different. Since MyAnimelist always has the information on which episode of which anime I watched last it seemed natural to use that. Also, since I open the page with my list on it several times a day, it seemed to be a good idea to simply include the information about new episodes there.
Oh and by the way: since the actual request to the site you do not control (in my case the packlists) is not performed by the browser the JS is running on but by the PHP script on your server this method doesn't even violate the same origin policy more than JSONP itself — it's just a handy way to access data from other servers when you write userscripts. :)
A few days ago I read that the VZ Netzwerke (a group of dying social networks once popular in Germany) will be renamed to or restarted as idpool. Reading about those networks alone reminded me that ever since I stopped using them I wanted to backup all my messages. Hearing that the platform will be undergoing serious change some time soon made me take immediate action.
I wrote a Perl script to extract the messages and store them in json-files. To view the messages I wrote a simple web interface in PHP.
I ran into some problems with SSL connections which is why the script uses a session ID instead of an e-mail address and password as a launch parameter. Additionally, when dealing with large amounts of messages the script decided to freeze after a certain amount of parsed messages, so I wrote a second version using threads to parse messages and in case they freeze simply parse the message again. This second version, however, is painfully slow because of my crappy implementation — but since it does a job that only has to be done once I'm fine with that. :D
Concerning the web interface one thing was very important for me: having messages and answers that belong together being displayed at the same place. A thing that the VZ Netzwerke never offered, you only have your in- and outbox. Separated. Absolutely terrible if you want to read an old conversation again. So ... my web interface shows all messages to and from a person at one place. : )
In case you'd like to backup your messages too, here you go: vz_messageparser.tar.gz
perl vzmp.pl studi|schueler|mein <sessid> (use vmzp_crap.pl if neccessary) and view the index.php (webserver required ofc) as soon as the script finished.
edit: modkey + o moves windows between displays — that pretty much solves the whole thing. Sometimes patiently reading though a man page solves your problems more efficiently than asking Google for help. (Thanks to Wolfgang for informing me about the key binding.)
Getting LibreOffice Impress' extension presenter-screen (aka "Presenter Console") to work when using awesome turned out to be a bit tricky.
So, if youre using awesome and want to use the extension, here's how it works:
Assuming you're using a laptop with a resolution of 1366x768 and present on a beamer, connected via VGA with a resolution of 1280x960. (Use xrandr to find out the actual output and resolutions.)
1. Display setup
Your own screen: xrandr --output LVDS --mode 1366x768 --primary
The beamer: xrandr --output VGA-0 --mode 1280x960 --right-of LVDS
Make sure the extension is recognized: Tools -> Extension Manager
Set the presentation display to "Display 2": Slide Show -> Slide Show Settings
Place the Imress window on the beamer display and start the presentation.
You should now see the presenter screen on top of your presentation's slides, both on the beamer display.
With your cursor, hover over the presenter screen.
Press modkey + m (maximize window) twice.
Move the presenter screen to your laptop's display.
This all would be much easier if there was a key binding for moving (maximized) windows between displays, not only tags. I'm not aware of one.