text:
var Sequencer = function () {
  this.bpm = 120;
  this.tracks = {};
  this.counter = 0;
  this.isPlaying = false;
  this.trackTotal = 0;
  this.trackMax = 5; // maximum five simultaneous loaded

  this._notes = [2, 4, 8, 16, 32];

  function setBPM(nt) {
    var noteCalc = nt / 4;
    var qtr = Math.round(((60 / this.bpm) * 1000) * 100000) / 100000;

    if (noteCalc > 0) {
      noteCalc = qtr / noteCalc;
    } else {
      noteCalc = qtr * noteCalc;
    }

    return Math.round(noteCalc * 100000) / 100000;
  }

  for (var i = 0; i < this._notes.length; i ++) {
    this['timestamp' + this._notes[i]] = (new Date()).getTime();

    Sequencer.prototype['_getBPM' + this._notes[i]] = setBPM.bind(this, this._notes[i]);
  }
};

Sequencer.prototype = {
  _generateNoteSelector: function () {
    var select = document.createElement('select');
    select.classList.add('notes-current');
    select.id = 'note-change-' + this.counter;
    select.setAttribute('data-id', this.counter);

    var notes = this._notes;
    var option;

    for (var i = 0; i < notes.length; i ++) {
      option = document.createElement('option');
      option.value = notes[i];
      option.textContent = '1/' + notes[i];
      if (notes[i] === 16) {
        option.setAttribute('selected', true);
      }
      select.appendChild(option);
    }

    return select;
  },

  addTrack: function () {
    this.trackTotal ++;

    if (this.trackTotal > this.trackMax) {
      this.trackTotal = this.trackMax;
    }

    if (this.trackTotal > this.trackMax) {
      document.querySelector('#new-track').setAttribute('disabled', true);
      return;
    } else {
      document.querySelector('#new-track').removeAttribute('disabled');
    }

    var track = new Track();
    this.counter ++;

    track.id = this.counter;

    function setClick(id) {
      if (this.getAttribute('on') === 'true') {
        this.setAttribute('on', false);
        track.sounds[id][this.getAttribute('pos')] = false;
      } else {
        this.setAttribute('on', true);
        track.sounds[id][this.getAttribute('pos')] = true;
      }
    }

    function generateButtons(row) {
      var id = row.getAttribute('sound');

      // bars
      var bars = document.createElement('div');
      bars.classList.add('bars-row');

      for (var i = 0; i < 32; i ++) {
        var bar = document.createElement('button');
        pos = i;
        bar.classList.add('bar');
        bar.id = 'bar-' + i;
        bar.setAttribute('pos', i);
        bar.onclick = setClick.bind(bar, id);

        bars.appendChild(bar);
      }

      row.appendChild(bars);
    }

    var machine = document.querySelector('#machine');
    var footer = document.querySelector('#footer');
    var sequencerRow = document.createElement('div');
    sequencerRow.classList.add('sequencer');
    sequencerRow.id = 'sequencer-' + this.counter;

    var remove = document.createElement('button');
    remove.classList.add('delete');
    remove.setAttribute('data-id', this.counter);
    remove.id = 'delete-' + this.counter;
    remove.textContent = 'x';

    sequencerRow.appendChild(remove);

    // note markers
    var notes = document.createElement('div');
    notes.classList.add('notes');

    for (var i = 0; i < 32; i ++) {
      var span = document.createElement('span');
      span.textContent = i + 1;
      var note = document.createElement('div');
      note.id = 'note-' + this.counter + '-' + i;
      note.classList.add('note');
      if (i === 0) {
        note.classList.add('playing');
      }
      note.appendChild(span);
      notes.appendChild(note);
    }

    sequencerRow.appendChild(notes);
    sequencerRow.appendChild(this._generateNoteSelector());

    var counter = 0;

    function addSample(j) {
      track.add(j, function (filename) {
        var sampleRow = document.createElement('div');
        sampleRow.classList.add('sample');
        sampleRow.id = 'sample-' + this.counter + '-' + counter;
        sampleRow.setAttribute('sound', counter);

        var span = document.createElement('span');
        span.textContent = filename;
        sampleRow.appendChild(span);

        var button = document.createElement('button');
        button.classList.add('toggle-edits');
        button.setAttribute('data-edits', 'edits-' + this.counter + '-' + counter);
        button.textContent = '+';
        button.onclick = function () {
          var id = this.parentNode.getAttribute('sound');
          track.toggleEditRow(id, this);
        };

        sampleRow.appendChild(button);

        generateButtons.call(this, sampleRow);
        sequencerRow.appendChild(sampleRow);

        // volume, delay, etc
        var editsRow = document.createElement('div');
        editsRow.classList.add('edits');
        editsRow.id = 'edits-' + this.counter + '-' + counter;
        editsRow.setAttribute('sound', counter);
        editsRow.classList.add('hide');

        var span = document.createElement('span');
        span.id = 'volume-' + this.counter + '-' + counter;
        span.textContent = 1;

        editsRow.appendChild(span);

        button = document.createElement('button');
        button.classList.add('volume');
        button.classList.add('up');
        button.textContent = 'vol +';
        button.id = 'volume-up-' + this.counter + '-' + counter;
        button.setAttribute('data-track', span.id);
        button.setAttribute('disabled', true);
        button.onclick = function () {
          var id = this.parentNode.getAttribute('sound');
          var vol = track.setVolumeUp(id, 'up');
          document.querySelector('#' + this.getAttribute('data-track')).textContent = vol;
        };

        editsRow.appendChild(button);

        button = document.createElement('button');
        button.classList.add('volume');
        button.classList.add('down');
        button.textContent = 'vol -';
        button.id = 'volume-down-' + this.counter + '-' + counter;
        button.setAttribute('data-track', span.id);
        button.onclick = function () {
          var id = this.parentNode.getAttribute('sound');
          var vol = track.setVolumeDown(id, 'down');
          document.querySelector('#' + this.getAttribute('data-track')).textContent = vol;
        };

        editsRow.appendChild(button);

        span = document.createElement('span');
        span.id = 'delay-' + this.counter + '-' + counter;
        span.textContent = 0;

        editsRow.appendChild(span);

        button = document.createElement('button');
        button.classList.add('distortion');
        button.classList.add('up');
        button.textContent = 'distort +';
        button.id = 'distortion-up-' + this.counter + '-' + counter;
        button.setAttribute('data-track', span.id);
        button.onclick = function () {
          var id = this.parentNode.getAttribute('sound');
          var delay = track.setDistortionUp(id, 'up');
          document.querySelector('#' + this.getAttribute('data-track')).textContent = delay;
        };

        editsRow.appendChild(button);

        button = document.createElement('button');
        button.classList.add('distortion');
        button.classList.add('down');
        button.textContent = 'distort -';
        button.id = 'distortion-down-' + this.counter + '-' + counter;
        button.setAttribute('data-track', span.id);
        button.setAttribute('disabled', true);
        button.onclick = function () {
          var id = this.parentNode.getAttribute('sound');
          var delay = track.setDistortionDown(id, 'down');
          document.querySelector('#' + this.getAttribute('data-track')).textContent = delay;
        };

        editsRow.appendChild(button);

        sequencerRow.appendChild(editsRow);

        counter ++;
      }.bind(this));
    }

    for (var j = 0; j < this.audioTotal; j ++) {
      addSample.call(this, j);
    }

    this.tracks[this.counter] = track;
    machine.appendChild(sequencerRow);

    this.play();
  },

  stop: function () {
    this.isPlaying = false;

    for (var track in this.tracks) {
      this.tracks[track].stop();
    }

    this.playTrack = null;
  },

  _emit: function (what, detail) {
    var event = new CustomEvent(what, { detail: detail });
    document.querySelector('#wrapper').dispatchEvent(event);
  },

  play: function () {
    this.stop();
    this.isPlaying = true;

    function setTimer(notes) {
      var now = (new Date()).getTime();
      var delta = {};

      for (var i = 0; i < this._notes.length; i ++) {
        var note = this._notes[i];
        delta[note] = now - this['timestamp' + note];

        if (delta[note] >= this['_getBPM' + note]()) {
          this['timestamp' + note] = now - (delta[note] % this['_getBPM' + note]());
          this._emit('track', {
            note: note
          });
        }
      }
    }

    this.playTrack = function () {
      try {
        requestAnimationFrame(this.playTrack.bind(this));
      } catch (err) { }

      setTimer.call(this);
    };

    this.playTrack();
  },

  remove: function (id) {
    this.trackTotal --;

    if (this.trackTotal > 0) {
      this.trackTotal = 0;
    }

    if (this.trackTotal <= this.trackMax) {
      document.querySelector('#new-track').removeAttribute('disabled');
    }

    this.tracks[id].stop();
    delete this.tracks[id];
    var seq = document.querySelector('#sequencer-' + id);
    seq.parentNode.removeChild(seq);
  }
};

redpajama_set_name: RedPajamaGithub


text:
Q: Rewriting makechapterhead to include stuff on previous page I'm using the memoir class to typeset a book in which I want to start chapters with a picture on the left page and then on the right page "Chapter 1: Hello World" followed by text.  So I'm playing around with this test document and I can't figure out how to get the extra parameters to show up where I want them.  Once I get this figured out, I suppose I could substitute in \includegraphics{blah.png} for the "Foo Bar Baz" stuff.
\documentclass[openleft]{memoir}
\usepackage{lipsum}
\parindent=0pt

\title{Test}
\author{Joe Blow}

\makeatletter
\renewcommand{\@makechapterhead}[3]{%
  Foo: #1\\
  Bar: #2\\
  Baz: #3
  \newpage
  {
  \chapterheadstart
    \printchaptername \chapternamenum \printchapternum\\
    \printchaptertitle{\Huge #1}\\
    \afterchaptertitle
  }
}
\makeatother

\begin{document}
\maketitle
\tableofcontents

\chapter[hello world]{Hello\
World}{Tree}
\lipsum[1-5]

\chapter[hello plants]{Hello\
Plants}{Flowerpot}
\lipsum[6-10]
\end{document}

Instead, I get this on the left side (first chapter):
Foo: Hello World
Bar:
Baz:

Then on the right, I get the chapter header as expected.  The chapter name also shows up in the table of contents as expected.  But then in the bodies of the text, the first word is the second parameter in curly brackets.  For this example, I'd see "Tree" for the first word of the first chapter and "Flowerpot" for the first word of the second chapter.  Why did that parameter appear there?  How can I make that second parameter appear next to "Bar:" on the previous page?
Adding this MWE as requested by @peter-wilson
\documentclass[12pt]{memoir}
\usepackage{graphicx}
\usepackage{libertine}
\usepackage{lipsum}
\usepackage{hyperxmp}
\usepackage[pdfusetitle,colorlinks]{hyperref}

\parindent=0pt

\title{Test}
\author{Joe Blow}

\makeatletter
\hypersetup{%
  pdftitle={Test},
  pdfauthor={Joe Blow},
  bookmarksnumbered,
  pdfstartview={FitH},
  allcolors=black,
  pdfcopyright={Copyright 2020 by Joe Blow.  All rights deserved.},
  pdfinfo={
    {Copyright 2020 by Joe Blow.  All rights deserved.}
  }
}%
\makeatother

\makeatletter
\newcommand\chapimage[2]{
  \cleartoverso
  \thispagestyle{empty}
  \begin{center}
  \vspace*{\fill}
  \includegraphics[keepaspectratio=true,height=0.85\textheight]{#1}\par%
  \huge #2
  \vspace*{\fill}
  \end{center}
%  \clearpage
}
\makeatother

\makeatletter
\def\@makechapterhead#1{%
  {
  \chapterheadstart
    \printchaptername \chapternamenum \printchapternum\\
    \printchaptertitle{\Huge #1}\\
    \afterchaptertitle
  }
}
\makeatother

\begin{document}

\maketitle
\tableofcontents

\chapimage{tree}{The Tree}
\chapter[hello world]{Hello\
World}
\lipsum[1-15]

\chapimage{flowerpot}{The Flowerpot}
\chapter[hello plants]{Hello\
Plants}
\lipsum[16-20]
\end{document}

When built as a PDF with pdflatex, this is fine for print.  When presented as a PDF with hyperlinks, clicking on a chapter in the table of contents takes me not to the leading picture, but where "Chapter 1", "Chapter 2", and so on appear.  When I make it into an epub with tex4ebook -xs -f epub -c test.cfg test.tex, this effect is worse: the caption appears on a page by itself after the image and before the beginning of the chapter.
Here is a test.cfg file that's identical to what I've been using so far:
\Preamble{xhtml}
\Css{div.caption{text-align:center;}}
\Configure{float}{\csname par\endcsname\ShowPar}
{\ifvmode\IgnorePar\fi\EndP\HCode{
}}
{\ifvmode\IgnorePar\fi\EndP\HCode{
}\ShowPar}
\ConfigureEnv{figure}
{\IgnorePar\EndP\HCode{
\Hnewline}%
\bgroup \Configure{float}{\ShowPar}{}{}%
}
{\egroup\IgnorePar\EndP\HCode{
}\par}
{}{}

\Css{div.float, div.figure{margin-left:auto;margin-right:auto;}}

\Configure{writetoc}{\let\\\space}
\Configure{UniqueIdentifier}{Foo Bar Press}
\DeclareGraphicsExtensions{.png,.jpg,.gif}

\begin{document}
\EndPreamble

Now looking at the files within the epub, I see this at the bottom of testli1.html, which is where the table of contents is found:

The Tree

That inclusion of tree.png should be near the beginning of testch1.html.  In testch1.html I see this at the bottom:

The Flowerpot

That should appear instead near the beginning of testch2.html.
Now here's the top of testch1.html:
<title>1 Hello World</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta name="generator" content="TeX4ht (http://www.tug.org/tex4ht/)" />
<meta name="originator" content="TeX4ht (http://www.tug.org/tex4ht/)" />

<meta name="src" content="test.tex" />
<link rel="stylesheet" type="text/css" href="test.css" />

Chapter 1
Hello World

The image and caption should appear somewhere just before the

.

A: The problem is that tex4ebook break document into standalone HTML files at beginning of each chapter, so the \chapterimage is placed at the end of the previous chapter. I would redefine this command to just save the image address and caption. This information can be reused in the \chapter command. This ensures that the image is placed in the right file and displayed together with the chapter title.
Try the following configuration:
\Preamble{xhtml}
\makeatletter
\renewcommand\chapimage[2]{\def\chapimagesrc{#1}\def\chapimagedesc{#2}}
\Configure{chapter}{\ifvmode\IgnorePar\fi\EndP\HCode{
}% insert container element that will be used for
% linking from TOC
\ifdefined\chapimagesrc%
  \begin{center}%
  \includegraphics[keepaspectratio=true,height=0.85\textheight]{\chapimagesrc}\par%
  \HCode{}\chapimagedesc\HCode{}%
  \end{center}%
\global\let\chapimagesrc\@undefined%
\global\let\chapimagedesc\@undefined%
\fi%
}{}
   {\IgnorePar\EndP\HCode{
}%
    \if@mainmatter \TitleMark{\HCode{
}}\fi }
   {\HCode{

}\IgnoreIndent\par}
\Css{.chapimagedesc{font-size:2em;}}
\Css{h2.chapterHead{page-break-before:always;}}
\makeatother
\Configure{UniqueIdentifier}{Foo Bar Press}
\Css{div.caption{text-align:center;}}
\Configure{float}{\csname par\endcsname\ShowPar}
{\ifvmode\IgnorePar\fi\EndP\HCode{
}}
{\ifvmode\IgnorePar\fi\EndP\HCode{
}\ShowPar}
\ConfigureEnv{figure}
{\IgnorePar\EndP\HCode{
\Hnewline}%
\bgroup \Configure{float}{\ShowPar}{}{}%
}
{\egroup\IgnorePar\EndP\HCode{
}\par}
{}{}

\Css{div.float, div.figure{margin-left:auto;margin-right:auto;}}

\Configure{writetoc}{\let\\\space}
\Configure{UniqueIdentifier}{Foo Bar Press}
\DeclareGraphicsExtensions{.png,.jpg,.gif}

\begin{document}
\EndPreamble

The important part is this:
\renewcommand\chapimage[2]{\def\chapimagesrc{#1}\def\chapimagedesc{#2}}
\Configure{chapter}{\ifvmode\IgnorePar\fi\EndP\HCode{
}% insert container element that will be used for
% linking from TOC
\ifdefined\chapimagesrc%
  \begin{center}%
  \includegraphics[keepaspectratio=true,height=0.85\textheight]{\chapimagesrc}\par%
  \HCode{}\chapimagedesc\HCode{}%
  \end{center}%
\global\let\chapimagesrc\@undefined%
\global\let\chapimagedesc\@undefined%
\fi%
}{}
   {\IgnorePar\EndP\HCode{
}%
    \if@mainmatter \TitleMark{\HCode{
}}\fi }
   {\HCode{

}\IgnoreIndent\par}
\Css{.chapimagedesc{font-size:2em;}}
    \renewcommand\chapimage[2]{\def\chapimagesrc{#1}\def\chapimagedesc{#2}}
\Configure{chapter}{\ifvmode\IgnorePar\fi\EndP\HCode{
}% insert container element that will be used for
% linking from TOC
\ifdefined\chapimagesrc%
  \begin{center}%
  \includegraphics[keepaspectratio=true,height=0.85\textheight]{\chapimagesrc}\par%
  \HCode{}\chapimagedesc\HCode{}%
  \end{center}%
\global\let\chapimagesrc\@undefined%
\global\let\chapimagedesc\@undefined%
\fi%
}{}
   {\IgnorePar\EndP\HCode{
}%
    \if@mainmatter \TitleMark{\HCode{
}}\fi }
   {\HCode{

}\IgnoreIndent\par}
\Css{.chapimagedesc{font-size:2em;}}
\Css{h2.chapterHead{page-break-before:always;}}

The \chapterimage command defines two macros, \chapimagesrc and \chapimagedesc that contains the current image filename and caption. This information is included at the beginning of the chapter using \Configure{chapter}.
The chapter image will be placed on separate page thanks to \Css{h2.chapterHead{page-break-before:always;}}.
Because TOC links directly to the chapter title, it is necessary to move the link destination before the chapter image. This can be achieved using the following build file:
local domfilter = require "make4ht-domfilter"

local process = domfilter { function(dom)
  -- process headers
  for _,  header in ipairs(dom:query_selector "div.chapter-header") do
    -- find chapter toc id
    for _, a in ipairs(header:query_selector "h2 a") do
      local id = a:get_attribute("id")
      if id then
        -- move the
        a:set_attribute("id", nil)
        header:set_attribute("id", id)
      end
    end
  end
  return dom
end}

Make:match("html$", process)

This is the result:

A: Much simpler to create a macro for the left picture page and leave \chapter as is, then you don't have to worry about the organisation of 6 arguments --- 4 required and 2 optional.
% prechapprob.tex  SE 525098 Picture before chapter
\documentclass{memoir}
\usepackage{lipsum}

\newcommand{\prechap}[3]{%  % put on the next even page
  \cleartoevenpage
  \thispagestyle{empty}
  Foo: #1 \\
  Bar: #2 \\
  Baz: #3}

\begin{document}
\tableofcontents

\prechap{Hello}{World}{Tree}
\chapter{Tree}
\lipsum[1-5]

\prechap{Hello}{Earth}{Plants}
\chapter{Flowerpot}
\lipsum[6-10]

\end{document}

redpajama_set_name: RedPajamaStackExchange


languages using Oracle Database technology. In this course participants learn the concepts of relational databases.
report aggregated data is also included.
practice reinforce the fundamental concepts.
This is appropriate for a 10g and 11g audience. There are minor changes between 10g and 11g features in SQL.
Use PL/SQL programming constructs and conditionally control code flow (loops, control structures, and explicit cursors).
Use cursors to process rows.
Identify the major structural components of the Oracle Database 11g.
Retrieve row and column data from tables with the SELECT statement.
Employ SQL functions to generate and retrieve customized data.
Display data from multiple tables using the ANSI SQL 99 JOIN syntax.
Create reports of aggregated data.
Run data definition language (DDL) statements to create and manage schema objects.
Run data manipulation statements (DML) to update data in the Oracle Database.
Design PL/SQL anonymous block that execute efficiently.


text:
Exploring the Temples in Bagan, Myanmar – Part 1
If you're traveling to Myanmar, at some point you'll find yourself at the Bagan Archaeological Zone and boy, will you be blown away! Thousands of temples, stupas, and pagodas within a 20 square mile radius, this site is the key to experiencing the true Myanmar and understanding the religious devotion of its people. Although your K25,000 ($18) entry fee will be valid for five days, you won't get time to visit every single monument. So how do you choose which ones to see? Each religious site has a unique story to tell or provides views unlike anywhere else in the world!
To help you decide and make the most of your time here are our top picks for the best temples in Bagan and which ones to visit.
1. Ananda Temple
The most beautiful and best-preserved temple in Bagan, Ananda Temple is one that lives up to its name! The architecture itself is reason enough to visit, from its glazed tile floors and glowing golden leaf exterior that makes it look white compared to the other reddish tinted temples.
However, it's the remarkable Buddha sculptures that make this temple unique; standing face-to-face with the Buddhas they appear to be scowling, whilst when you continue to step back further and further they begin to smile until they are completely grinning.
In late December to early January, there's a huge festival on the Ananda Pagoda to celebrate the lives of local farmers. Expect mass camping on the plains from surrounding villages, local entertainment, and formal alms ceremonies!
2. Gawdawpalin Temple
One of the largest shrines of Bagan, the Gawdawpalin temple is famous for its history as the "temple of forgiveness." Legend has it that the King committed crimes against his ancestors and in return was punished with blindness. This temple was then constructed to worship his ancestors in atonement and his sight was miraculously returned! As well as this pretty cool background, this double-storeyed temple is also fun to explore. Check out the secret passages on the ground floor that were revealed after an earthquake in 1975.
3. Dhammayangyi Temple
The 'mama' of all temples in Bagan, Dhammayangyi Temple is impressive in both size and history. You can see its imposing pyramid structure from a distance or by ballooning over Bagan, but you will have to venture inside to experience its full effect. Full of long narrow corridors with extremely high ceilings, you will feel insignificant walking through this mammoth monument. Built by the demands of a tyrant King who killed his own father, brother, and queen, as well as countless slaves, locals believe the temple is haunted by his sins.
4. Sein Nyet Sister Temples
Although not the biggest or tallest or architecturally beautiful, the Sein Nyet Sister Temples are the perfect place to go to avoid the tourist crowds and appreciate the sacred temples in a natural setting. Surrounded by a low brick wall, the monuments stand by slightly overgrown grass ready for you to take them as they are.
Source: https://www.adventureinyou.com/myanmar/bagan-temples-best-temples-and-pagodas

redpajama_set_name: RedPajamaCommonCrawl


text:
Photo: Gregory Urquiaga/UC Davis
Going For Zero
by Trevor Stewart | May 1, 2018 | Environment, On Campus, Spring/Summer 2018
UC Davis' sustainability research doesn't just play out in the classroom — it's being put into practice on campus and could lead to the university becoming the world's first zero-carbon college campus.
And it won't just benefit the campus — UC Davis' leadership in energy efficiency, zero-net energy and climate neutrality could make it the go-to model of sustainability for campuses and small cities alike, said Kurt Kornbluth, Ph.D. '08, an assistant adjunct professor in the Department of Biological and Agricultural Engineering.
"We're going to show people how to do both successfully, with a high return on investment and substantial positive impact on the environment," said Kornbluth, who also is the founder and director of the UC Davis Program for International Energy Technology and D-Lab.
The University of California system is committed to emitting zero-net greenhouse gases by 2025, and UC Davis is leading the way by already functioning like a living lab for applied sustainability and climate research. For example, its TherMOOstat app allows faculty, staff and students to report room temperatures in campus buildings to more efficiently heat and cool spaces.
Another example is Kornbluth's "The Path to Zero Net Energy" course, which gives students the opportunity to research possible solutions for how to reduce energy usage on campus. These ideas are submitted to the class by various departments, referred to as clients. Students perform a feasibility study, delivering recommendations on potential solutions to save energy and reduce greenhouse gases.
Those clients aren't the only entities turning to UC Davis for help. The city of Davis works with UC Davis experts, sharing information and research findings. And Aalborg University in Denmark, a country renowned for having one of the largest amounts of renewable energy on its electrical grid, asked Kornbluth and his team to share their ideas on creating a zero-net energy campus.
"Five years from today we will have made significant progress toward this model campus," Kornbluth said, noting that the major obstacle is a lack of funding. "This initiative [isn't just] bringing carbon neutrality, [but also] the process of creating this model sustainable campus, and better quality of life, which we can share with the world."
This is one of several Big Ideas, forward-thinking, interdisciplinary programs and projects that will build upon the strengths of UC Davis to positively impact the world for generations to come. Learn more at bigideas.ucdavis.edu.
PreviousBrand Builder
NextMarching Forward
Meet the Oceanographer
A Fresh Look at Policing
Marching Forward
Three Questions for Three New Deans
In Another Class
Riding the New Electric Buses