My machine suddenly went flaky, and then wouldn't boot -- I think some system files got trashed somehow. Booted to a Lucid DVD and copied my home dir to the second drive (215GB -- took a while), then started again with a fresh install of Lucid, this time creating a separate home partition. Made hcmc the first user, and created myself as another user. I'm now running updates and copying back my home directory to the new location. I'll get as far as I can tonight and then leave the machine working. Then I'll have to install a whole pile of software etc. tomorrow. Annoying, but it was time for a rebuild anyway; I've now got an ext4 drive and grub 2.
Categories: "R & D"
NOTE 2013-03-13: Current instructions say to use Thawte Primary Root CA, not the premium server one, but UVic wireless has been increasingly flaky, and recently I've only been able to connect to UVic by NOT selecting a certificate, and choosing Ignore when the OS warns me of the dangers of connecting without a cert. This is obviously not ideal, but we can't find a workaround yet. Ubuntu 12.10 comes with 3 different Thawte Primary Root CA pem files, but none of them work. NOTE: This link should get you to a version of the cert that was current in 2018.
Had to do a bit of puzzling based on the instructions for Windows to figure out how to connect to the new UVic wireless setup with Ubuntu, so I'm documenting it here, because SYSTEMS don't have any info on their site. Note: these instructions are identical for eduroam.
- Connect to the network.
- When the Authentication dialog comes up, insert the following values:
- Wireless security: WPA & WPA2 Enterprise
- Authentication: Protected EAP (PEAP)
- Anonymous identity: [Leave blank]
- CA certificate: Thawte_Premium_Server_CA [This should be in /etc/ssl/certs. If not, you may have to obtain it.]
- PEAP version: Automatic
- Inner authentication: MSCHAPv2
- Username: [netlink]@uvic.ca
- Password: [netlink pw]
The thing I kept forgetting was the @uvic.ca after the netlink. Here's a screen cap:

Figured that having many users on a machine would create an unwieldy login screen I ran this command:
sudo gconftool-2 --direct --config-source xml:readwrite:/etc/gconf/gconf.xml.defaults --type bool --set /apps/gdm/simple-greeter/disable_user_list true
which changes the login to a manually entered user/pass setup.
I'm using remastersys to remaster an installed Ubuntu and create a custom iso to install to a new machine. Seems to work a treat.
I'm now using SVN on TAPoR for the AdaptiveDB codebase, and because it took me quite a while to figure out how to get it working properly, I'm going to document it. Commands are issued over https like this:
mholmes@spudbuntu:~/WorkData/adaptivedb/site_dev$ svn co https://revision.tapor.uvic.ca/svn/adaptivedb/trunk trunk
To use a new repository, do a checkout first, then start using svn mkdir etc. to set up the repo structure. If you're on Ubuntu, beware of this bug, which is supposed to be fixed, but which still blocked me from getting access for a while. The solution is to delete rm ~/.gnome2/keyrings/login.keyring
(or whichever keyring SVN is trying to use, and failing -- sometimes default.keyring
).
Have made considerable progress.
I can log in to a desktop environment, add an ldap user to local groups and define a homedir. The homedir isn't very useful yet (everyone gets the same home directory) but I'm hopeful.
Investigating the issues around dynamic creation of a home directory I see that I might want to use nslcd (which requires libpam-ldapd and libnss-ldapd, instead of libpam-ldap and libnss-ldap - notice the lack of a final d) as it appears to be more flexible - see here: http://arthurdejong.org/nss-pam-ldapd/nslcd.conf.5
I can't seem to make pam_mkhomedir work in conjunction with
nss_override_attribute_value homeDirectory /home/netlink/ (where /home/netlink is a string). Ideally, I'd like to do the override and then have pam_mkhomedir append the netlink id to the string.
I've got my presentation code working for a manual display, controlled by keystrokes or buttons on the page, and added a "jump to" menu. There are still a few oddities to iron out, but the whole thing is basically working and seems like it might be very useful indeed.
Started work on making the presentation manually controllable. This is what I've done so far:
- There's a control variable called
displayMode
, which is set toDISP_KIOSK
orDISP_MANUAL
on startup. - If it's set to DISP_MANUAL, the startup function calls
slides.setupManual()
instead of callingslides.next()
to start the animation. - The
HcmcSlide
class has a function which sets its position and size back to its original position and size (although it's now hidden, so it won't take up space). This ought to be called when the slideshow is running in manual mode, to enable moving back to previous states of the show, but it's not yet clear how we can call it; the slide object can't call it on itself, after hiding itself, because the hide takes time, and aneval
would be required to enable this call to be postponed until after the hide is complete, but the slide object itself doesn't have a variable reference to itself which it could use in theeval
call. This may be solved by adding a variable name (probably using the slide div'sid
, which is guaranteed to be unique in a valid file).
I plan to handle all of the machinery inside the HcmcSlideList
object. First of all, it will create manual controls for navigation, which will be added in fixed position at the bottom right, but only be visible on hover. Then I'll create another list class, which will keep a set of references, in correct timing order, to hide and show events (each item would contain the index of a slide in the slide array, and a flag to say whether it's a show or hide event). Then each event can be run in sequence when the Next button is pressed. To go backwards, each event can be replaced by its inverse (each hide becomes a show, and vice versa). I can even see how you could jump to a particular point in the presentation by first calling hide()
on any showing elements, then working through the list and figuring out which items are actually showing at that point (have been shown and not yet hidden), then calling all of their show methods.
It would probably also make sense to have fastShow()
and fastHide()
methods on HcmcSlide
, so that jumping around in the navigation wouldn't take a long time because all the show and hide transitions would need to run.
This is looking like a plan.
This is some basic documentation for the code I wrote for running animated presentations using JavaScript in a browser. The code is on my machine in WorkData/presentation
, and will be in a similar location on Rutabaga.
1. ABOUT THIS PROJECT
This is my codebase for creating an animated presentation that runs in a browser. It was first developed for the Colonial Despatches launch in June 2010, and the materials for that launch serve as the demo application for developing the codebase.
2. HOW TO CREATE AN AUTO-TIMED PRESENTATION
2.1 The header and footer
The index.htm file contains all the content used in the presentation, and it is a standard XHTML 1.1 file.
The header and footer of the presentation are encoded as divs at the beginning and end of the body, like this:
<div class="header"> <img src="images/bg_green_gradient_2.png" alt="gradient"/> <h2>The Colonial Despatches</h2> </div> <div class="footer"> <img src="images/bg_green_gradient_2.png" alt="gradient"/> <h4>http://bcgenesis.uvic.ca</h4> </div>
The header and footer classes are defined as static in the CSS. Tweak the CSS or override it in a style attribute to change the appearance and behaviour of the header and footer.
2.2 The animated elements
Each independent element (a picture, a line of text, etc.) in the presentation is encoded as a div in the following way:
<div id="slide_stats_vessels" class="hcmcSlide" title="1,3,4950,-1" style="top: 60%; left: 50%; width: 45%;"> <p>Over 1,000 vessel names have been tagged.</p> </div>
- Each slide should have a unique id.
- Each slide should have a class of startSlide (the first slide, which is usually empty) or hcmcSlide (normal slides).
- Each slide has a style attribute which defines its position and appearance. For instance, style="top: 25%; left: 5%; width: 40%;" will place this element (when it is displayed) so that it's positioned 5% from the left, and is 40% of the browser window width. These settings should always be in percentages or ems, so that they're scalable.
- Each slide has a title attribute which defines how it behaves, like this:
title="1,-1,8000,3000"
The four components are as follows:
- Id of transition effect used to show the slide.
- Id of transition effect used to hide the slide.
- Length of time (in ms) to display the slide, before starting to hide it.
- Length of time (in ms) before triggering the display of the following slide.
These are the constant values for the first two items (from the JavaScript file):
var SHOW_FADE_IN = -1; //default value. var SHOW_UNROLL = 0; var SHOW_FROM_TOP = 1; var SHOW_FROM_RIGHT = 2; var SHOW_FROM_BOTTOM = 3; var SHOW_FROM_LEFT = 4; var HIDE_FADE_OUT = -1; //default value. var HIDE_SHRIVEL = 0; var HIDE_TO_TOP = 1; var HIDE_TO_RIGHT = 2; var HIDE_TO_BOTTOM = 3; var HIDE_TO_LEFT = 4;
2.3 Timing slides
Each "slide" is not actually a slide in the sense of a PowerPoint slide; it's an individual element that may be part of a composition of several elements. At any given time, several elements will normally be displayed, so timing has to be carefully managed. For instance, if you want to display a header/title, and then reveal a series of items below it, you'll have to remember to set the display time for the header so that it's long enough so that it stays on the screen while all the elements below are slowly being revealed.
2.4 Sizing and positioning
It's impossible to predict the parameters of the eventual display device, so it's a good idea to size and position everything in percentages, and then set the font size in the browser for optimal display. Images can be sized by width only in percentages, and the browser will handle the scaling correctly.
2.5 Handy tools for developing
There are two URL parameter switches you can use to help develop a large presentation:
- startFrom=30
This means "start the presentation from the 30th slide"¸ so you don't need to see all the previous ones before checking that the one you're working on is OK. - timeDivider=2
This means "divide all timing values by 2", which will of course make the presentation run twice as fast. That's handy if you want to run through the presentation quickly to test it, or more slowly because the audience are slow readers.
I've been having some back-and-forth emails with RV-D-B, who's been trying (ultimately successfully) to build Cocoon with eXist as a block, based on our documentation of our script, and also trying to integrate FOP 0.95 into it. He's succeeded in building Cocoon, which is good to know -- it means the approach we took last year continues to be practical -- but has given up on FOP, mainly because it's not terribly important to him, since it has a key failure (footnote rendering) which makes it useless for him. For us, FOP would still be extremely valuable, so I've been pleased to see this page and this page suggesting that others have succeeded in doing it. I think it would be well worth trying. In the meantime, when I have a moment, I'd like to try re-running my original build script to see what happens.
After problems with 11.2, I've had some recommendations from the oXygen folks about the vmoptions file, which, combined with my own experience, give me these settings:
-Xss16m -Xms512m -Xmx2048m
As I work with 11.2, I'll revisit this if necessary. The word is that -Xss should never exceed 16m (and they say it would normally be as low as 1).