word

Raymond E. Brown and the Catholic biblical renewal / Donald Senior, CP ; foreword by Ronald D. Witherup, PSS

Senior, Donald, author




word

Jesus, skepticism & the problem of history : criteria & context in the study of Christian origins / Darrell L. Bock and J. Ed Komoszewski, editors ; foreword by N.T. Wright




word

Fakes, forgeries, and fictions : writing ancient and modern Christian apocrypha : proceedings from the 2015 York University Christian Apocrypha Symposium / edited by Tony Burke ; foreword by Andrew Gregory

York University Christian Apocrypha Symposium (2015 : Toronto, Ont.),




word

Myths and mistakes in New Testament textual criticism / edited by Elijah Hixson and Peter J. Gurry ; foreword by Daniel B. Wallace




word

The governor and the king : irony, hidden transcripts, and negotiating empire in the Fourth Gospel / Arthur M. Wright Jr. ; foreword by Frances Taylor Gench

Wright, Arthur M., author




word

1 Corinthians : a pastoral commentary / J. Ayodeji Adewuya ; foreword by Daniel K. Darko

Adewuya, J. Ayodeji, 1951- author




word

Jesus's manifesto : the Sermon on the Plain / Roman A. Montero ; foreword by James Crossley

Montero, Roman A., author, translator




word

Anatomy of an HTML5 WordPress theme

This site has been written in HTML5 and used to use WordPress to manage the content. I’ll explain why I used HTML5, describe the structure of the theme templates, and show some of the ways I tried to tame WordPress’s tendency to add mess to the source code.

As this is my personal site I wanted to experiment with using HTML5, CSS3, and WAI-ARIA. All these documents are currently working drafts and subject to change. However, the web documents and applications of the future are going to be written in HTML5 and I wanted to see the benefits of using it to markup static documents. Using CSS 2.1, let alone the CSS3 selectors and properties that some browser vendors have implemented, has many advantages for controlling the presentation of semantically coded documents. For this reason I am not going to avoid using basic CSS 2.1 selectors just to faithfully reproducing this site’s design in IE6. However, I have tried to accommodate IE 7 and IE 8 users by using an HTML5 enabling script so that the new HTML5 elements can be styled in those browsers if users have Javascript enabled.

HTML5 templates

I started with a static prototype of this site developed on my local server. WordPress makes it very easy to create your own templates and, therefore, it is no problem to use HTML5. This theme only has 3 main templates: index, single, and archive. There are of course templates for 404s, attachments, comments, etc., but I won’t discuss them as they are all based on the 3 main templates. All the templates include ARIA roles as an accessibility aide.

The single.php template has this rough structure:

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="utf-8">
  <title></title>
  <link rel="stylesheet" href="default.css">
</head>

<body>
  <header role="banner"></header>
  <nav role="navigation"></nav>
  <article role="main">
    <header>
      <time datetime="YYYY-MM-DD"></time>
      <h1></h1>
    </header>
    <footer></footer>
  </article>
  <nav></nav>
  <aside role="complementary"></aside>
  <footer role="contentinfo">
    <small></small>
  </footer>
</body>
</html>

The first line of the document is the HTML5 DOCTYPE. The new <article> element contains the content of each post. The same structure is used for the index.php template except that there are several articles displayed on each page and the ARIA role value of main is not used. In contrast, the archive.php template houses all the article excerpts in a <section> element with the ARIA role of main because the list of archived posts is itself the main content of the document.

A clean theme

WordPress tends to add classes, elements, and other bits of code in certain places. I haven’t used any of the WordPress functions that add class names to the body and to elements wrapping a post and also wanted to avoid cluttering the source code with any other unnecessary markup. This required a bit of fiddling around with the theme’s functions.php file. I’m not a PHP developer so this might not be pretty!

Removing actions from wp_head()

WordPress has a hook called wp_head that sits in the header.php of most themes. To avoid it inserting unwanted code into the <head> of the document I used the remove_action function to disable the functions that were responsible. The following code was added to the functions.php file of my theme:

// Remove links to the extra feeds (e.g. category feeds)
remove_action( 'wp_head', 'feed_links_extra', 3 );
// Remove links to the general feeds (e.g. posts and comments)
remove_action( 'wp_head', 'feed_links', 2 );
// Remove link to the RSD service endpoint, EditURI link
remove_action( 'wp_head', 'rsd_link' );
// Remove link to the Windows Live Writer manifest file
remove_action( 'wp_head', 'wlwmanifest_link' );
// Remove index link
remove_action( 'wp_head', 'index_rel_link' );
// Remove prev link
remove_action( 'wp_head', 'parent_post_rel_link', 10, 0 );
// Remove start link
remove_action( 'wp_head', 'start_post_rel_link', 10, 0 );
// Display relational links for adjacent posts
remove_action( 'wp_head', 'adjacent_posts_rel_link', 10, 0 );
// Remove XHTML generator showing WP version
remove_action( 'wp_head', 'wp_generator' );

Source: WPEngineer.com: Cleanup WordPress Header

Removing an empty <span>

If you want to create excerpts you can either write them into the excerpt box or use the <--more--> quicktag in the WordPress editor. I just wanted the first paragraph of my posts to be used as the excerpt and so using the in-editor tag was the most practical approach I was aware of. However, when you do this WordPress will insert an empty <span> in the post’s content. This element has an id so that the area following the excerpt can be targeted by “more” or “continue reading” links. I removed both the empty <span> and the jump link by adding the following code to the functions.php file of the theme:

// removes empty span
function remove_empty_read_more_span($content) {
  return eregi_replace("(<p><span id="more-[0-9]{1,}"></span></p>)", "", $content);
}
add_filter('the_content', 'remove_empty_read_more_span');

Source: Ganda Manurung: Remove Empty Span Tag On WordPress

// removes url hash to avoid the jump link
function remove_more_jump_link($link) {
  $offset = strpos($link, '#more-');
  if ($offset) {
    $end = strpos($link, '"',$offset);
  }
  if ($end) {
    $link = substr_replace($link, '', $offset, $end-$offset);
  }
  return $link;
}
add_filter('the_content_more_link', 'remove_more_jump_link');

Source: WordPress Codex: Customizing the Read More

Displaying images in the excerpt

For posts that display nothing but a photograph (yes, they will be shit but I’m hoping it gets me using my camera a bit more often) I wanted the image to show up in the archives. Equally, if the first paragraph of a post contained a link I wanted that to be preserved. The default the_excerpt() template tag doesn’t allow for this so it needed some modifying. I added a new function, which is just a modified version of the core excerpt function, to the functions.php file and then made sure that the template tag executed this function rather than the one contained in the core WordPress files.

function improved_trim_excerpt($text) {
   if ( '' == $text ) {
      $text = get_the_content('');
      $text = strip_shortcodes( $text );
      $text = apply_filters('the_content', $text);
      $text = str_replace(']]>', ']]&amp;gt;', $text);
      $text = strip_tags($text, '<p><img><a>');
      $excerpt_length = apply_filters('excerpt_length', 55);
      $words = explode(' ', $text, $excerpt_length + 1);
      if (count($words) > $excerpt_length) {
         array_pop($words);
         array_push($words, '[...]');
         $text = implode(' ', $words);
         $text = force_balance_tags($text);
      }
   }
   return $text;
}
remove_filter('get_the_excerpt', 'wp_trim_excerpt');
add_filter('get_the_excerpt', 'improved_trim_excerpt');

Source: Aaron Russell: Improving WordPress’ the_excerpt() template tag

I prefer not to have empty elements in the markup and so I needed a way to conditionally insert the “Older entries”, “Newer Entries”, etc., links into templates. The solution I’m using here, which isn’t perfect, is to add this to functions.php:

function show_posts_nav() {
  global $wp_query;
  return ($wp_query->max_num_pages > 1);
}

Source: Eric Martin: Conditional navigation links in WordPress

And then to wrap the navigation markup in the templates with the following:

<?php if (show_posts_nav()) : ?>
<nav>
   <ul>
      <li><?php next_posts_link('&#171; Older Entries') ?></li>
      <li><?php previous_posts_link('Newer Entries &#187;') ?></li>
   </ul>
</nav>
<?php endif; ?>

Summary

It’s fairly easy to create a simple site with HTML5 and to use WordPress to deliver it. At the moment there are issues with Internet Explorer because you cannot style HTML5 elements unless you use Javascript. However, HTML5 redefines the meaning of certain elements (such as <dl>, which has become a more versatile “description list”) and allows block elements to be wrapped in a link. Therefore, there is still benefit in using the HTML5 DOCTYPE even if you do not make use of the new elements.

Further reading

  1. HTML5 working draft
  2. HTML5 differences from HTML4
  3. Accessible Rich Internet Applications (WAI-ARIA) 1.0




word

Using HTML5 elements in WordPress post content

Here are two ways to include HTML5 elements in your WordPress post content without WordPress’ wpautop function wrapping them in p tags or littering your code with line breaks.

HTML5 has several new elements that you may want to use in your post content to markup document sections, headers, footers, pullquotes, figures, or groups of headings. One way to safely include these elements in your posts is simple; the other way is a bit more complicated. Both ways rely on hand-coding the HTML5 markup in the WordPress editor’s HTML view.

If you are adding HTML5 elements to your post content then you should use an HTML5 doctype.

Disable wpautop for your theme

This is the simple way. Disable the wpautop function so that WordPress makes no attempt to correct your markup and leaves you to hand-code every line of your posts. If you want total control over every line of your HTML then this is the option for you.

To disable wpautop entirely add these lines to your theme’s functions.php:

remove_filter('the_excerpt', 'wpautop');
remove_filter('the_content', 'wpautop');

However, wpautop is generally quite useful if most of your posts are simple text content and you only occasionally want to include HTML5 elements. Therefore, modifying wpautop to recognise HTML5 elements might be more practical.

Modify wpautop to recognise HTML5 elements

WordPress’ wpautop is part of the core functions and can be found in this file within your WordPress installation: wp-includes/formatting.php. It controls how and where paragraphs and line breaks are inserted in excerpts and post content.

In order to create a modified version of WordPress’ core wpautop function I started off by duplicating it in my theme’s functions.php file.

What I’ve experimented with is disabling wpautop and adding a modified copy of it – which includes HTML5 elements in its arrayss – to my theme’s functions.php file.

Add the following to your theme’s functions.php file and you’ll be able to use section, article, aside, header, footer, hgroup, figure, details, figcaption, and summary in your post content. (Probably best to try this in a testing environment first!)

/* -----------------------------
MODIFIED WPAUTOP - Allow HTML5 block elements in wordpress posts
----------------------------- */

function html5autop($pee, $br = 1) {
   if ( trim($pee) === '' )
      return '';
   $pee = $pee . "
"; // just to make things a little easier, pad the end
   $pee = preg_replace('|<br />s*<br />|', "

", $pee);
   // Space things out a little
    // *insertion* of section|article|aside|header|footer|hgroup|figure|details|figcaption|summary
   $allblocks = '(?:table|thead|tfoot|caption|col|colgroup|tbody|tr|td|th|div|dl|dd|dt|ul|ol|li|pre|select|form|map|area|blockquote|address|math|style|input|p|h[1-6]|hr|fieldset|legend|section|article|aside|header|footer|hgroup|figure|details|figcaption|summary)';
   $pee = preg_replace('!(<' . $allblocks . '[^>]*>)!', "
$1", $pee);
   $pee = preg_replace('!(</' . $allblocks . '>)!', "$1

", $pee);
   $pee = str_replace(array("
", "
"), "
", $pee); // cross-platform newlines
   if ( strpos($pee, '<object') !== false ) {
      $pee = preg_replace('|s*<param([^>]*)>s*|', "<param$1>", $pee); // no pee inside object/embed
      $pee = preg_replace('|s*</embed>s*|', '</embed>', $pee);
   }
   $pee = preg_replace("/

+/", "

", $pee); // take care of duplicates
// make paragraphs, including one at the end
   $pees = preg_split('/
s*
/', $pee, -1, PREG_SPLIT_NO_EMPTY);
   $pee = '';
   foreach ( $pees as $tinkle )
      $pee .= '<p>' . trim($tinkle, "
") . "</p>
";
   $pee = preg_replace('|<p>s*</p>|', '', $pee); // under certain strange conditions it could create a P of entirely whitespace
// *insertion* of section|article|aside
   $pee = preg_replace('!<p>([^<]+)</(div|address|form|section|article|aside)>!', "<p>$1</p></$2>", $pee);
   $pee = preg_replace('!<p>s*(</?' . $allblocks . '[^>]*>)s*</p>!', "$1", $pee); // don't pee all over a tag
   $pee = preg_replace("|<p>(<li.+?)</p>|", "$1", $pee); // problem with nested lists
   $pee = preg_replace('|<p><blockquote([^>]*)>|i', "<blockquote$1><p>", $pee);
   $pee = str_replace('</blockquote></p>', '</p></blockquote>', $pee);
   $pee = preg_replace('!<p>s*(</?' . $allblocks . '[^>]*>)!', "$1", $pee);
   $pee = preg_replace('!(</?' . $allblocks . '[^>]*>)s*</p>!', "$1", $pee);
   if ($br) {
      $pee = preg_replace_callback('/<(script|style).*?</\1>/s', create_function('$matches', 'return str_replace("
", "<WPPreserveNewline />", $matches[0]);'), $pee);
      $pee = preg_replace('|(?<!<br />)s*
|', "<br />
", $pee); // optionally make line breaks
      $pee = str_replace('<WPPreserveNewline />', "
", $pee);
   }
   $pee = preg_replace('!(</?' . $allblocks . '[^>]*>)s*<br />!', "$1", $pee);
// *insertion* of img|figcaption|summary
   $pee = preg_replace('!<br />(s*</?(?:p|li|div|dl|dd|dt|th|pre|td|ul|ol|img|figcaption|summary)[^>]*>)!', '$1', $pee);
   if (strpos($pee, '<pre') !== false)
      $pee = preg_replace_callback('!(<pre[^>]*>)(.*?)</pre>!is', 'clean_pre', $pee );
   $pee = preg_replace( "|
</p>$|", '</p>', $pee );

   return $pee;
}

// remove the original wpautop function
remove_filter('the_excerpt', 'wpautop');
remove_filter('the_content', 'wpautop');

// add our new html5autop function
add_filter('the_excerpt', 'html5autop');
add_filter('the_content', 'html5autop');

The results are not absolutely perfect but then neither is the original wpautop function. Certain ways of formatting the code will result in unwanted trailing </p> tags or a missing opening <p> tags.

For example, to insert a figure with caption into a post you should avoid adding the figcaption on a new line because an image or link appearing before the figcaption will end up with a trailing </p>.

<!-- this turns out ok -->
<figure>
  <a href="#"><img src="image.jpg" alt="" /></a><figcaption>A figure caption for your reading pleasure</figcaption>
</figure>

<!-- this turns out not so ok -->
<figure>
  <a href="#"><img src="image.jpg" alt="" /></a>
  <figcaption>A figure caption for your reading pleasure</figcaption>
</figure>

Another example would be when beginning the contents of an aside with a paragraph. You’ll have to leave a blank line between the opening aside tag and the first paragraph.

<aside>

This content could be a pullquote or information that is tangentially related to the surrounding content. But to get it wrapped in a paragraph you have to leave those blank lines either side of it before the tags.

</aside>

Room for improvement

Obviously there are still a few issues with this because if you format your post content in certain ways then you can end up with invalid HTML, even if it doesn’t actually affect the rendering of the page. But it seems to be pretty close!

Leave a comment or email me if you are using this function and find there that are instances where it breaks down. I ran numerous tests and formatting variations to try and iron out as many problems as possible but it’s unlikely that I tried or spotted everything.

Hopefully someone with more PHP and WordPress experience will be able to improve upon what I’ve been experimenting with, or find a simpler and more elegant solution that retains the useful wpautop functionality while allowing for the use of HTML5 elements in posts. Please share anything you find!




word

Custom Tweet Button for WordPress

How to create a custom Tweet Button for WordPress using the bit.ly and Twitter APIs. The HTML and CSS is completely customisable and there is no need for JavaScript. PHP is used to automatically shorten and cache the URL of a post, fetch and cache the number of retweets, and populate the query string parameters in the link to Twitter.

The custom Tweet Button at the bottom of this post was created using this method. All the files are available on Github and released under MIT license. The PHP code was heavily influenced by the BackType Tweetcount plugin.

How to use

You’ll need your own bit.ly account and to be comfortable editing your theme’s functions.php, style.css, and template files. Be sure to make backups before you start making changes.

Step 1: Download the Custom Tweet Button for WordPress files from Github.

Step 2: Include the custom-tweet-button.php file in your theme’s functions.php file.

Step 3: Replace the bit.ly username, bit.ly API key, and Twitter username placeholders in the tweet_button function with your own. Your bit.ly credentials can be found on the “settings” page of your account.

Step 4: Add the custom Tweet Button CSS to your theme’s style.css file. Add the tweet.png image in your theme’s image folder. Make sure the image is correctly referenced in the CSS file.

Step 5: Call the function tweet_button in your template files (e.g. single.php) at the position(s) in the HTML you’d like the Tweet Button to appear:

if (function_exists('tweet_button')) {
   tweet_button(get_permalink());
}

Why make your own Tweet Button?

Making your own custom Tweet Button for WordPress has several additional advantages over using Twitter’s own offerings.

  • Full control over the HTML and CSS.
    Having full control over the HTML and CSS means that you can choose how to present your Tweet Button. I decided to reproduce the horizontal and vertical styles of Twitter’s own button. But any appearance is possible.

  • All click, traffic, and referrer data is stored in your bit.ly account.
    The URL for any published post is automatically shortened using the bit.ly service. The short URL is then passed to Twitter to ensure you can monitor the click and traffic data in your bit.ly account. The permalink is passed to Twitter in the counturl query string parameter to ensure that it counts the URL that your short URL resolves to.

  • No need for JavaScript or embedded iframes.
    The Tweet Button works without JavaScript. You have full control over any custom JavaScript enhancements you may wish to include. If you’d prefer Twitter’s share page to open in a pop-up window you can write your own JavaScript handler.

  • Faster page load.
    No external JavaScript or image files are loaded; both the short URL and retweet counts are cached.

  • Use the short URL and retweet count for other purposes.
    The short URLs and retweet counts are stored as post meta-data. This makes it easy to display this data anywhere else in a post. The retweet count data could be used for conditional template logic. For example, you could order posts based on the number of retweets, apply custom styles to your most retweeted posts, or display your most tweeted posts in a widget.

  • Easy to add Google Analytics campaign and event tracking.
    The Tweet Button is simple HTML and you have control over all the information that is sent to Twitter. Therefore, it is possible to use Google Analytics to help answer questions like: are people sharing your posts from the homepage or the post itself? If the Tweet Button is displayed above and below your posts, which gets the most clicks? How long do people take to click the Tweet Button? How many people are visiting my site thanks to links posted on Twitter using the Tweet Button?

  • Approximate the number of retweets for old posts.
    Before the release of the official Tweet Button, Twitter did not collect data on the number of times a URL was tweeted. This means your older posts may display far fewer retweets than actually occurred. However, there is a workaround. Use a service like Topsy, Backtype, or Tweetmeme to get the number of times your old post was retweeted. The difference between this and the number from Twitter’s APIs is the approximate number of retweets Twitter missed. To correct the retweet count for old posts add the number of missed retweets to a Custom Field called retweet_count_start.

How the custom Tweet Button works

Once a post is published its permalink URL is shortened using the bit.ly API.

The returned URL is permanently cached in the bitly_short_url Custom Field. The short URL is now part of the post’s general meta-data and can be used in contexts other than the Tweet Button.

The Twitter API is used to get the number of retweets for the post’s permalink URL. This number, along with the time at which it was requested, is cached in the retweet_cache Custom Field. When the cache interval has passed, an API call is made and the returned number of retweets is checked against the value stored in retweet_cache. If the returned number is greater, the value of retweet_cache is updated.

The content of the tweet is automatically created by setting several properties for the http://twitter.com/share URL. The post title makes up the message; the short URL is passed to Twitter as the URL to be displayed in the tweet; the permalink URL is passed to Twitter as the URL to be counted; and your username is declared.

$twitter_params =
'?text=' . urlencode($title) .
'&amp;url=' . urlencode($short_url) .
'&amp;counturl=' .urlencode($url).
'&amp;via=' . $twitter_via;

The default HTML output is very simple and can be fully customised. To display the count number vertically, add the class vcount.

<div class="twitter-share vcount>
   <a class="twitter-button"
      rel="external nofollow"
      title="Share this on Twitter"
      href="http://twitter.com/share?query-string-params"
      target="_blank">Tweet</a>
   <a class="twitter-count" href="http://twitter.com/search?q=url>259</a>
</div>

Further enhancements

Please apply any improvements or enhancements for the script against the source repository.




word

Training and development for dummies [electronic resource] / by Elaine Biech, CPLP Fellow ; foreword by Tony Bingham, President and CEO, Association for Talent Development

Biech, Elaine




word

Turn enemies into allies [electronic resource] : the art of peace in the workplace / Judy Ringer ; foreword by James Warda ; illustrations by Adam Richardson

Ringer, Judy, 1949- author




word

WordPress [electronic resource] / Jessica Neuman Beck and Matt Beck

Beck, Jessica Neuman




word

How to Create Custom WordPress Editor Blocks in 2020

Peter Tasker on creating blocks right now:

It’s fairly straightforward these days to get set up with the WP CLI ‘scaffold’ command. This command will set up a WordPress theme or plugin with a ‘blocks’ folder that contains the PHP and base CSS and JavaScript required to create a custom block. The only drawback that I noticed is that the JavaScript uses the old ES5 syntax rather than modern ESNext. Modern JavaScript allows us to write more concise

Read article “How to Create Custom WordPress Editor Blocks in 2020”

The post How to Create Custom WordPress Editor Blocks in 2020 appeared first on CSS-Tricks.




word

How to Use Block Variations in WordPress

WordPress 5.4 was released not so long ago and, along with other improvements and bug fixes, it introduced a feature called Block Variations. I had a chance to use it on one of my recent projects and am so pleasantly surprised with how smart this feature is. I actually think it hasn’t received the attention it deserves, which is why I decided to write this article.

What is a Block Variation?

Block Variations allow developers to define instances of existing Read article “How to Use Block Variations in WordPress”

The post How to Use Block Variations in WordPress appeared first on CSS-Tricks.




word

From baksheesh to bribery: understanding the global fight against corruption and graft / edited by T. Markus Funk and Andrew S. Boutros ; foreword by the Honorable M. Margaret McKeown

Dewey Library - K5261.F76 2019




word

Advancing equality: how constitutional rights can make a difference worldwide / Jody Heymann, Aleta Sprague, Amy Raub ; foreword by Dikgang Moseneke

Dewey Library - K3250.H49 2020




word

Reclaiming indigenous governance: reflections and insights from Australia, Canada, New Zealand, and the United States / edited by William Nikolakis, Stephen Cornell, Harry W. Nelson ; foreword by Sophie Pierre

Dewey Library - K3247.R43 2019




word

Hidden horrors : Japanese war crimes in World War II / Yuki Tanaka ; foreword by John W. Dower

Tanaka, Toshiyuki, 1949- author




word

The Sarawak report : the inside story of the 1MDB exposé / investigated and reported by Clare Rewcastle Brown ; foreword by Gordon Brown

Brown, Clare Rewcastle, author




word

The end of UMNO? : essays on Malaysia's former dominant party : new and expanded post GE-14 edition / editor, Bridget Welsh; contributors, John Funston, Clive Kessler, James Chin, Bridget Welsh; foreword: Saifuddin Abdullah ; post-GE14 foreword: Tengk




word

Deadly dermatologic diseases [electronic resource] : clinicopathologic atlas and text / Michael B. Morgan, Bruce R. Smoller, Stephen C. Somach ; fpreword by Mark Allen Everett

New York, NY : Springer, [2007]




word

Coping with chronic illness and disability [electronic resource] : theoretical, empirical, and clinical aspects / edited by Erin Martz, Hanoch Livneh ; foreword by Beatrice A. Wright

New York : Springer, [2007]




word

Quantum strangeness: wrestling with Bell's theorem and the ultimate nature of reality / George Greenstein ; foreword by David Kaiser

Hayden Library - QC174.12.G7325 2019




word

Multivariate data analysis for root cause analyses and time-of-flight secondary ion mass spectrometry / Danica Heller-Krippendorf ; with a foreword by Carsten Engelhard

Online Resource




word

Part 1 – Ch10 – Even One Word is Enough

These are the recordings of the complete collection of all the talks by Ajahn Chah that have been translated into English and are published in 'The Collected Teachings of Ajahn Chah', 2011. This was read by Ajahn Amaro during the winter of 2012

The post Part 1 – Ch10 – Even One Word is Enough appeared first on Amaravati Buddhist Monastery.




word

Ghetto: the history of a word / Daniel B. Schwartz

Rotch Library - HT221.S34 2019




word

Writing the field recording: sound, word, environment / edited by Stephen Benson and Will Montgomery

STACK BOOKS PN3352.S68 W75 2018




word

Revolution in higher education: how a small band of innovators will make college accessible and affordable / Richard A. DeMillo; foreword by Andrew J. Young

Dewey Library - LA227.4.D47 2015




word

Re-engineering the uptake of ICT in schools / Frans Van Assche, Luis Anido, David Griffiths, Cathy Lewin, Sarah McNicol, editors ; forewords by Giovanni Biondi and Patricia Manson

Online Resource




word

Playground / James Mollison ; foreword Jon Ronson

Rotch Library - LB3251.M65 2015




word

The Sunday Crossword No. 3099

Across1 According to Spooner, conveniences for pets are symbols of the working class (4,4)5 Church music: where to be seated (5)9 So, an African count




word

Space stations: the art, science, and reality of working in space / Dr. Gary Kitmacher, Ron Miller, Robert Pearlman ; foreword, Nicole Stott

Hayden Library - TL797.K5745 2018




word

Ignition!: an informal history of liquid rocket propellants / by John D. Clark ; foreword by Isaac Asimov

Barker Library - TL785.C53 2017




word

Electric airplanes and drones: a history / Kevin Desmond ; foreword by Ivo Boscarol

Hayden Library - TL685.35.D47 2018




word

Apollo: VII - XVII / Floris Heyne, Joel Meter, Simon Phillipson, Delano Steenmeijer ; edited by Neil Pearson ; with a special foreword by Apollo 7 astronaut Walt Cunningham

Hayden Library - TL789.8.U6A5 A66 2018




word

Carrying the fire: an astronaut's journeys / Michael Collins ; foreword by Charles A. Lindbergh

Hayden Library - TL789.85.C64 A33 2019




word

Shattered dreams: the lost and canceled space missions / Colin Burgess ; foreword by Don Thomas

Hayden Library - TL789.85.A1 B866 2019




word

Come fly with us: NASA's Payload Specialist Program / Melvin Croft and John Youskauskas ; foreword by Don Thomas

Hayden Library - TL521.312.C76 2019




word

The ultimate engineer: the remarkable life of NASA's visionary leader George M. Low / Richard Jurek ; foreword by Gerald D. Griffin

Dewey Library - TL789.85.L69 J87 2019




word

Letters to Palestine: writers respond to war and occupation / edited by Vijay Prashad ; Foreword by Junot Díaz

Rotch Library - PJ5012.I87 L48 2015




word

Transforming Delhi / A.K. Jain ; foreword by Christopher Charles Benninger

Rotch Library - HT169.I42 D455 2015




word

Landscapes of the Islamic world: archaeology, history, and ethnography / edited by Stephen McPhillips and Paul D. Wordsworth

Rotch Library - HD846.Z7 L36 2016




word

Rejuvenation of the Nāgara temples: with special reference to Yamunā Pāra Plain (19th & 20th century) / by Saranga Batra ; foreword by Dr. B.R. Mani (ADG)

Rotch Library - NA6008.D4 B38 2014




word

The traditional crafts of Egypt / edited by Menha el-Batraoui ; foreword by Galal Amin ; translated by Nabil Shawkat and Mandy McClure

Rotch Library - TT117.H57313 2016




word

Tehran: life within walls: a city, its territory, and forms of dwelling / Hamed Khosravi, Amir Djalali, Francesco Marullo ; foreword, Salomon Frausto ; afterword, Michiel Riedijk

Rotch Library - NA1487.T44 K47 2017




word

The Islamophobia industry: how the right manufactures hatred of Muslims / Nathan Lean ; foreword to the first edition by John L. Esposito ; foreword to the second edition by Jack G. Shaheen

Rotch Library - BP52.L43 2017




word

Nabil Anani: Palestine, land and people / foreword by Mourid Barghouti ; editors: Sulieman Mleahat and Nartin Mulloy

Rotch Library - N7279.A53 A4 2018




word

The Syrians in Egypt, 1725-1975 / Thomas Philipp ; with a foreword by Ilham Khuri-Makdisi

Rotch Library - DT72.S9 P44 2017




word

Africa drawn: one hundred cities / Gary White, Marguerite Pienaar, Bouwer Serfontein ; foreword by Elizabeth Plater-Zyberk

Rotch Library - NA9273.W45 2015