Tuesday, June 17, 2008

SLA 2008: Technical Support Roundtable

After sleeping in more than I could ever justify, and taking a quick walkthrough of Seattle Public, I got the Convention Center for the Technical Support roundtable. This little unconference offered IT librarians a chance to share the latest projects, problems and workarounds. It was sparsely attended, but the folks there were very interesting and forward-thinking.

Some topics discussed:
  • Drupal
  • Firefox 3 (got my copy during the session)
  • Twitter
  • Windows Vista (have you downgraded yet?)
  • MS Office v. OpenOffice
  • Mobile device support
  • Video IM clients
  • Cloud computing
I'm looking forward to next year's meeting, which we can hopefully push a little more vigourously. I suggested a wiki page for the meeting, which would let attendees submit topics in advance. This would both advertise the meeting, and bring together experts and practitioners. It would into my desire for a whole-conference wiki very well, too.

After the session, I snagged some lunch (its been a good conference for free food), and sat down to sum up my last day or so. That would bring us to now.

Monday, June 16, 2008

SLA 2008: Information Professional: the New Private Investigator

Had lunch with the Second Life group, somewhat by accident, as I haven't been 'in world' for over a year. Interesting to hear some of their discussion on cutting edge architecture...

Also had more lunch in the IT Division Business Meeting. Cheesecake!

On to the next session:
Information Professional: The New Private Investigator, by Howard E. Trivers, Baker & Daniels

The presenter started with a jab at Second Life, which got a surge of applause. I fail to understand why the Second Life vs. Real Life joke keeps being funny. Yes, I can see that for many libraries, Second Life has nearly nothing to offer. Really, there are very few applications where geographically distant people need to meet in a 3D artificial world. However, there are possibilities out there that we haven't thought of, and its good to have folks experimenting with it. ::cuts rant short::

Back to the session. This really wasn't what I was hoping for, since I'm not willing to pay for search services as an individual. Plus, the person I want to find is far too old to have much of a footprint in the listed databases.

Some historical commercial databases: Lexis' P-TRAK, Westlaw's Information America, CBD Info, AutoTrack, Accurint.

Today: Accurint, ChoicePoint, LexisNexis, Westlaw, Loislaw, Intelius, Merlin, Locateplus

Some free public records search engines: searchsystems.net, brbpub.com

A free death index: ssdi.rootsweb.ancestry.com (must have gotten SS benefits to be listed).


After this session, I went back to my hotel and took a nap. I was back up for dinner (at Rock Bottom Brewery) and the IT division SciFi night. Some interesting discussion, but I really wasn't feeling the networking, so I ducked out early.

Its been strange to be at this conference for the third year in a row, but to have even less to talk about with colleagues and vendors. I'm not longer associated with URI, so I don't have coursework to supplement with current products and services. I'm not yet with NYU, so I don't know what they use, what they need and who I should network with. I've already learned about most of the kinds of technologies that I can think I'd be using, and there are few sessions on that kind of stuff this year anyway.

I have gotten some wonderful work done with Dave Ware on rescoping the Communications Section of the IT Division. His energy is infectious, and has really helped give me momentum. Thanks, Dave!

SLA 2008: Create your Screencast in a Flash

I made it to Seattle yesterday, after a delayed train trip from Kelso. After getting settled and catching up with some colleagues, I enjoyed a most interesting evening around and about, ranging from the top of the Space Needle down to the EMP and finally back to the conference's main hotel.

A nights sleep and a cup of real coffee (and an apple fritter!) has me ready to dive into my first day of courses. Below are my transcripts from the sessions I attended.

Create your Screencast in a Flash: Adobe Captivate, presented by Edward Metz, Systems Librarian at USACGSC.

The first question addressed by Edward was why, with so many options, his library choose Adobe Captivate. Since he works for a military, freeware cannot be installed, ruling out solutions like Wink. Secondly, Captivate provides an interface very similar to Powerpoint, diminishing the learning curve.

The basic steps for creating a screencast were outlined thus:
  1. Write a script on a subject that can easily be covered in a 4-7 minute video.
  2. Rehearse
  3. Record the video
  4. Add extra captions, highlights and other enhancements
  5. Record the audio
  6. Synchronize
  7. Publish
Some general tips learned from experience:
  • Keep it short, and within standard browser resolution
  • Drop browser and OS-specific bars to give a more universal flavour
  • Disable popups (from email, IM and other unpredictable distractions)
  • Pre-process images for size and speed
  • Beware of scrolling, as it adds a lot of size. You can record, then delete the slide containing the scrolling animation. Perhaps add a transition instead.
  • Keep in mind you'll need to update, so keep data as separate and organized as possible
  • Use screencasting where it needs to be used. Not all situations are appropriate.
  • Know your audience and what they'll need to see to 'get it'
  • Rehearse, rehearse, rehearse!

To begin a new project, open Captivate and pick which running program you wish to record. The system can then 'snap to fit' the window, allowing you to drop junk you don't need. Be sure to choose 'demo mode' from Options. When recording audio, adjust your quality to balance file size ("FM quality" recommended). To start, hit the Record button, and go. Stop it by END key (when do we ever use that?)

The cursor is recorded in a separate layer, and can be moved around in post-production. You can also add bullets, highlighting, etc. Each slide has a film strip timeline at the top for individual objects in the slide. Insert option adds all sorts of cool stuff.

When you're ready for audio, get good voice talent, rehearse multiple times, and leave a second or two of silence at the end of each section. A $20 microphone is good enough for most purposes. Maintain constant distance while speaking into it, usually 4-6 inches. You can add the narration notes into the slide for the narrator to read.

After recording your audio, you will probably desynchronize from your mouse movements. Not to fear, you can move those objects around the timeline as you need to time everything out just right. The Preview button will show you how its going to look.

For ADA compliance, you can add captions (separate from slide notes), make text screen-readable for the visually impaired, and click 508 Compliance in Preferences for navigation (different place for this option in 3.0).

The full PPT is available on slideshare.net.

Personally, I'd love to have call to use this software for work, but I'm not sure its going to be within my scope. I certainly can't justify spending $699 for it, and only have it work on my Windows machine (there are no Mac or Linux versions). There is also come question about whether one can mix together multiple Captivate recordings, which may be handy for making tutorials on network issues. All in all, a very good session, but I'll probably share this knowledge more than I'll utilize it myself.

Tuesday, May 06, 2008

Done with School!

I am finally, at long last, completely, totally and absolutely done with my library science and computer science degrees. My thesis is turned in to the library for binding and preservation. My final courses have been graded (well). I've even got a job lined up, working for NYU's School of Medicine as their Systems Integration Librarian.

Now comes moving, SLA 2008 and some down time. Thankfully, we got a PS3, so I can be down with Unreal Tournament III. Nice.

Friday, February 15, 2008

That ol'time Death and Resurrection show (part 3)

It occurs to me I haven't mentioned the progress I've made on repairing the damage to my network.

Larkin: Replaced the motherboard, and got it to run all of 10 minutes. Then, upon reboot, the hard drive failed. This led me to believe that the power supply was faulty (seems like the most logical connection between the two failed components, and I know the electricity in our apartment is... less good). That has been replaced, and a new hard drive is in the works.

the SquareOne: I shipped it back to Quad MicroWorks, and they shipped it back, fully functional and with the original hard drive (saving me a ton of data reloading). Great communication from them (A+++ in ebay-speak). Unfortunately, for the applications that I need to run, it will not do as a web server. It'll host my basic webpage for now, until I can get a more powerful, dedicated box. Then its just a matter of fighting my lousy Comcast connection. Oh, I can't wait the end of the ISP monopolies...

Berman: Still can't use the iSight, but I can connect it to the new TV, and man, what a picture! As soon as my thesis work is done, I'll get it into the shop.

Pearl: I think I finally fixed the Javascript error, as well as the problem that was causing MS Word to crash whenever a browser window was open along side. This system is also currently running dual monitors, until Larkin is back up.

My old laptop: Dead as a doornail. I really wish those RAM chips I bought hadn't failed, because even a 128 MB boost would be handy... maybe I can find a sweet deal on craigslist.


More minor updates when they occur, and I have the time.

Wednesday, February 13, 2008

Passing variables between Javascript and PHP

First off, an apology for not blogging in so long; I'm in the thick of my final semester, and most of my time goes towards writing my thesis or working on my independent project (likely to be mentioned in a later post). But this material I just created for work is good enough, I think, that it's worth sharing.


Javascript and PHP, when used together, can make pretty much anything you desire in a website. You use your PHP to talk to your databases, generate dynamic content, and hold session information, while your Javascript can refine the user interface, adding options and making changes to the window on the fly.

But what if you need to get these two technologies to talk, securely? PHP is rendered server-side, before the page is produced and sent to the client. Thus, you can easily send PHP variables to a Javascript, if you don't mind their values being known to the user. However, if you need to keep your PHP variables safely server-side, how can you get Javascript to send its variables along to PHP?

Here's what I came up with: I call it "12th Hour Javascript", which will make sense shortly. The basic premise:
  1. write a PHP script that takes in a URL variable ($_GET), runs whatever safe server-side function necessary, then outputs a Javascript function that simply returns the output of the PHP function.
  2. write a Javascript function that adds an inclusion of the above file, taking in whatever variables and tacking them onto the URL of the src.
  3. Call the function in 2) in one event, and the function in 1) in an immediate, subsequent event. 2) will pass the URL parameters to 1) as it includes it in the HTML file. the function in 1) will then be available for the next event.
Sound vague? Some example code may help.

ourscript.php:
function php_js() {
<?php
function core($parameter){
// Do stuff
return $output
}
$js_return = core($_GET['URL_param']);
echo "return " . $js_return . ";";
?>
}

Our Javascript function:
function twelfth_hour() {
var html_doc = document.getElementsByTagName('head').item(0);
var js = document.createElement('script');
js.setAttribute('language', 'javascript');
js.setAttribute('type', 'text/javascript');
js.setAttribute('src', 'Ourscript.php?URL_param='+document.SOME_ELEMENT.parameter.value);
html_doc.appendChild(js);
return false;
}

Using the functions in an HTML form:
<input value="go" onmousedown="twelfth_hour();" onclick="php_js();" type="submit" / >


As you see, the second function (twelfth_hour) will run first, and add a new Javascript to the document, with the source equaling ourscript.php?URL_param=parameter. Ourscript.php takes that parameter, processes it as we like, and gives us the output. If a user were to look at Ourscript.php, all they'd see would be a function that returns a value; all the inner workings are in PHP and thus hidden.

Keep in mind that the calls to these functions must exist in separate events. Trying to run them together results in an undefined error for php_js(), since it hasn't been included into the document yet. Javascript functions do not execute line-by-line, and perhaps not even function by function. However, event by event, you can keep one step ahead of your Javascript, and provide it with the dynamically-generated, PHP-based scripts you need.

Minor tweaks and refinements may be necessary, given your particular application and server configuration.

Comments are welcome.