Tag name:self.note

More wordpress plugins I have used but are now uninstalled (but want to keep a record of)

Another plugin I've used but is currently uninstalled is:

Enhanced Media Plugin
Seemingly now unsupported I used to to more easily manage the tags from within the media library. A shame since the standard way is definitely long winded 🙂

WordPress plugins I have used but are now uninstalled (but want to keep a record of)

I have used (indeed am still using) a number of wordpress plugins. I have actually written quite a few myself as well as several others. There are a few I've used in the past and may well use again, but are currently uninstalled.

They are:

Merge + Minify + Refresh
Used to minimise the size of the css and javascript sent out by wordpress when delivering pages. Not currently simply because it seriously interferes with debugging the javascript!
WP Content Security Policy Plugin
Used to play with the content security policy that allows cautious browsers (and the server) to manage the javascript being used. I did use this to clean up the delivery, but couldn't get to a really clean content policy. I'd still like to do that, but it's not so trivial for the this site (from memory it's mostly the theme that causes trouble).
WP Super Cache
used when the site on dreamhost was an actual wordpress installation to reduce the server load. Since the dreamhost is now just a static version of the site I don't need it there and don't use on the version on my local network since the caching gets in the way of my testing.
WP-DBManager
I have used this to explore the wordpress database. I don't currently need to do this, but would use it if I needed to
WP-RSSImport
Used to query RSS feeds - As I described on the affected page I used to follow a bunch of RSS feeds, but no longer do so (and it's less useful for this static version of the site anyway).

Feeds

First published 26th March 2020 (Last Modified 7th February 2021)

I used to follow a whole bunch of RSS feeds. When Google stopped its RSS reader back in 2013, I converted this very web page on my personal site to gather RSS feeds for me. However my personal usage of that page steadily dropped and in 2019 (which, by then, was based on WordPress) I converted the site to a set of static pages I concluded that maintaining that page was basically infeasible. However I also have a policy of trying to avoid 404 errors for URLs that previously existed. Now, to be fair, I had broken that rule as I've only today noticed that the URL for my 'feeds' page no longer has a page backing it. This is to rectify that error.

As a memoriam, I used to follow RSS feeds from Slashdot, Coding Horror, Cédric Beust's Otaku blog, Igor Ostrovsky Blogging, Bruce Schneier's Blog, Coding Cookies, Cheshire Engineering, The secret barrister, Mark Evanier (Writer of Groo), Patrick Smith (Ask the Pilot), Humble Bundle, Rosemary Kirstein, Sue and Matthew,1 and Syndey Padua. It's interesting to note that most of these haven't been updated in years!

Footnotes

  1. Oxford comma used here to avoid ambiguity.

Automating the static upload

First published 14th February 2020 (Last Modified 9th January 2021)

I've automated some of my static upload process. This post is partially to provide a new post and partially to document/record the automatic part of the process. I created a batch script that generates a winscp script to upload files that changed, and will show the other differences (file adds and deletes) involved in the process. That script is:

@echo off
setlocal ENABLEDELAYEDEXPANSION
fossil extras >%temp%\fossil.out
for /f "delims=" %%a in (%temp%\fossil.out) do (
 fossil add %%a
)

set localdir=%cd%
set remotedir=/home/djvines/blog.tremlas.com

fossil status >%temp%\fossil.out
echo open blog.tremlas.com >%temp%\winscp.txt
for /f "delims=" %%a in (%temp%\fossil.out) do (
 set string=%%a
 for /f "tokens=1,2" %%c in ("!string!") do (
  set dz=%%d
  if "%%c"=="EDITED" echo put %localdir%\!dz:/=\! %remotedir%/%%d >>%temp%\winscp.txt
  if not "%%c"=="EDITED" echo !string!
 )
)
echo exit >>%temp%\winscp.txt
echo to run script execute:
echo "c:\Program Files (x86)\WinSCP\WinSCP.com" /script=%temp%\winscp.txt

Going static

For a variety of reasons I reckon it's time to convert the public facing version of my website to go to a static version. The reasons include:

  • After the suspension of En Garde there's no dynamic input to the site other than my own (When I restart that campaign I will need to modify the hosting mechanism to provide the form processing - I'll cross that bridge when I get to it)
  • It'll make the site more secure (no WordPress admin on the public version of the site)
  • No more annoying emails from my web host encouraging me to upgrade from a shared host to a VPS due to reaching memory limits (presumably due to the wordfence plugin).

I'm using the Simply Static plugin though I did have to handle some quirks due to the private server sharing the same machine as my fossil repositories and my popmail spam filter.

It should be noted that this post is also part of an experiment to see how the workflow of updating my website is going to go!

DDO Quest Notes

First published 2nd July 2017 (Last Modified 6th May 2019)

Reincarnation Quest Notes

Since there seem to be many quests that I'm skipping as I level my reincarnate character, together with some quests where I'm going to need reminders, I've created this table of notes to act as a list of reminders to myself. Quests shown in bold are quests you might have avoided that are worthy of consideration (but can be skipped if you're not in desperate need of XP). Quests not in bold are probably worth not even trying, depending on your mood, character build and luck.

Note that all the quests from the recent packs (Ravenloft and White Plume Mountain) are all eminently playable!

Quest Level Quest Name Notes
2 Stealthy Repossession Cannot kill more than 5 Kobold Prophets (other kobolds are OK). Sadly very hard even for stealthy types to avoid being seen. If you do try this leave ANY "guard" items at home so that that the prophets don't kill themselves on your armour.
5 Tomb of the Burning Heart Requires lots of characters (you need to have four characters/summoned mobs at four different pressure pads simultaneously).
5 Archer Point Defense Defend the outpost for 12½ minutes
6 Gladewatch Outpost Defense Defend the output for 15 minutes and keep the commander alive
6 The Chronoscope Raid
6 The Bloody Crypt Gated behind Tomb of the Burning Heart
7 Temple of Elemental Evil Pt.1 Very long quest
7 Temple of Elemental Evil Pt.2 Very long quest
8 The Xorian Cipher Lots of Characters needed (you need to have four characters/summoned mobs at four different pressure pads simultaneously).
8 Tomb of the Shadow Lord Apparently can be done with a hireling (see wiki) - but I've not tried this yet.
8 Tomb of the Shadow King Reputed to be a very tough quest, but Apparently can be done with a hireling (see wiki) - I've not tried this yet.
8 Path to Madness Short Quest (and low XP reward) that leads to The Xorian Cipher
8 Faithful Departed Need to keep at least two of the venerated alive. If you attempt this, remove any effects/items you have that have any AOE effects.
9 The Shadow Crypt Gated by Tomb of the Shadow Lord and Tomb of the Shadow King
9 The Giant Lieutenants Not listed by the Adventure Compendium. In the Threnal Wilderness Area.
9 The Giants' Lair Not listed by the Adventure Compendium. In the Threnal Wilderness Area.
10 The Giants' Supplies Not listed by the Adventure Compendium. In the Threnal Wilderness Area.
10 The Threnal Arena Not listed by the Adventure Compendium. In the Threnal Wilderness Area. Requires the Ceremonial Blade from the Western Excavation Quest Chain.
10 The Vault of Night Raid
10 Tempest Spine Raid
10 Plane of Night Raid
11 Twilight Forge Raid
11 From Beyond the Grave Very Hard to Solo - need 30 seconds undamaged to light a pyre - and there are four pyres to light!
11 Tomb of the Forbidden Can be solo'ed - see wiki page
11 Tomb of the Tormented Very Long Quest. Takes over an hour to guide the rats through the mazes, Rogue very useful to simplify the mazes. Expect to sacrifice rats.
12 Against the Demon Queen This is a pre-raid quest. Use the wiki to determine which order to investigate the rooms. Purple named boss at the end.
12 Zawabi's Revenge Raid
12 The Titan Awakes Raid
14 The Reaver's Fate Raid
14 Madstone Crater Very Hard to Solo - Mobs around the third crystal respawn very quickly.
14 Inferno of the Damned Need AoE fire and cold effect spells or items (e.g. wands)
14 Gianthold Tor

Gated by The Prison of the Planes, A Cabal for One and Madstone Crater (this one is the tricky one - see above). Also requires hand-in of ancient relics (3 of each sort)

Quest itself is short - post quest optionals have three dragon/giant pairs to fight. Each half of the pair must die within eight seconds of the other.

14 Ghosts of Perdition Two boss wheeps enroute to the boss. These wheeps must die within 48 seconds of each other. Final boss is a Boss Beholder who does massive stat damage.
14 The Crucible Tough maze to negotiate. Tough Timed Run area to negotiate. Collapsing floor area to negotiate (or rerun lots of times 🙂 ). On return to the top of the maze lots and lots of spell casters.
15 Search and Rescue Very tough fights at level - particularly against the Drow. Hireling Cleric will probably run out of spell points (and then you will run out of hit points 🙂 )
15 To Curse the Sky Boss fight is tough (but nowhere near impossible). I suggest buffing with potions etc before the fight and concentrating on the boss.
15 Litany of the Dead Gated behind Inferno of the Damned and Ghosts of Perdition. Also needs a completed Sigil Frame.
15 Third Time's a Charm Similar setup to Search and Rescue, but the fights are marginally easier to handle. Do NOT charge into fights, you need to be tactical. Note that you need to complete this quest to gain access to the last quest in the chain.
16 Let Sleeping Dust Lie Do not allow more than four Crimson Foot Spiders to die once you've picked up the first Journal. Hard to do since the enemy spell casters can injure the spiders while you're trying to avoid hitting them. Can be done if you're (a) careful, (b) don't have guard or similar items equipped and (c) be lucky. Not recommended unless you need the Shavarath Stone of Strategy.
16 Mask of Deception Don't summon your hireling until you've done all the optionals you can - then return to the beginning and summon there (or park the hireling there and teleport him in as necessary). Make sure you disarm the traps before delving into the last rooms (behind the door next to the tasty ham). Expect an enormous fight once you're spotted there unless you were able to use bluff/diplomacy/intimidate the arms expert in the first room. Be as tactical as possible to reduce the number of ranged/magic-users who can get involved at the same time. I got an orange dungeon alert on this one.

Links are to the relevant page in the DDO wiki.


Last updated: May 6, 2019 at 11:06 am
10 Jul 2017
Added To Curse the Sky
13 Jul 2017
Added Litany of the Dead
21 Jul 2017
Added Third Time's a Charm
22 Jul 2017
Added Let Sleeping Dust Lie
26 Jul 2017
Added Mask of Deception
30 Sep 2017
Fixed a couple of word errors
05 May 2019
Add Faithful Departed

Sleeping until top of the minute

First published 23rd June 2017 (Last Modified 9th January 2021)

I recently wanted my bash script (running on Ubuntu) to sleep until the top of the minute. The suggested code snippet from goggling is:

sleep $((60 - $(date +%S) ))

This works well, unless the current seconds count is 08 or 09. Bash interprets numbers starting with 0 as octal and 08 (and 09) are not valid octal numbers. I fixed this in my script as follows:

sleep $((160 - 1$(date +%S) ))

Manually updating a Ubuntu kernel

First published 21st May 2017 (Last Modified 9th January 2021)

For some reason that I've yet to get to the bottom of, on my Ubuntu server box the kernel wasn't getting updated (the header files to go with the kernel definitely were, but the kernel itself seemed to stay stuck.

To manually update to a kernel level:

  • sudo apt-get install linux-image-extra-4.4.0-xx-generic

Setting up ubuntu (Apr 2017)

First published 1st April 2017 (Last Modified 21st May 2017)

Since I'm in the progress of setting up an Ubuntu machine on another older machine as a server I want to record my steps...

All based on Ubuntu 16.04.2 LTS

  1. To ensure latest level of Ubuntu:
    1. sudo apt-get update
    2. sudo apt-get dist-upgrade
  2. To select 2D graphic effects instead of 3D:
    1. Add the older UI via:

      sudo apt-get install gnome-session-flashback

    2. logout, and then in the login window, click on the Ubuntu logo next to your user name and select "GNOME Flashback (Metacity)".
  3. Modify Brightness and Lock to adjust the screen saver timeouts

Maplin's Touch LCD Shield for Arduino

First published 2nd September 2016 (Last Modified 9th January 2021)

I've been playing around with Maplin's Touch LCD Shield. It's not a bad device (it does seem to be a little slow, but I suspect that's mostly down to the library being used to drive it. That said, I did take a while to get it working since there's not a lot of documentation for it and I notice that I'm not the only one who had problems. So partially as a reminder to myself (and partially to make this visible to search engines) there's what I had to do.

  1. Download the correct library from linkshield's wiki. I eventually downloaded the v2 library.
  2. Copy the example program (again from the wiki).
  3. Fix up the compile errors in that example program - I guess the library was updated AFTER the example:
    1. Remove the declaration of TS_MINX, TS_MAXX, TS_MINY, TS_MAXY (the library has these as #define's and the compiler gets quite confused.)
    2. Changed the test p.z > ts.pressureThreshold to ts.isTouching()  (The library doesn't have a pressThreshold field and the point class doesn't have a z field. On the other hand, the library does have the isTouching method!)
    3. Changed the initTouchScreenParameters method to initialise a touchscreen via TouchScreen(XP, YP, XM, YM) and deleted the setting of TS_MINX, TS_MAXX, TS_MINY, TS_MAXY (again the compiler gets quite confused).

I was then able to run the demo, although the touch output seemed to be completely reversed, so I edited my library header file to switch the values of TS_MIN* with TS_MAX*. This seemed to fix the problem.

I've, for the time being at least, used it to act as a monitor for my Thinkpad that runs my linux server (that is, I got the linux server to talk to it!)