I’m going to take a break from my usual review of open source educational technology and take a look at some open source applications that can help with system security.
Probably the first thing that comes to mind when it comes to keeping computer systems secure is antivirus software. Towards this end, we have ClamAV, a virus scanner available for Linux, Microsoft Windows and MacOS. While ClamAV actually runs from the command line. ClamTk provides a graphical interface for users who are less familiar with the command line.
So, how does ClamAV stack up to its commercial counterparts? First of all, it is free. Next, ClamTk can be configured to automatically download updates and to run scans. Furthermore, as it is a virus scanner, it does not actively block viruses. This may sound like a weakness, but this means that it only runs when set to do so or when it is launched, which in turn means that it’s easier on system resources. Additionally, ClamTk is highly configurable and scans can be easily modified if needed. Finally, plugins, such as ClamAssassin, a mail scanner, can be added to enhance functionality.
Online security gurus will tell you that one of the best things you can do to protect yourself online is to use complex passwords (upper/lower case letters, numbers and special characters). They also advocate that you should never use the same password for any online accounts you may have. How do they expect people to keep track of which password is used on which site? The prospect seems daunting. The good news is that, thanks to KeePassX, you don’t have to go through this.
KeePassX is an application that keeps track of passwords for you. KeePassX actually utilizes a database to keep track of passwords. What features does it offer? first of all, there is extensive management for each entry (includes a title for each entry, attachment insertion and user-defined symbols for groups and entries, among others). Next, there is the integrated search feature. Additionally, there is also a secure password database. Other features include a secure password generator, encryption and the capacity to import/export entries. Best of all, KeePassX is free and available for Linux, Microsoft Windows and Apple MacOS.
To the unfamiliar, the prospect of encrypting files sounds like something done by government agencies or corporations. If you’re storing data on a cloud drive, like Google, you should give file encryption a thought. Any data stored on the cloud is potentially vulnerable. An encryption program encrypts files and sets a key for decoding them. To decrypt a file, you must have the encryption key. Fortunately, this process isn’t as complicated as it sounds and the right software makes it downright easy.
Enter VeraCrypt! VeraCrypt is hard disk encryption software. With VeraCrypt, users can encrypt individual files, hard drive partitions or whole devices. Additionally, encryption is automatic and takes place in real time. Furthermore, encrypted files, partitions or drives are mounted as virtual hard drives. Therefore, writing changes to encrypted data is just as quick and easy as it would be with unencrypted data. Finally, VeraCrypt is available for Linux, Microsoft Windows and MacOS.
In closing, I just want to add that I hope readers will find this applications useful in their efforts to surf the Web securely and safely.
ClamAV [computer software]. (2018). Cisco: GNU General Public License.
ClamTk [computer software]. (n.d.). GNU Gneral Public License.
KeePassX [computer software]. (n.d.). GNU General Public License.
KeePassX screenshot retrieved from https://www.keepassx.org/wp-content/uploads/2016/02/.
VeraCrypt [computer software]. (n.d.). GNU General Public License.
VeraCrypt screenshot retrieved from https://a.fsdn.com/con/app/proj/veracrypt/screenshots/VeraCrypt_Creating_Volume.png/max/max/1.
In this era of Student Information Systems, the idea of using an electronic spreadsheet to create a gradebook may seem a bit outdated, but not all schools or districts can afford an SIS or have the resources to implement one. Furthermore, homeschoolers hardly need an SIS to track student performance. For these groups, an electronic spreadsheet makes a fine gradebook and, in keeping with this blog’s focus on open source, I’m going to use LibreOffice Calc, a spreadsheet in an open source office suite, to do this.
First, a quick vocab check. A spreadsheet is an application designed to work with numbers. It’s divided into columns and rows, much like a checkbook register or ledger. An individual spreadsheet is referred to as a worksheet. Columns are identified by uppercase letters, called column headers. Rows are identified by numbers, called row headers. An exact spot where a column and row meet (e.g. A1) is a cell. An individual cell would be identified, as shown above, by putting the column and row headers together (e.g. A1). When a cell is clicked on, it becomes the active cell, which is indicated by a bold outline around the cell. While working with the cells of a spreadsheet, the mouse pointer turns into a rectangle with which individual cells can be selected, or multiple cells, when clicking-and-dragging. Cells can be customized in terms of the data they contain (text, number, etc.) as well as in terms of physical appearance (font color, background color, etc.).
While typing in a cell, the contents will appear in the formula bar below the menu and toolbar near the top of the screen. Near the bottom of the screen are sheet tabs. Tabs allow users to have multiple worksheets in one spreadsheet. This is ideal for a subject in which multiple types of data are collected (e.g. homework grades, assessment scores, etc.). Simply click the + to add a new tab as needed.
Your first step is to determine what grades you are going to record. This is important as it affects the labels for each column head, among other things. A spelling grade book might just have a date that corresponds to each weekly spelling test. A math grade book might include multiple worksheets (one for homework, one for classwork, etc.). For the sake of this article, I chose to create a math grade book. Put some thought and planning into your gradebook and you’ll get more use out of it.
In regards to my platform, I’m using LicreOffice 5.0 on Xubuntu Linux 16.04.4. You should be able to do what I’m going to show you in any spreadsheet application, not just Calc. You may want to consult your application’s documentation in regards to formula syntax. Let’s get started and open Calc (or the spreadsheet application of your choice). At the top of each column, you will want a column heading that will serve as a label. The first cell in each column is reserved for a label and is exempt from sorting by default (we’ll take a look at sorting shortly). In the first cell of the first column, type “Student Name“. I’m putting student names (last name (well. the first initial of the last neme for the sake of confidentiality), first name) in one cell so that they can be sorted alphabetically. Thus, if I get a new student, I can add his or her name to the gradebook and re-sort the names alphabetically so the new student’s name will be sorted in with the others. The next header depends on the subject for which you’re making the gradebook. As this tab will be for homework grades, I’m using dates.
If you look at my screenshot, you’ll notice that my “Student Name” label doesn’t quite fit. Most spreadsheet applications allow for easy column-width adjustment, which certainly aids in legibility. Positioning the mouse pointer between two column headers turns it into a double arrow. Just hold down the left mouse button and drag to the right to resize the column (as shown in the screenshot). Row height can be adjusted in a similar fashion. Regarding legibility, I also increased my font size from the default of 10 points to 12 points. To do this, click on the “button” to the left of the A, B, C,… column headers and above the 1, 2, 3… tow headers. This selects all cells in a worksheet and works in every modern spreadsheet application I’ve used. Once you’ve done this, any changes you make (e.g. font size) will affect the whole worksheet.
In the first cell of the second column (B1), I typed the date (9/1/17) which is automatically formatted as 09/01/17. Hit the Tab key, which moves the cursor to C1, and enter 9/8/17. One of the cool things about electronic spreadsheets is that they can detect patterns. Click on CI, drag over cell D!. Now move the mouse pointer to the lower right corner of cell D1. It should turn to a set of cross-hairs. Click and drag a few cells to the right. and continue on to select cells EI, Fi and so on. The dates will automatically be filled in. Thus you can fill in dates for the entire semester/trimester/term). For the last column (column I) of the semester/trimester/term, type in the heading of your choice (Average, Grade, etc.).
In cell I2, type the following (also shown in the formula bar screenshot): =average(b2:h2). In human terms, this means that cell I2 will present the average for the numbers listed in cells B2 through H2, as seen in the screenshot. As I look at my results, I see that my averages contain multiple decimal places. This is fine for complex mathematics, but I just want to display to the average to the closest half point. Right-click on the I column header and choose Format Cells.... In the Format Cells dialog box, click on the Numbers tab. Below the Category field are available Options. From here, change the number of decimal places from the default (blank) to 2 or 1, depending on what your desire is, and click OK. After having done this, you’ll see how much more approachable the numbers are (check out the screenshot).
One more thing that I’d like to share is the ability to rename worksheets to help yourself and others navigate your gradebook. Double-clicking on a sheet tab opens the Rename sheet dialog box. Simply type in the new name and click OK or press Enter. It’s that easy to customize your new gradebook. You should now be able to create a gradebook yourself using a spreadsheet application. If you have any questions, please contact me. Good luck creating gradebooks!
So what is Window Maker and why would you use it in a primary classroom? Window Maker is a window manager (graphical interface) for Linux/UNIX operating systems. Its most distinctive feature would have to be the dock. This is a place where dock apps and quick launches for frequently used programs reside. The dock first appeared in the interface for the NeXTSTEP operating system. It has since been adopted by Apple for its MacOS interface, among others.
That leaves us with the question of why use Window Maker in the primary classroom? The Window Maker dock supports dock apps, which provide information about the computer system upon which it’s running and about the world around us. It is this latter type of dock app that is the focus of this article. Using these apps and a projector, teachers can do a daily almanac with their students.
Looking at the screenshot of my Window Maker desktop, we can see that I’ve placed my dock on the left-hand side of the desktop. The topmost tile is the GNUstep icon (GNUstep is a project of which Window Maker is a part, designed to regulate and promote open source window managers that employ this style of interface).
The next icon launches a terminal emulator. Below this is the WPrefs tool for configuring Window Maker. Now we get to the informative dock apps. Wmakerclock provides us with day, date and time (time can be displayed in either 12- or 24-hour mode). Wimmoonclock provides information about the current phase of the moon. Wmweather+ provides graphical information about the current weather conditions according to a local weather station. Wmsun displays the times at which the sun rises and sets for the given day.
Wmbubble provides graphical information about CPU and memory usage. Wmwork tracks time spent on projects. Below this are two wmdrawers that scroll sideways, providing additional space on the dock. Lastly, wmshutdown provides a convenient way for shutting down/rebooting the system.
So, how would I use the Window Maker dock in my primary classroom? If your computer is connected to a SMART board or Smoothboard, it’s easy. Start the day with wmclock, so everyone knows what the day and date are. Write the day and date on the board. Moving down, you can integrate earth/space science into your class with wmmoonclock, noting the current phase of the moon and possibly recording this data as well. Then, move down to wmweather+ for a look at the current weather. Students could even compare the weather presented here with what they see themselves. Be sure to record this data, on an electronic spreadsheet perhaps, for graphing activities. Finally, we look at wmsun to find out when the sun rises and sets for the day. Likewise, this data should be recorded as it could be used in activities involving the seasons, as well as earth/space science To add to student engagement, you could have a rotation allowing each student an opportunity to do the almanac.
To enhance visibility, I’d recommend running wmagnify, a magnification program that, in spite of its name, is unrelated to Window Maker. This will open a small window within which whatever is under the mouse pointer will appear magnified. This is especially useful for wmmoonclock which provides information about the moon’s orbit with a click, but which utilizes such small type that it’s hard to read.
There are a large number of dock apps available, so I invite you to do some exploring. Some do similar things to those we’ve discussed, but offer a different take on what they do graphically. I’ve given you a start. Now you can begin the school year with a daily Window Maker almanac. I’m anxious to hear from readers regarding what they did with this idea, so feel free to contact me.
The Window Maker theme, Cottage, seen in the screenshots is available here.
Window Maker Development Team. (2014). Window Maker [computer software]. GNU General Public License.
Vogt, M. (2012). Synaptic package manager. GNU General Public License.
Anyone who has been using Linux/UNIX for a long time will have to admit that offerings in terms of desktop environments have improved immensely. For those unfamiliar with Linux or UNIX, a desktop environment is a graphical interface (mouse pointer, background, window rendering, etc.) that is completely self-reliant in terms of support programs (file manager, text editor, etc.). If unfamiliar with Linux or UNIX, you might say “What’s the big deal?” The big deal is that most window managers (another form of graphical interface and part of a desktop environment, but that lacks self-reliant applications like its own file manager) do not. There are a variety of desktop environments out there, such as KDE, GNOME, MATE, LXDE and FVWM Crystal, for example. However, I want to focus on the Xfce Desktop Environment and why I believe that it rocks.
Xfce has evolved since its initial incarnation as an open source alternative to the (then) proprietary CDE (Common Desktop Environment) to take on a life of its own. Xfce was originally XFCE (XForms Common Environment, the “X” coming from the “X” in X Window System, the official name of the Linux/UNIX graphical interface system), but now Xfce is no longer an acronym for anything. So, why do I think Xfce is so special?
First of all, unlike desktop environments like KDE or GNOME, Xfce is fairly light on system resources. This means that it will run well on older hardware. This makes it ideal for anyone or any organization that cannot afford the latest cutting-edge hardware. Public schools come to mind here. Another reason why I love Xfce is that it supports a high level of customization. Its appearance and function can be easily modified through context-sensitive menus. This includes such things as appearance, system performance and accessibility to name a few. Xfce can easily look like any graphical interface that you can imagine.
Another feature of Xfce that relates to appearance and that I have come to truly value is panels. Panels, often referred to as docks, are bars that can appear horizontally or vertically on your desktop, providing a place to put things like a main menu launcher, a clock or a quick way to launch frequently used programs. Xfce requires that you have at least one panel. It does not, however, have any requirements as to what you do with that panel. That panel can serve in any capacity that you desire. You can even auto-hide the panel so that it only appears when your mouse pointer hovers over it. The screenshot at right shows what the author has done with his panels. There are three types of panels offered: horizontal, vertical and deskbar (this latter panel is vertically aligned, but the contents are aligned horizontally. This is ideal for wide-screen computing).
This leads to another one of Xfce’s useful features, Panel Plugins. These plugins enhance functionality and provide information about your system and the world around you. Available plugins include ways to track open applications, ways to monitor system resources and a means for keeping informed about time and the weather, Launcher plugins provide a means to quickly launch your favorite programs. There are plugins for switching workspaces, creating desktop sticky notes, monitoring network traffic, monitoring project time, getting screenshots and even quick access to an integrated online dictionary. This list is by no means all-inclusive. If you have a job to do, there’s probably a plugin to help you do it.
Finally, I love Xfce’s ease of use. This is due to a number of things, but simplicity is key. The interface in general is approachable by default. Widgets and menus are where you would expect them to be. The Main Menu is straightforward, reminiscent of what Microsoft Windows looked like before XP. The menu opens providing users with direct access to what they’re looking for, organized by purpose (Communications, Office, etc.). Context menus (opened with a right-click) allow for ready modification of any component. If this isa’t appealing, users can easily change the way Xfce looks and works using these menus.
In closing, if you haven’t tried Xfce, maybe you should. It’s light, simple and effectual. What’s not to like?
Xfce Development Team (2016). Xfce Desktop Environment [computer software]. GNU General Public License.
It is with heavy heart that I report that the Qimo4Kids Project, has ceased. This project developed and promoted Qimo4Kids, an open source educational operating system for children. Based on Xubuntu Linux, Qimo4Kids incorporated the Xfce Desktop Environment with collection of open source educational suites and software. The developers sadly announced via their now defunct Web site and via the Qimo4Kids facebook page that the project had not been updated in several years, due primarily to the fact that other things kept arising that prevented this. C’est la vie. They also felt that the project was not as poignant as it was when first created. This was a fun, engaging OS and the worlds of open source and education are the poorer for its concluding.
Arguably a difficult transition that Windows users undergo when switching to Linux is the lack of video editing software, like Microsoft Movie Maker. Have no fear! Pitivi comes to the rescue. Pitivi (pronounced pee-tee-vee) is an open source video editor for the Linux operating system and built upon the GStreamer multimedia framework.
Upon launch, Pitivi opens a greeting window providing the user with the opportunity to open an existing project or to create a new one. Behind this is the main screen where the film editing/creation takes place. The interface is pleasantly straightforward and intuitive. A menu and toolbar at the top of the screen are referred to as the header bar. Below this are two tabs, or primary tabs, to the left, above a pane. These tabs allow users to toggle between the media library and effects library. To the right are the contextual tabs, which allow users to view clip properties, add transitions and to add titles. To the right of this, is the viewer, through which users can observe their developing creations. The interface for the viewer is the same as for any media player. Below these three panes is the ruler and below that the timeline. This is where videos are placed to be modified.
Media can be added to the media library by either clicking on and dragging the desired file from the file manager window to this pane or by clicking on the Import button above this pane and to the left. When imported, media can then be dragged to and dropped on the timeline. Once a film clip is added, the clip as it will be seen by viewers appears in the viewer. When a user clicks anywhere along the timeline, the viewer jumps to that position. Using the timeline toolbar to the right of the timeline, users can delete selected clips, group clips, ungroup clips, copy, paste and toggle gaps in media. All edits affect the selected clip.
A click of a mouse button (right or left) places the playhead at the desired point on the timeline. This is where splits are inserted. Other tweaks involve being able to control the zoom on the timeline, adding a title, adding special effects and adding transitions. As effects are added to a clip, they are listed in the contextual tab with a checkbox next to each. The checkboxes are checked by default, so, as expected, unchecking one disables it. Effects include, but are by no means limited to, such items as facedetect (detects faces in videos), kaleidoscope and Tunnel (creates a light tunnel effect).
Pitivi is very versatile in terms of file support. Projects may be saved (or rendered which is the term used in Pitivi) in the following formats: AVI, Apple QuickTime, Ogg Vorbis, MP4 and MPEG to name a few. Furthermore, Pitivi offers excellent project management. The term project in Pitivi refers to any film being edited. But users can save their projects at different levels of completion or in different file formats. Many different settings can be adjusted, such as pixel and display aspect ratios, and there is an excellent Undo/Redo utility.
Now that you’ve read about what Pitivi can do, give it a try. Better still, let your students give it a try if you really want to see Pitivi put through its paces. If you’re so inclined, you can also contribute to their fund drive. Such support is always appreciated.
Note: Pitivi is designed to run on the GNOME Desktop Environment. However, all of the author’s screenshots were taken while running Pitivi on the Xfce Desktop Environment upon which it ran without issue.
Pitivi [computer software]. (n.d.). GNU General Public License.
JPitivi quick Start manual. (n.d.) GNU General Public License. Retrieved from http://www.pitivi.org/manual/.
I’ve recently come across a very engaging platform through which children can learn to write computer programs. Little Wizard is an open source application designed to help students in the primary grades learn the concepts that are common in all programming languages, such as variables, loops and conditions. Students can do all this using the mouse. Let’s get up front and personal with Little Wizard.
The interface is WYSIWYG and rather delightful in its use of colorful, engaging images. At the top of the window is a menu bar and below this is a toolbar which, by default, has the Program button already depressed. This is referred to as program view. Below the toolbar is a row of tabs, called the palette. Below this is a row of colorful buttons used for writing computer programs by simply clicking on and dragging program elements represented by the buttons to the program grid below. This is where users write their programs. One really cool feature is that users can easily toggle views of their programs by clicking on buttons on the toolbar. Users can bounce from program view to world view to mixed view. World view presents the world grid which allows users to create and alter the wizard’s world. Mixed view displays both the world grid and the program grid. Integrated tooltips nicely enhance functionality.
So, what kind of programs can you write with Little Wizard? Looking at the tabs in the palette should give you a clue: Wizard, Math, Variables, Conditions and Loops and Other. Each tab has icons, which represent different program elements. Wizard controls functions such as movement of the Little Wizard icon. Math is where you find numbers and their operators. Variables provides the ability to add variables to your program. Conditions and Loops allows for conditions (e.g. if/else statements) and loops (e.g. repeat/until statements) to be placed in a program. Other allows users to assign positions or to prompt for user input. Using these tools, young programmers can make the wizard move, wait for user input or even change his world.
So what happens if you need help getting started? The Little Wizard Web site offers a free tutorial that will guide you through Little Wizard’s interface and to help you learn to use the building blocks of computer programming. Sample programs are provided that give Little Wizard the opportunity to show you what it can do. In no time, users can start developing and bringing to life their own ideas. Now stop reading this and download Little Wizard so you can see what your students will create.
Little Wizard is available for Linux and Microsoft Windows.
Kirillov, K. (n.d.). Little Wizard’s home page: tutorial. GNU General Public License. Retrieved from http://littlewizard.sourceforge.net/tutorial.html.
Kwadrans, M. (n.d.). Little wizard [computer software]. GNU General Public License.
Taking a break from my more traditional topics of STEM and programming, I’d like to put the Arts into the spotlight for a change and talk about Ardour, an open source application that allows users to create audio compositions. Undoubtedly, music teachers out there are familiar with the proprietary, but WYSIWYG software, Accoustica Mixcraft. Ardour is just as WYSIWYG, but, as mentioned above, open source. Let’s take a look at Ardour right now.
Ardour is designed to be suitable for audio engineers, musicians, soundtrack editors and composers, but it should be just as ideal an environment for young composers to create their masterpieces. The interface is very similar to the aforementioned Mixcraft. The Editor Window presents a menu at the top of the screen allowing for ready access to features. Below this, the Transport Menu allows users to navigate (Play, Fast Forward, Loop, Record, etc.) through clips added to the Main Canvas below.
. To the right of the Transport Menu are the Clocks, offering four time formats. Right of the Clocks are the Edit Modes and Cursor Modes controls, which allow users to edit clips. Below this is the aforementioned Main Canvas in which sound and video tracks appear, each with its own track. Each track can then be edited individually. To the left of the Main Canvas is the Editor Mixer, which allows users to control volume and other features using slider controls.
So, what can you do with Ardour? I’d venture to say that you could do just about anything that you could do with Mixcraft. Rather than to compare the two, I’ll focus on Ardour’s features and what can be done with them. First of all, Ardour supports importing of the following audio types: AAIF, BWF, CAF ,FLAC and WAV. In terms of audio exporting, the following formats are supported: AAIF, BWF, CAF, FLAC, Ogg and WAV. Ardour is not just limited to handling sound. Videos can be imported and soundtracks extracted from them. Videos can be displayed frame-by-frame on the Video Timeline for easy editing. Users can add start/stop points to the video as well as blank frames and mix the video with the soundtrack of the current session. An Ardour session can even be run simultaneously on multiple computers.
This all sounds great, but it gets better. There are many plugins available for Ardour that enhance its functionality. These are conveniently handled through the Plugin Manager. Plugins allow users to create various audio or MIDI effects and to generate audio by functioning as “software instruments.” Additionally, although Ardour does not include music/sounds of its own, these can be downloaded from sites like Freesound (see below) and then imported into Ardour.
After reading this, I don’t know why you’re not downloading Ardour right now. Your students may not thank you with words, but their compositions will speak volumes.
Ardour is available for Linux and Apple MacOS.
Thanks to Paul Davis of the Ardour Development Team for permission to use all images included in this article.
Ardour [computer software]. (n.d.). GNU General Public License.
Ardour Manual. (n.d.). GNU General Public License.
Mixcraft 7 vs Ardour -audio editing comparison. (2016). Software Insider: Graphiq, Inc. Retrieved from http://sound-editing.softwareinsider.com/compare/39-169/Acoustica-Mixcraft-7-vs-Ardour.
ExpEYES is a low-cost open source framework of computer hardware and software that provides a means to perform low-cost science experiments using computers. ExpEYES offers formats designed for students from high school on. Let’s take a look at what can be done with ExpEYES.
According to its Web site, ExpEYES is a tool for learning science through exploration and experimentation, It includes integrated an oscilloscope and a signal generator and is powered via USB. ExpEYES offers 12-bit analog resolution, accurate measurements and is physically compact, for easy relocation. The software for ExpEYES is written in Python, an open source programming language. The online manual presents 50 (yes, fifty!) experiments that users can duplicate and, perhaps tha coolest feature of all, others can be easily created and added to the list.
So, from where does this marvel of scientific exploration come? ExpEYES was developed by the PHOENIX project of Inter-University Accelerator Centre (IUAC) of New Delhi. The long-term goal of this project is to make the equipment and methods used in research available to the student community. In science, experiments are performed, data is collected and analyzed. Conclusions drawn. The difference offered by ExpEYEs is the fact that the equipment is affordable.
So, what kind of experiments can a burgeoning scientist perform with ExpEYES? According to the ExpEYES User’s Manual, users can conduct experiments involving electricity, magnetism, electronics, sound, mechanics, optics, heat and computer programming. In terms of electricity, young scientists can perform experiments involving, among many other topics, voltage measurement, water conductivity and AC circuit study. Regarding electricity and magnetism, possible experiments include creating a simple AC generator and making an electromagnet. Some of the other experiments include amplitude and frequency modulation (electronics), sound velocity, using a stroboscope and hardware communication.
As potentially enriching as ExpEYES sounds, it is just one of several open source technology products created as part of the PHOENIX Project. If you’re interested in learning more about this and other opportunities to cultivate the scientists and engineers in your school, you should check out the ExpEYES Web site. Your students will thank you through their creations, if not through their words.
Thanks to Ajith Kumar for his support, the contributions that he provided and for suggested modifications.
ExpEYES is available for Linux and Microsoft Windows. It is available in Canada and the UK.
ExpEYES junior user’s manual: experiments for young engineers and scientists. n.d.). New Delhi: Inter-University Accelerator Centre. GNU General Public License. Retrieved from http://www.iuac.res.in/~elab/expeyes/Documents/eyesj-a4.pdf.