Atlantic recording artist Meg Myers has announced an extensive headline tour that will kick off inNew York City on May 11th at The Studio At Webster Hall. Meg recently released her much anticipated new single "Sorry" from her upcoming debut album of the same name which is scheduled for release this summer.
Myers' sophomore EP, "MAKE A SHADOW," was released in early 2014 to widespread acclaim, withStereogum declaring the EP's startling single, "Desire," to be "something that is as sweet as it is unsettling." Led by tastemaker KRBZ"The Buzz" in Kansas City, "Desire" proved a Top 20 favorite at Alternative radio outlets nationwide, while the track's evocative companion video – hailed byNoisey as "simply stunning" – has earned more than 2 million views and counting at Myers' official YouTube channel,www.youtube.com/meginthedark. In addition, the EP's "The Morning After" and "Make A Shadow" both reached the top 5 on Hype Machine's "Most Popular" chart, with the latter track ranked among Amazon's "50 Best Songs of 2014."
Acclaimed as a provocative and dynamic live act, Myers spent much of the next year on the road, headlining clubs, supporting such artists as Royal Blood, Broods, and the one and only Pixies, and stealing the show at an array of top festivals.Rolling Stone praised Myers as one of the "Best Things We Saw At Lollapalooza," while theNew York Times applauded her set at NYC's Governors Ball for its "seething hard-rock riffs like early P.J. Harvey" and Myers' "imprecations at the destructive power of love and desire."
Myers also received attention from a variety of high profile media outlets, with highlights including features inBillboard, Teen Vogue, InStyle, and L.A. Weekly, not to mention her national TV debut live performance on NBC'sLast Call with Carson Daly (streaming now at www.nbc.com/last-call-with-carson-daly/video/meg-myers/n4437).


text:
#include "config.h"
#include "web/PopupContainer.h"

#include "core/dom/Document.h"
#include "core/frame/FrameHost.h"
#include "core/frame/FrameView.h"
#include "core/frame/LocalFrame.h"
#include "core/html/forms/PopupMenuClient.h"
#include "core/page/Chrome.h"
#include "core/page/ChromeClient.h"
#include "core/page/Page.h"
#include "core/paint/TransformRecorder.h"
#include "platform/PlatformGestureEvent.h"
#include "platform/PlatformKeyboardEvent.h"
#include "platform/PlatformMouseEvent.h"
#include "platform/PlatformTouchEvent.h"
#include "platform/PlatformWheelEvent.h"
#include "platform/UserGestureIndicator.h"
#include "platform/geometry/IntRect.h"
#include "platform/graphics/GraphicsContext.h"
#include "platform/graphics/paint/DrawingRecorder.h"
#include "public/web/WebPopupMenuInfo.h"
#include "public/web/WebPopupType.h"
#include "public/web/WebViewClient.h"
#include "web/PopupContainerClient.h"
#include "web/WebPopupMenuImpl.h"
#include "web/WebViewImpl.h"
#include <algorithm>
#include <limits>

namespace blink {

static const int borderSize = 1;

static PlatformMouseEvent constructRelativeMouseEvent(const PlatformMouseEvent& e, PopupContainer* parent, PopupListBox* child)
{
    IntPoint pos = parent->convertSelfToChild(child, e.position());

    // FIXME: This is a horrible hack since PlatformMouseEvent has no setters for x/y.
    PlatformMouseEvent relativeEvent = e;
    IntPoint& relativePos = const_cast<IntPoint&>(relativeEvent.position());
    relativePos.setX(pos.x());
    relativePos.setY(pos.y());
    return relativeEvent;
}

static PlatformWheelEvent constructRelativeWheelEvent(const PlatformWheelEvent& e, PopupContainer* parent, PopupListBox* child)
{
    IntPoint pos = parent->convertSelfToChild(child, e.position());

    // FIXME: This is a horrible hack since PlatformWheelEvent has no setters for x/y.
    PlatformWheelEvent relativeEvent = e;
    IntPoint& relativePos = const_cast<IntPoint&>(relativeEvent.position());
    relativePos.setX(pos.x());
    relativePos.setY(pos.y());
    return relativeEvent;
}

// static
PassRefPtrWillBeRawPtr<PopupContainer> PopupContainer::create(PopupMenuClient* client, bool deviceSupportsTouch)
{
    return adoptRefWillBeNoop(new PopupContainer(client, deviceSupportsTouch));
}

PopupContainer::PopupContainer(PopupMenuClient* client, bool deviceSupportsTouch)
    : m_listBox(PopupListBox::create(client, deviceSupportsTouch, this))
    , m_popupOpen(false)
    , m_client(0)
{
}

PopupContainer::~PopupContainer()
{
#if !ENABLE(OILPAN)
    if (m_listBox->parent())
        m_listBox->setParent(0);
#endif
}

DEFINE_TRACE(PopupContainer)
{
    visitor->trace(m_frameView);
    visitor->trace(m_listBox);
    Widget::trace(visitor);
}

IntRect PopupContainer::layoutAndCalculateWidgetRectInternal(IntRect widgetRectInScreen, int targetControlHeight, const IntRect& windowRect, const IntRect& screen, bool isRTL, const int rtlOffset, const int verticalOffset, const IntSize& transformOffset, PopupContent* listBox, bool& needToResizeView)
{
    ASSERT(listBox);
    if (windowRect.x() >= screen.x() && windowRect.maxX() <= screen.maxX() && (widgetRectInScreen.x() < screen.x() || widgetRectInScreen.maxX() > screen.maxX())) {
        // First, inverse the popup alignment if it does not fit the screen -
        // this might fix things (or make them better).
        IntRect inverseWidgetRectInScreen = widgetRectInScreen;
        inverseWidgetRectInScreen.setX(inverseWidgetRectInScreen.x() + (isRTL ? -rtlOffset : rtlOffset));
        inverseWidgetRectInScreen.setY(inverseWidgetRectInScreen.y() + (isRTL ? -verticalOffset : verticalOffset));
        unsigned originalCutoff = std::max(screen.x() - widgetRectInScreen.x(), 0) + std::max(widgetRectInScreen.maxX() - screen.maxX(), 0);
        unsigned inverseCutoff = std::max(screen.x() - inverseWidgetRectInScreen.x(), 0) + std::max(inverseWidgetRectInScreen.maxX() - screen.maxX(), 0);

        // Accept the inverse popup alignment if the trimmed content gets
        // shorter than that in the original alignment case.
        if (inverseCutoff < originalCutoff)
            widgetRectInScreen = inverseWidgetRectInScreen;

        if (widgetRectInScreen.x() < screen.x()) {
            widgetRectInScreen.setWidth(widgetRectInScreen.maxX() - screen.x());
            widgetRectInScreen.setX(screen.x());
            listBox->setMaxWidthAndLayout(std::max(widgetRectInScreen.width() - borderSize * 2, 0));
        } else if (widgetRectInScreen.maxX() > screen.maxX()) {
            widgetRectInScreen.setWidth(screen.maxX() - widgetRectInScreen.x());
            listBox->setMaxWidthAndLayout(std::max(widgetRectInScreen.width() - borderSize * 2, 0));
        }
    }

    // Calculate Y axis size.
    if (widgetRectInScreen.maxY() > static_cast<int>(screen.maxY())) {
        if (widgetRectInScreen.y() - widgetRectInScreen.height() - targetControlHeight - transformOffset.height() > 0) {
            // There is enough room to open upwards.
            widgetRectInScreen.move(-transformOffset.width(), -(widgetRectInScreen.height() + targetControlHeight + transformOffset.height()));
        } else {
            // Figure whether upwards or downwards has more room and set the
            // maximum number of items.
            int spaceAbove = widgetRectInScreen.y() - targetControlHeight + transformOffset.height();
            int spaceBelow = screen.maxY() - widgetRectInScreen.y();
            if (spaceAbove > spaceBelow)
                listBox->setMaxHeight(spaceAbove);
            else
                listBox->setMaxHeight(spaceBelow);
            listBox->layout();
            needToResizeView = true;
            widgetRectInScreen.setHeight(listBox->popupContentHeight() + borderSize * 2);
            // Move WebWidget upwards if necessary.
            if (spaceAbove > spaceBelow)
                widgetRectInScreen.move(-transformOffset.width(), -(widgetRectInScreen.height() + targetControlHeight + transformOffset.height()));
        }
    }
    return widgetRectInScreen;
}

IntRect PopupContainer::layoutAndCalculateWidgetRect(int targetControlHeight, const IntSize& transformOffset, const IntPoint& popupInitialCoordinate)
{
    // Reset the max width and height to their default values, they will be
    // recomputed below if necessary.
    m_listBox->setMaxHeight(PopupListBox::defaultMaxHeight);
    m_listBox->setMaxWidth(std::numeric_limits<int>::max());

    // Lay everything out to figure out our preferred size, then tell the view's
    // WidgetClient about it. It should assign us a client.
    m_listBox->layout();
    fitToListBox();
    bool isRTL = this->isRTL();

    // Compute the starting x-axis for a normal RTL or right-aligned LTR
    // dropdown. For those, the right edge of dropdown box should be aligned
    // with the right edge of <select>/<input> element box, and the dropdown box
    // should be expanded to the left if more space is needed.
    // m_originalFrameRect.width() is the width of the target <select>/<input>
    // element.
    int rtlOffset = m_controlPosition.p2().x() - m_controlPosition.p1().x() - (m_listBox->width() + borderSize * 2);
    int rightOffset = isRTL ? rtlOffset : 0;

    // Compute the y-axis offset between the bottom left and bottom right
    // points. If the <select>/<input> is transformed, they are not the same.
    int verticalOffset = - m_controlPosition.p4().y() + m_controlPosition.p3().y();
    int verticalForRTLOffset = isRTL ? verticalOffset : 0;

    // Assume m_listBox size is already calculated.
    IntSize targetSize(m_listBox->width() + borderSize * 2, m_listBox->height() + borderSize * 2);

    IntRect widgetRectInScreen;
    // If the popup would extend past the bottom of the screen, open upwards
    // instead.
    IntRect screen = chromeClient().screenInfo().availableRect;
    // Use popupInitialCoordinate.x() + rightOffset because RTL position
    // needs to be considered.
    float pageScaleFactor = m_frameView->frame().page()->pageScaleFactor();
    int popupX = round((popupInitialCoordinate.x() + rightOffset) * pageScaleFactor);
    int popupY = round((popupInitialCoordinate.y() + verticalForRTLOffset) * pageScaleFactor);
    widgetRectInScreen = chromeClient().viewportToScreen(IntRect(popupX, popupY, targetSize.width(), targetSize.height()));

    // If we have multiple screens and the browser rect is in one screen, we
    // have to clip the window width to the screen width.
    // When clipping, we also need to set a maximum width for the list box.
    IntRect windowRect = chromeClient().windowRect();

    bool needToResizeView = false;
    widgetRectInScreen = layoutAndCalculateWidgetRectInternal(widgetRectInScreen, targetControlHeight, windowRect, screen, isRTL, rtlOffset, verticalOffset, transformOffset, m_listBox.get(), needToResizeView);
    if (needToResizeView)
        fitToListBox();

    return widgetRectInScreen;
}

void PopupContainer::showPopup(FrameView* view)
{
    m_frameView = view;
    m_listBox->m_focusedElement = m_frameView->frame().document()->focusedElement();

    IntSize transformOffset(m_controlPosition.p4().x() - m_controlPosition.p1().x(), m_controlPosition.p4().y() - m_controlPosition.p1().y() - m_controlSize.height());
    popupOpened(layoutAndCalculateWidgetRect(m_controlSize.height(), transformOffset, roundedIntPoint(m_controlPosition.p4())));
    m_popupOpen = true;

    if (!m_listBox->parent())
        m_listBox->setParent(this);

    m_listBox->scrollToRevealSelection();

    invalidate();
}

void PopupContainer::hidePopup()
{
    m_listBox->cancel();
}

void PopupContainer::notifyPopupHidden()
{
    if (!m_popupOpen)
        return;
    m_popupOpen = false;

    // With Oilpan, we cannot assume that the FrameView's LocalFrame's
    // page is still available, as the LocalFrame itself may have been
    // detached from its FrameHost by now.
    //
    // So, if a popup menu is left in an open/shown state when
    // finalized, the PopupMenu implementation of this container's
    // listbox will hide itself when destructed, delivering the
    // notifyPopupHidden() notification in the process & ending up here.
    // If the LocalFrame has been detached already -- done when its
    // HTMLFrameOwnerElement frame owner is detached as part of being
    // torn down -- the connection to the FrameHost has been snipped &
    // there's no page. Hence the null check.
    //
    // In a non-Oilpan setting, the LayoutMenuList that controls/owns
    // the PopupMenuChromium object and this PopupContainer is torn
    // down and destructed before the frame and frame owner, hence the
    // page will always be available in that setting and this will
    // not be an issue.
    if (WebViewImpl* webView = WebViewImpl::fromPage(m_frameView->frame().page()))
        webView->popupClosed(this);
}

void PopupContainer::fitToListBox()
{
    // Place the listbox within our border.
    m_listBox->move(borderSize, borderSize);

    // Size ourselves to contain listbox + border.
    resize(m_listBox->width() + borderSize * 2, m_listBox->height() + borderSize * 2);
    invalidate();
}

bool PopupContainer::handleMouseDownEvent(const PlatformMouseEvent& event)
{
    UserGestureIndicator gestureIndicator(DefinitelyProcessingNewUserGesture);
    return m_listBox->handleMouseDownEvent(
        constructRelativeMouseEvent(event, this, m_listBox.get()));
}

bool PopupContainer::handleMouseMoveEvent(const PlatformMouseEvent& event)
{
    UserGestureIndicator gestureIndicator(DefinitelyProcessingNewUserGesture);
    return m_listBox->handleMouseMoveEvent(
        constructRelativeMouseEvent(event, this, m_listBox.get()));
}

bool PopupContainer::handleMouseReleaseEvent(const PlatformMouseEvent& event)
{
    RefPtrWillBeRawPtr<PopupContainer> protect(this);
    UserGestureIndicator gestureIndicator(DefinitelyProcessingNewUserGesture);
    return m_listBox->handleMouseReleaseEvent(
        constructRelativeMouseEvent(event, this, m_listBox.get()));
}

bool PopupContainer::handleWheelEvent(const PlatformWheelEvent& event)
{
    UserGestureIndicator gestureIndicator(DefinitelyProcessingNewUserGesture);
    return m_listBox->handleWheelEvent(
        constructRelativeWheelEvent(event, this, m_listBox.get()));
}

bool PopupContainer::handleTouchEvent(const PlatformTouchEvent&)
{
    return false;
}

// FIXME: Refactor this code to share functionality with
// EventHandler::handleGestureEvent.
bool PopupContainer::handleGestureEvent(const PlatformGestureEvent& gestureEvent)
{
    switch (gestureEvent.type()) {
    case PlatformEvent::GestureTap: {
        PlatformMouseEvent fakeMouseMove(gestureEvent.position(), gestureEvent.globalPosition(), NoButton, PlatformEvent::MouseMoved, /* clickCount */ 1, gestureEvent.shiftKey(), gestureEvent.ctrlKey(), gestureEvent.altKey(), gestureEvent.metaKey(), PlatformMouseEvent::FromTouch, gestureEvent.timestamp());
        PlatformMouseEvent fakeMouseDown(gestureEvent.position(), gestureEvent.globalPosition(), LeftButton, PlatformEvent::MousePressed, /* clickCount */ 1, gestureEvent.shiftKey(), gestureEvent.ctrlKey(), gestureEvent.altKey(), gestureEvent.metaKey(), PlatformMouseEvent::FromTouch, gestureEvent.timestamp());
        PlatformMouseEvent fakeMouseUp(gestureEvent.position(), gestureEvent.globalPosition(), LeftButton, PlatformEvent::MouseReleased, /* clickCount */ 1, gestureEvent.shiftKey(), gestureEvent.ctrlKey(), gestureEvent.altKey(), gestureEvent.metaKey(), PlatformMouseEvent::FromTouch, gestureEvent.timestamp());
        // handleMouseMoveEvent(fakeMouseMove);
        handleMouseDownEvent(fakeMouseDown);
        handleMouseReleaseEvent(fakeMouseUp);
        return true;
    }
    case PlatformEvent::GestureScrollUpdate: {
        PlatformWheelEvent syntheticWheelEvent(gestureEvent.position(), gestureEvent.globalPosition(), gestureEvent.deltaX(), gestureEvent.deltaY(), gestureEvent.deltaX() / 120.0f, gestureEvent.deltaY() / 120.0f, ScrollByPixelWheelEvent, gestureEvent.shiftKey(), gestureEvent.ctrlKey(), gestureEvent.altKey(), gestureEvent.metaKey());
        handleWheelEvent(syntheticWheelEvent);
        return true;
    }
    case PlatformEvent::GestureScrollBegin:
    case PlatformEvent::GestureScrollEnd:
    case PlatformEvent::GestureTapDown:
    case PlatformEvent::GestureShowPress:
        break;
    default:
        ASSERT_NOT_REACHED();
    }
    return false;
}

bool PopupContainer::handleKeyEvent(const PlatformKeyboardEvent& event)
{
    UserGestureIndicator gestureIndicator(DefinitelyProcessingNewUserGesture);
    return m_listBox->handleKeyEvent(event);
}

void PopupContainer::hide()
{
    m_listBox->cancel();
}

void PopupContainer::paint(GraphicsContext* gc, const IntRect& paintRect)
{
    TransformRecorder transformRecorder(*gc, *this, AffineTransform::translation(x(),  y()));
    IntRect adjustedPaintRect = intersection(paintRect, frameRect());
    adjustedPaintRect.moveBy(-location());

    m_listBox->paint(gc, adjustedPaintRect);
    paintBorder(gc, adjustedPaintRect);
}

void PopupContainer::paintBorder(GraphicsContext* gc, const IntRect& rect)
{
    DrawingRecorder drawingRecorder(*gc, *this, DisplayItem::PopupContainerBorder, boundsRect());
    if (drawingRecorder.canUseCachedDrawing())
        return;

    // FIXME: Where do we get the border color from?
    Color borderColor(127, 157, 185);

    gc->setStrokeStyle(SolidStroke);
    gc->setStrokeThickness(borderSize);
    gc->setStrokeColor(borderColor);

    FloatRect borderRect(boundsRect());
    borderRect.inflate(-gc->strokeThickness() / 2);
    gc->strokeRect(borderRect);
}

ChromeClient& PopupContainer::chromeClient()
{
    return m_frameView->frame().page()->chrome().client();
}

void PopupContainer::showInRect(const FloatQuad& controlPosition, const IntSize& controlSize, FrameView* v, int index)
{
    // The controlSize is the size of the select box. It's usually larger than
    // we need. Subtract border size so that usually the container will be
    // displayed exactly the same width as the select box.
    m_listBox->setBaseWidth(std::max(controlSize.width() - borderSize * 2, 0));
    m_listBox->setSelectedIndex(m_listBox->m_popupClient->selectedIndex());
    m_listBox->updateFromElement();

    // We set the selected item in updateFromElement(), and disregard the
    // index passed into this function (same as Webkit's PopupMenuWin.cpp)
    // FIXME: make sure this is correct, and add an assertion.
    // ASSERT(popupWindow(popup)->listBox()->selectedIndex() == index);

    // Save and convert the controlPosition to main window coords. Each point is converted separately
    // to window coordinates because the control could be in a transformed webview and then each point
    // would be transformed by a different delta.
    m_controlPosition.setP1(v->contentsToRootFrame(IntPoint(controlPosition.p1().x(), controlPosition.p1().y())));
    m_controlPosition.setP2(v->contentsToRootFrame(IntPoint(controlPosition.p2().x(), controlPosition.p2().y())));
    m_controlPosition.setP3(v->contentsToRootFrame(IntPoint(controlPosition.p3().x(), controlPosition.p3().y())));
    m_controlPosition.setP4(v->contentsToRootFrame(IntPoint(controlPosition.p4().x(), controlPosition.p4().y())));

    FloatRect controlBounds = m_controlPosition.boundingBox();
    controlBounds = v->page()->frameHost().pinchViewport().mainViewToViewportCSSPixels(controlBounds);
    m_controlPosition = controlBounds;

    m_controlSize = controlSize;

    // Position at (0, 0) since the frameRect().location() is relative to the
    // parent WebWidget.
    setFrameRect(IntRect(IntPoint(), controlSize));
    showPopup(v);
}

inline bool PopupContainer::isRTL() const
{
    return m_listBox->m_popupClient->menuStyle().textDirection() == RTL;
}

int PopupContainer::selectedIndex() const
{
    return m_listBox->selectedIndex();
}

int PopupContainer::menuItemHeight() const
{
    return m_listBox->getRowHeight(0);
}

int PopupContainer::menuItemFontSize() const
{
    return m_listBox->getRowFont(0).fontDescription().computedSize();
}

PopupMenuStyle PopupContainer::menuStyle() const
{
    return m_listBox->m_popupClient->menuStyle();
}

String PopupContainer::getSelectedItemToolTip()
{
    // We cannot use m_popupClient->selectedIndex() to choose tooltip message,
    // because the selectedIndex() might return final selected index, not
    // hovering selection.
    return m_listBox->m_popupClient->itemToolTip(m_listBox->m_selectedIndex);
}

void PopupContainer::popupOpened(const IntRect& bounds)
{
    WebViewImpl* webView = WebViewImpl::fromPage(m_frameView->frame().page());
    if (!webView->client())
        return;

    WebWidget* webwidget = webView->client()->createPopupMenu(WebPopupTypeSelect);
    if (!webwidget)
        return;
    // We only notify when the WebView has to handle the popup, as when
    // the popup is handled externally, the fact that a popup is showing is
    // transparent to the WebView.
    webView->popupOpened(this);
    toWebPopupMenuImpl(webwidget)->initialize(this, bounds);
}

void PopupContainer::invalidateRect(const IntRect& rect)
{
    if (HostWindow* h = hostWindow())
        h->invalidateRect(rect);
    if (m_client)
        m_client->invalidateDisplayItemClient(displayItemClient());
}

HostWindow* PopupContainer::hostWindow() const
{
    return m_client;
}

IntPoint PopupContainer::convertChildToSelf(const Widget* child, const IntPoint& point) const
{
    IntPoint newPoint = point;
    newPoint.moveBy(child->location());
    return newPoint;
}

IntPoint PopupContainer::convertSelfToChild(const Widget* child, const IntPoint& point) const
{
    IntPoint newPoint = point;
    newPoint.moveBy(-child->location());
    return newPoint;
}

} // namespace blink

redpajama_set_name: RedPajamaGithub


text:
Associate of Science in Business
Associate of Science in Communication
Associate of Science in Computer Science
Bachelor of Arts in Communication
Bachelor of Science in Business
Management / Leadership
Sales & Sales Management
Bachelor of Science in Business Technology Development
Business / Entrepreneurial Business Certificate
Business / Information Technology Certification
Business / Business Administration Certificate
Business / Management Certificate
Business / Organizational Management Certificate
Business / Operations & Leadership Certificate
FULL-STACK Development Certificate
Career Training Division
Full Stack Development Certificate
Bottega Tech
High School Transcript Requests
Student Identity Verification
Refunds & Calculations
Application to Graduate
Student Grievance Form
Program Changes, Withdrawals, and Extensions
Canvas Instructions
Partner Affiliations
The Congresses
Withdrawal from programs and cancellation of classes result in a percentage of tuition being refunded, depending on the week of cancellation/withdrawal and the number of courses from which students withdraws.
University Withdrawal and Refund Policy
Undergraduate: Per term, students are charged $897 for tuition plus a $50 non-refundable technology fee (regardless of the number of courses enrolled for the term). Students seeking a full programmatic withdrawal for the term will be eligible for a percentage of tuition paid for the term corresponding with the week of withdrawal, based on tuition previously paid in advance or owed for the term.
Graduate: Per term, students are charged $1497 for tuition plus a $50 non-refundable technology fee (regardless of the number of courses enrolled per term). Students seeking a full programmatic withdrawal for the term will be eligible for a percentage of tuition paid for the term corresponding with the week of withdrawal, based on tuition previously paid in advance or owed for the term.
Students have five days to withdraw after signing the enrollment agreement to receive 100% refund of all monies paid to the University. For a per course withdrawal, the student will be eligible for a percentage of tuition refund corresponding with the week of withdrawal based on the per term tuition divided by the total number of courses enrolled for that term. If a student seeks to withdraw from additional courses for the same term, the student will continue to be eligible for a tuition refund based on the same initial number of course enrollments in the same term, providing withdrawal is requested prior to the 42nd day of the term.
BU requires that a student must inform the Registrar in a documented manner (withdrawal form, mail, email, fax, or other written forms of communication) or by phone. Tuition refunds are made within 30 days of notice of withdrawal. The student is notified if a balance is due to the University. Technology fees are non-refundable. The percentage of tuition minus the technology fee is returned to the student after each week based on the schedule below and is calculated on a per course basis.
Cancellation Prior to the Commencement of Classes: A student will be entitled to a full refund if the student cancels his/her enrollment within five days of signing the University Enrollment Agreement.
Cancellation After the Commencement of Classes: The first day of class through Sunday of week one 11:59 p.m. MST is considered the trial period for all new, reentry, and graduate reenrolled students. If a new, reentry or graduate reenrolled student attends after the first day of courses but withdraws before Monday of week two at 12:00 a.m. MST, the student will be unregistered from his/her courses and will be entitled to a refund of all tuition and applicable fees.
Withdrawal from the University in the first seven weeks of the Semester: (12-week term)
For all other students, the table below lists the percentage of tuition that will be refunded to students who cancel their enrollment prior to the end of a term.
Cancellation/Withdrawal Date Percent Tuition Refund
Week 1 100%
Week 2 80%
No refund after the 42nd calendar day
Withdrawal from the University for 10-month Part-time Full Stack Development Program:
Table 2 – Refund Percentage Schedule
Cancellation Date Refunded % of $7500 Tuition
0%-25% of Coding Foundations 100%
25%-100% of Coding Foundations 93%
Month 2 or completion of 20% of the FSDC program 80%
No refund after month 6
Sample Refund Calculation:
Refunds, if applicable, will be made by the Accounting Department within 30 days of the student's withdrawal. The withdrawal becomes official when the student receives a final written notification and a final statement from the University. Before the university will release any transcripts, any balance due must be paid in full by the student. If the student has any questions about the status of his/her refund or about the statement balance, please contact the Accounting Department at accounts@bottega.edu.
Examples (in USD):
Margaret began class in the Bachelor's program and paid $947 for her term tuition, which includes the $50 registration fee. She was scheduled for three courses. Three days later she withdrew from the program, during the "5 day cooling off period", and received a full refund equaling $947.
Timothy signed his student enrollment agreement for the Bachelor's program and paid his $947 tuition and fees, signing up for two courses. In the second week, he withdrew from his program through an email sent to the Registrar. His technology fee of $50 was not refundable. He was refunded 80% of the $897 ($947 – $50 technology fee) he paid, equaling a total of $717.60.
Mary began class in the Bachelor's program and paid $947 for her term tuition and technology fee. She was scheduled for three courses. In the third week, she formally withdrew from two of the three courses. Her technology fee of $50 was not refundable. She was refunded $897 divided by 3 (# of courses scheduled in the term) x 2 (courses withdrawing) x 70% (percentage for that week of withdrawal). Mary received a tuition refund of $418.60.
Kristina began class in the Master's program and paid her tuition of $1547 for the term, $1497 plus $50 in technology fees. She was scheduled for two courses. In the 8th week, she formally withdrew from one of her courses. Her technology fee of $50 was not refundable and she failed to get any refund because the withdrawal from the course was after the 42nd day of the term.
Daniel began class in the bachelor's program and paid his tuition of $947 tuition plus technology fee for the term. He was scheduled for three courses. In the third week, he withdrew from one course and in the fifth week withdrew from a second course. Daniel's technology fee of $50 was not refundable. He is eligible for a refund: ($897 divided by 3 (courses) x 1 (course withdrawal) x 70% equaling $209.30). Daniel, also withdrew from his second course in the 5th week, calculated at $897 divided by 3 (courses) x 1 (course withdrawal) x 50% equaling a 2nd refund of $149.50.
California: The State of California established the Student Tuition Recovery Fund (STRF) to relieve or mitigate economic loss suffered by a student in an educational program at a qualifying institution, who is or was a California resident while enrolled, or was enrolled in a residency program, if the student enrolled in the institution, prepaid tuition, and suffered an economic loss. Unless relieved of the obligation to do so, you must pay the state-imposed assessment for the STRF, or it must be paid on your behalf, if you are a student in an educational program, who is a California resident, or are enrolled in a residency program, and prepay all or part of your tuition. You are not eligible for protection from the STRF and you are not required to pay the STRF assessment if you are not a California resident, or are not enrolled in a residency program. "It is important that you keep copies of your enrollment agreement, financial aid documents, receipts, or any other information that documents the amount paid to the school." Questions regarding the STRF may be directed to the Bureau for Private Postsecondary Education, 2535 Capitol Oaks Drive, Suite 400, Sacramento, CA 95833, (916) 431-6959 or (888) 370-7589.
To be eligible for STRF, you must be a California resident or enrolled in a residency program, prepaid tuition, paid or deemed to have paid-the STRF assessment, and suffered an economic loss as a result of any of the following:
1. The institution, a location of the institution, or an educational program offered by the institution was closed or discontinued, and you did not choose to participate in a teach-out plan approved by the Bureau or did not complete a chosen teach-out plan approved by the Bureau.
2. You were enrolled at an institution or a location of the institution within the 120-day period before the closure of the institution or location of the institution, or were enrolled in an educational program within the 120-day period before the program was discontinued.
3. You were enrolled at an institution or a location of the institution more than 120 days before the closure of the institution or location of the institution, in an educational program offered by the institution as to which the Bureau determined there was a significant decline in the quality or value of the program more than 120 days before closure
4. The institution has been ordered to pay a refund by the Bureau but has failed to do so
5. The institution has failed to pay or reimburse loan proceeds under a federal student loan program as required by law or has failed to pay or reimburse proceeds received by the institution in excess of tuition and other costs.
6. You have been awarded restitution, a refund, or other monetary award by an arbitrator or court based on a violation of this chapter by an institution or representative of an institution but have been unable to collect the award from the institution.
7. You sought legal counsel that resulted in the cancelation of one or more of your student loans and have an invoice for services rendered and evidence of the cancellation of the student loan or loans. To qualify for STRF reimbursement, the application must be received within four (4) years from the date of the action or event that made the student eligible for recovery from STRF. A student whose loan is revived by a loan holder or debt collector after a period of non-collection may, at any time, file a written application for recovery from STRF for the debt that would have otherwise been eligible for recovery. If it has been more than four (4) years since the action or event that made the student eligible, the student must have filed a written application for recovery within the original four (4) year period, unless the period has been extended by another act of law. However, no claim can be paid to any student without a social security number or a taxpayer identification number."
The Accounting Director issues the refund payment within 30 days of the request for the Withdrawal. Once officially withdrawn, a student must re-enroll and will be subject to the terms and conditions of the new enrollment agreement, including the new tuition rate and all applicable fees.
50 W Broadway Suite 300
Hours: Mon-Fri: 8am-5pm MST
Transcript Requests: High School
Application to Graduation
NCU Transcript Request
© 2021 Bottega University.
Dev Camp Sign-In
Canvas Sign-In

redpajama_set_name: RedPajamaCommonCrawl


Wang, who owns Angels Playhouse daycare and unsuccessfully ran in the 2017 provincial election for the B.C. Liberals, defeated Cyrus Eduljee, a scientist who works at biotechnology company Stemcell Technologies.
Wang, who said she has lived in Burnaby for 20 years, questioned Singh's ability to connect with local voters as an Ontario politician and federal leader with other responsibilities.
"He's not from our local community, he cannot represent you, represent us," she said. "I believe we will have a good chance to win in Burnaby South as I believe right now I'm very familiar with our community. I'm one of the people here."
Wang said her top three priorities would be improving housing affordability by increasing the supply, creating more jobs and improving public transit.
Prime Minister Justin Trudeau has not yet set a date for the byelection in Burnaby South, which was vacated by former New Democrat MP Kennedy Stewart, now Vancouver's mayor. He expected to call byelections for the Burnaby South, Outremont, Que., and York-Simcoe, Ont., ridings early in the new year.
A party leader who can't win a seat customarily steps aside, though that hasn't happened in a byelection since the 1940s. Singh won't say what he'll do if he loses the Burnaby South byelection.
Maxime Bernier's People's Party of Canada plans to name a candidate in the next two weeks, spokesman Martin Masse said.
Because the party is so new and only recently established electoral district associations in the riding, the candidate won't be selected through a typical nomination voting process.


text:
#ifndef MBG_GPS166_H
#define MBG_GPS166_H

/***************************************************************************/
/*                                                                         */
/*   File:         GPSSERIO.H                    4.1          */
/*                                                                         */
/*   Project:      Common C Library                                        */
/*                                                                         */
/*   Compiler:     Borland C++                                             */
/*                                                                         */
/*   Author:       M. Burnicki,  Meinberg Funkuhren                        */
/*                                                                         */
/*                                                                         */
/*   Description:                                                          */
/*     This file defines structures and codes to be used to access GPS166  */
/*     via its serial interface COM0. COM0 should be set to a high baud    */
/*     rate, default is 19200.                                             */
/*                                                                         */
/*     Standard GPS166 serial operation is to send a time string that is   */
/*     compatible with Meinberg UA31 or PZF535 DCF77 radio remote clocks.  */
/*     That string can be transmitted automatically once per second, once  */
/*     per minute or on request per ASCII '?'.                             */
/*                                                                         */
/*     Parameter setup or parameter readout works using blocks of binary   */
/*     data which have to be isolated from the standard string. A block of */
/*     data starts with a SOH code (ASCII Start Of Header, 0x01) followed  */
/*     by a message header with constant length and a data portion with    */
/*     variable length. The first field (cmd) of the message header holds  */
/*     the command code rsp. the type of data to be transmitted. The next  */
/*     field (len) gives the number of data bytes that are transmitted     */
/*     after the header. This number ranges from 0 to sizeof( MSG_DATA ).  */
/*     The third field (data_csum) holds a checksum of all data bytes and  */
/*     the last field of the header finally holds the checksum of the.     */
/*     header.                                                             */
/*                                                                         */
/***************************************************************************/

/* the control codes defined below are to be or'ed with a command/type code */

#define GPS_REQACK    0x8000   /* to GPS166: request acknowledge */
#define GPS_ACK       0x4000   /* from GPS166: acknowledge a command */
#define GPS_NACK      0x2000   /* from GPS166: error receiving command */

#define GPS_CTRL_MSK  0xF000   /* masks control code from command */

/* The codes below specify commands/types of data to be supplied to GPS166: */

/*                            GPS166 auto-message to host            */
/*                            þ   host request, GPS166 response      */
/*                            þ   þ   host download to GPS166        */
/*                            þ   þ   þ                              */
enum {  /*                    þ   þ   þ                              */
  /* system data */
  GPS_AUTO_ON = 0x000,   /* þ   þ   þ X þ enable auto-messages from GPS166 */
  GPS_AUTO_OFF,          /* þ   þ   þ X þ disable auto-messages from GPS166 */
  GPS_SW_REV,            /* þ   þ X þ   þ request software revision */
  GPS_STAT,              /* þ   þ X þ   þ request status of buffered variables */
  GPS_TIME,              /* þ X þ   þ X þ current time or capture or init board time */
  GPS_POS_XYZ,           /* þ   þ X þ X þ current position in ECEF coords */
  GPS_POS_LLA,           /* þ   þ X þ X þ current position in geographic coords */
  GPS_TZDL,              /* þ   þ X þ X þ time zone / daylight saving */
  GPS_PORT_PARM,         /* þ   þ X þ X þ parameters of the serial ports */
  GPS_SYNTH,             /* þ   þ X þ X þ synthesizer's frequency and phase */
  GPS_ANT_INFO,          /* þ X þ X þ   þ time diff after antenna disconnect */
  GPS_UCAP,              /* þ X þ X þ   þ user capture */

  /* GPS data */
  GPS_CFGH = 0x100,      /* þ   þ X þ X þ SVs' configuration and health codes */
  GPS_ALM,               /* þ   þ X þ X þ one SV's almanac */
  GPS_EPH,               /* þ   þ X þ X þ one SV's ephemeris */
  GPS_UTC,               /* þ   þ X þ X þ UTC correction parameters */
  GPS_IONO,              /* þ   þ X þ X þ ionospheric correction parameters */
  GPS_ASCII_MSG          /* þ   þ X þ   þ the GPS ASCII message */
};

/*
 * modelled after GPSDEFS.H Revision 1.5
 */
/***************************************************************************/
/*                                                                         */
/*   File:         GPSDEFS.H                     4.1          */
/*                                                                         */
/*   Project:      Common C Library                                        */
/*                                                                         */
/*   Compiler:     Borland C++                                             */
/*                                                                         */
/*   Author:       M. Burnicki,  Meinberg Funkuhren                        */
/*                                                                         */
/*                                                                         */
/*   Description:                                                          */
/*     General definitions to be used with GPS166                          */
/*     GPS166 Rev. 1.23 or above                                           */
/*                                                                         */
/*   Modifications: see file GPSLIB.TXT                                    */
/*                                                                         */
/***************************************************************************/
#define _GPSDEFS_H
/* the type of various checksums */

#ifndef _CSUM_DEFINED
  typedef unsigned short CSUM;
#  define _CSUM_DEFINED
#endif

/* the message header */

typedef struct {
  unsigned short gps_cmd;
  unsigned short gps_len;
  unsigned short gps_data_csum;
  unsigned short gps_hdr_csum;
} GPS_MSG_HDR;

/* a struct used to hold the software revision information */

typedef struct {
  unsigned short code;       /* e.g. 0x0120 means rev. 1.20 */
  unsigned char name[17];     /* used to identify customized versions */
} SW_REV;

/* GPS ASCII message */

typedef struct {
  CSUM csum;       /* checksum of the remaining bytes */
  short valid;     /* flag data are valid */
  char s[23];      /* 22 chars GPS ASCII message plus trailing zero */
} ASCII_MSG;

#define MIN_SVNO         1                  /* min. SV number */
#define MAX_SVNO        32                  /* max. SV number */
#define N_SVNO ( MAX_SVNO - MIN_SVNO + 1)   /* number of possibly active SVs */

typedef short          SVNO;     /* the number of a SV */
typedef unsigned short HEALTH;  /* a SV's health code */
typedef unsigned short CFG;     /* a SV's configuration code */
typedef unsigned short IOD;     /* Issue-Of-Data code */

/* Date and time referred to the linear time scale defined by GPS. */
/* GPS time is defined by the number of weeks since midnight from */
/* January 5, 1980 to January 6, 1980 plus the number of seconds of */
/* the current week plus fractions of a second. GPS time differs from */
/* UTC because UTC is corrected with leap seconds while GPS time scale */
/* is continuous. */

typedef struct {
  unsigned short wn;     /* the week number since GPS has been installed */
  unsigned long sec;     /* the second of that week */
  unsigned long tick;    /* fractions of a second; scale: 1E-7 */
} T_GPS;

/* Local date and time computed from GPS time. The current number */
/* of leap seconds have to be added to get UTC from GPS time. */
/* Additional corrections could have been made according to the */
/* time zone/daylight saving parameters (TZDL, see below) defined */
/* by the user. The status field can be checked to see which corrections */
/* have been applied. */

#ifndef _TM_DEFINED
  typedef struct {
    short year;          /* 0..9999 */
    char month;          /* 1..12 */
    char mday;           /* 1..31 */
    short yday;          /* 1..366 */
    char wday;           /* 0..6 == Sun..Sat */
    char hour;           /* 0..23 */
    char minute;         /* 0..59 */
    char second;         /* 0..59 */
    long frac;           /* fractions of a second, scale 1E-7 */
    long offs_from_utc;  /* local time's offset from UTC */
    unsigned short status;       /* flags */
  } TM;

  /* status flags used with conversion from GPS time to local time */

#  define TM_UTC        0x01   /* UTC correction has been made */
#  define TM_LOCAL      0x02   /* UTC has been converted to local time */
#  define TM_DL_ANN     0x04   /* state of daylight saving is going to change */
#  define TM_DL_ENB     0x08   /* daylight saving is enabled */
#  define TM_LS_ANN     0x10   /* leap second will be inserted */
#  define TM_LS_ENB     0x20   /* current second is leap second */

#  define _TM_DEFINED
#endif

/* the status flags below are defined starting with rev. 1.32 */

#define TM_ANT_DISCONN  0x1000  /* antenna currently disconnected */
#define TM_SYN_FLAG     0x2000  /* TIME_SYN output is low */
#define TM_NO_SYNC      0x4000  /* not sync'ed after reset */
#define TM_NO_POS       0x8000  /* position not computed after reset, */
                                /*   LOCK LED off */

/* a struct used to transmit information on date and time */

typedef struct {
  short channel;        /* -1: the current time; 0, 1: capture 0, 1 */
  T_GPS t;              /* time in GPS format */
  TM tm;                /* that time converted to local time */
} TTM;

/* Two types of variables used to store a position. Type XYZ is */
/* used with a position in earth centered, earth fixed (ECEF) */
/* coordinates whereas type LLA holds such a position converted */
/* to geographic coordinates as defined by WGS84 (World Geodetic */
/* System from 1984). */

#ifndef _XYZ_DEFINED
  /* sequence and number of components of a cartesian position */
  enum { XP, YP, ZP, N_XYZ };

  /* a type of array holding a cartesian position */
  typedef l_fp XYZ[N_XYZ];      /* values are in [m] */

#  define _XYZ_DEFINED
#endif

#ifndef _LLA_DEFINED
  /* sequence and number of components of a geographic position */
  enum { LAT, LON, ALT, N_LLA };  /* latitude, longitude, altitude */

  /* a type of array holding a geographic position */
  typedef l_fp LLA[N_LLA];      /* lon, lat in [rad], alt in [m] */

#  define _LLA_DEFINED
#endif

/* Synthesizer parameters. Synthesizer frequency is expressed as a */
/* four digit decimal number (freq) to be multiplied by 0.1 Hz and an */
/* base 10 exponent (range). If the effective frequency is less than */
/* 10 kHz its phase is synchronized corresponding to the variable phase. */
/* Phase may be in a range from -360° to +360° with a resolution of 0.1°, */
/* so the resulting numbers to be stored are in a range of -3600 to +3600. */

/* Example: */
/* Assume the value of freq is 2345 (decimal) and the value of phase is 900. */
/* If range == 0 the effective frequency is 234.5 Hz with a phase of +90°. */
/* If range == 1 the synthesizer will generate a 2345 Hz output frequency */
/* and so on. */

/* Limitations: */
/* If freq == 0 the synthesizer is disabled. If range == 0 the least */
/* significant digit of freq is limited to 0, 3, 5 or 6. The resulting */
/* frequency is shown in the examples below: */
/*     freq == 1230  -->  123.0 Hz */
/*     freq == 1233  -->  123 1/3 Hz (real 1/3 Hz, NOT 123.3 Hz) */
/*     freq == 1235  -->  123.5 Hz */
/*     freq == 1236  -->  123 2/3 Hz (real 2/3 Hz, NOT 123.6 Hz) */

/* If range == MAX_RANGE the value of freq must not exceed 1200, so the */
/* output frequency is limited to 12 MHz. */

/* Phase will be ignored if the resulting frequency is greater or equal */
/* to 10 kHz. */

#define MAX_SYNTH_FREQ   1200    /* if range == MAX_SYNTH_RANGE */
#define MIN_SYNTH_RANGE     0
#define MAX_SYNTH_RANGE     5
#define MAX_SYNTH_PHASE  3600

typedef struct {
  short freq;      /* four digits used; scale: 0.1; e.g. 1234 -> 123.4 Hz */
  short range;     /* scale factor for freq; 0..MAX_SYNTH_RANGE */
  short phase;     /* -MAX_SYNTH_PHASE..+MAX_SYNTH_PHASE; >0 -> pulses later */
} SYNTH;

/* Time zone/daylight saving parameters. */

/* the name of a time zone, 5 characters plus trailing zero */
typedef char TZ_NAME[6];

typedef struct {
  long offs;         /* offset from UTC to local time [sec] */
  long offs_dl;      /* additional offset if daylight saving enabled [sec] */
  TM tm_on;          /* date/time when daylight saving starts */
  TM tm_off;         /* date/time when daylight saving ends */
  TZ_NAME name[2];   /* names without and with daylight saving enabled */
} TZDL;

/* The constant below is defined beginning with software rev. 1.29. */
/* If the year in tzdl.tmon and tzdl.tm_off is or'ed with that constant, */
/* the receiver automatically generates daylight saving year by year. */
/* See GPSLIB.TXT for more information. */

#define DL_AUTO_FLAG  0x8000

/* Example: */
/* for automatic daylight saving enable/disable in Central Europe, */
/* the variables are to be set as shown below: */
/*   offs = 3600L           one hour from UTC */
/*   offs_dl = 3600L        one additional hour if daylight saving enabled */
/*   tm_on = first Sunday from March 25, 02:00:00h ( year |= DL_AUTO_FLAG ) */
/*   tm_off = first Sunday from Sept 24, 03:00:00h ( year |= DL_AUTO_FLAG ) */
/*   name[0] == "MEZ  "     name if daylight saving not enabled */
/*   name[1] == "MESZ "     name if daylight saving is enabled */

/* the structure below was defined in rev. 1.31. It reflects the status */
/* of the antenna, the times of last disconnect/reconnect and the boards */
/* clock offset after the phase of disconnection. */

typedef struct {
  short status;    /* current status of antenna */
  TM tm_disconn;   /* time of antenna disconnect */
  TM tm_reconn;    /* time of antenna reconnect */
  long delta_t;    /* clock offset at reconnect time, units: TICKS_PER_SEC */
} ANT_INFO;

/* the status field may be set to one of the values below: */

enum {
  ANT_INVALID,   /* struct not set yet because ant. has not been disconn. */
  ANT_DISCONN,   /* ant. now disconn., tm_reconn and delta_t not set */
  ANT_RECONN     /* ant. has been disconn. and reconn., all fields valid */
};

/* Summary of configuration and health data of all SVs. */

typedef struct {
  CSUM csum;               /* checksum of the remaining bytes */
  short valid;             /* flag data are valid */

  T_GPS tot_51;            /* time of transmission, page 51 */
  T_GPS tot_63;            /* time of transmission, page 63 */
  T_GPS t0a;               /* complete reference time almanac */

  CFG cfg[N_SVNO];         /* SV configuration from page 63 */
  HEALTH health[N_SVNO];   /* SV health from pages 51, 63 */
} CFGH;

/* UTC correction parameters */

typedef struct {
  CSUM csum;       /*    checksum of the remaining bytes                  */
  short valid;     /*    flag data are valid                              */

  T_GPS t0t;       /*    Reference Time UTC Parameters              [sec] */
  l_fp A0;         /*  ± Clock Correction Coefficient 0             [sec] */
  l_fp A1;         /*  ± Clock Correction Coefficient 1         [sec/sec] */

  ushort WNlsf;    /*  week number of nearest leap second                 */
  short DNt;       /*  the day number at the end of which LS is inserted  */
  char delta_tls;  /*                                                     */
  char delta_tlsf; /*                                                     */

} UTC;

/* a struct used to hold the settings of a serial port */

#ifndef _COM_PARM_DEFINED
  typedef long BAUD_RATE;

  /* indices used to identify a parameter in the framing string */
  enum { F_DBITS, F_PRTY, F_STBITS };

  /* types of handshake */
  enum { HS_NONE, HS_XONXOFF, HS_RTSCTS };

  typedef struct {
    BAUD_RATE baud_rate;    /* e.g. 19200L */
    char framing[4];        /* e.g. "8N1" */
    short handshake;        /* a numeric value, only HS_NONE supported yet */
  } COM_PARM;

#define _COM_PARM_DEFINED
#endif

/* the codes below define what has to comes out of the serial ports */

enum { STR_ON_REQ, STR_PER_SEC,
       STR_PER_MIN, N_STR_MODE_0,      /* COM0 and COM1 */
       STR_UCAP = N_STR_MODE_0,
       STR_UCAP_REQ, N_STR_MODE_1      /* COM1 only */
     };

#define N_COM   2  /* the number of serial ports */

/* the structure used to store the modes of both serial ports */

typedef struct {
  COM_PARM com[N_COM];    /* COM0 and COM1 settings */
  u_char mode[N_COM];      /* COM0 and COM1 output mode */
} PORT_PARM;

/* Ephemeris parameters of one specific SV. Needed to compute the position */
/* of a satellite at a given time with high precision. Valid for an */
/* interval of 4 to 6 hours from start of transmission. */

typedef struct {
  CSUM csum;       /*    checksum of the remaining bytes                  */
  short valid;     /*    flag data are valid                              */

  HEALTH health;   /*    health indication of transmitting SV      [---]  */
  IOD IODC;        /*    Issue Of Data, Clock                             */
  IOD IODE2;       /*    Issue of Data, Ephemeris (Subframe 2)            */
  IOD IODE3;       /*    Issue of Data, Ephemeris (Subframe 3)            */
  T_GPS tt;        /*    time of transmission                             */
  T_GPS t0c;       /*    Reference Time Clock                      [---]  */
  T_GPS t0e;       /*    Reference Time Ephemeris                  [---]  */

  l_fp   sqrt_A;   /*    Square Root of semi-major Axis        [sqrt(m)]  */
  l_fp   e;        /*    Eccentricity                              [---]  */
  l_fp   M0;       /*  ± Mean Anomaly at Ref. Time                 [rad]  */
  l_fp   omega;    /*  ± Argument of Perigee                       [rad]  */
  l_fp   OMEGA0;   /*  ± Longit. of Asc. Node of orbit plane       [rad]  */
  l_fp   OMEGADOT; /*  ± Rate of Right Ascension               [rad/sec]  */
  l_fp   deltan;   /*  ± Mean Motion Diff. from computed value [rad/sec]  */
  l_fp   i0;       /*  ± Inclination Angle                         [rad]  */
  l_fp   idot;     /*  ± Rate of Inclination Angle             [rad/sec]  */
  l_fp   crc;      /*  ± Cosine Corr. Term to Orbit Radius           [m]  */
  l_fp   crs;      /*  ± Sine Corr. Term to Orbit Radius             [m]  */
  l_fp   cuc;      /*  ± Cosine Corr. Term to Arg. of Latitude     [rad]  */
  l_fp   cus;      /*  ± Sine Corr. Term to Arg. of Latitude       [rad]  */
  l_fp   cic;      /*  ± Cosine Corr. Term to Inclination Angle    [rad]  */
  l_fp   cis;      /*  ± Sine Corr. Term to Inclination Angle      [rad]  */

  l_fp   af0;      /*  ± Clock Correction Coefficient 0            [sec]  */
  l_fp   af1;      /*  ± Clock Correction Coefficient 1        [sec/sec]  */
  l_fp   af2;      /*  ± Clock Correction Coefficient 2       [sec/sec²]  */
  l_fp   tgd;      /*  ± estimated group delay differential        [sec]  */

  u_short URA;      /*    predicted User Range Accuracy                    */

  u_char L2code;    /*    code on L2 channel                         [---] */
  u_char L2flag;    /*    L2 P data flag                             [---] */

} EPH;

/* Almanac parameters of one specific SV. A reduced precision set of */
/* parameters used to check if a satellite is in view at a given time. */
/* Valid for an interval of more than 7 days from start of transmission. */

typedef struct {
  CSUM csum;       /*    checksum of the remaining bytes                  */
  short valid;     /*    flag data are valid                              */

  HEALTH health;   /*                                               [---] */
  T_GPS t0a;       /*    Reference Time Almanac                     [sec] */

  l_fp   sqrt_A;   /*    Square Root of semi-major Axis         [sqrt(m)] */
  l_fp   e;        /*    Eccentricity                               [---] */

  l_fp   M0;       /*  ± Mean Anomaly at Ref. Time                  [rad] */
  l_fp   omega;    /*  ± Argument of Perigee                        [rad] */
  l_fp   OMEGA0;   /*  ± Longit. of Asc. Node of orbit plane        [rad] */
  l_fp   OMEGADOT; /*  ± Rate of Right Ascension                [rad/sec] */
  l_fp   deltai;   /*  ±                                            [rad] */
  l_fp   af0;      /*  ± Clock Correction Coefficient 0             [sec] */
  l_fp   af1;      /*  ± Clock Correction Coefficient 1         [sec/sec] */
} ALM;

/* ionospheric correction parameters */

typedef struct {
  CSUM csum;       /*    checksum of the remaining bytes                  */
  short valid;     /*    flag data are valid                              */

  l_fp   alpha_0;  /*    Ionosph. Corr. Coeff. Alpha 0              [sec] */
  l_fp   alpha_1;  /*    Ionosph. Corr. Coeff. Alpha 1          [sec/deg] */
  l_fp   alpha_2;  /*    Ionosph. Corr. Coeff. Alpha 2        [sec/deg^2] */
  l_fp   alpha_3;  /*    Ionosph. Corr. Coeff. Alpha 3        [sec/deg^3] */

  l_fp   beta_0;   /*    Ionosph. Corr. Coeff. Beta 0               [sec] */
  l_fp   beta_1;   /*    Ionosph. Corr. Coeff. Beta 1           [sec/deg] */
  l_fp   beta_2;   /*    Ionosph. Corr. Coeff. Beta 2         [sec/deg^2] */
  l_fp   beta_3;   /*    Ionosph. Corr. Coeff. Beta 3         [sec/deg^3] */

} IONO;

void mbg_tm_str P((unsigned char **, TM *));
void mbg_tgps_str P((unsigned char **, T_GPS *));
void get_mbg_header P((unsigned char **, GPS_MSG_HDR *));
void put_mbg_header P((unsigned char **, GPS_MSG_HDR *));
void get_mbg_sw_rev P((unsigned char **, SW_REV *));
void get_mbg_ascii_msg P((unsigned char **, ASCII_MSG *));
void get_mbg_svno P((unsigned char **, SVNO *));
void get_mbg_health P((unsigned char **, HEALTH *));
void get_mbg_cfg P((unsigned char **, CFG *));
void get_mbg_tgps P((unsigned char **, T_GPS *));
void get_mbg_tm P((unsigned char **, TM *));
void get_mbg_ttm P((unsigned char **, TTM *));
void get_mbg_synth P((unsigned char **, SYNTH *));
void get_mbg_tzdl P((unsigned char **, TZDL *));
void get_mbg_antinfo P((unsigned char **, ANT_INFO *));
void get_mbg_cfgh P((unsigned char **, CFGH *));
void get_mbg_utc P((unsigned char **, UTC *));
void get_mbg_lla P((unsigned char **, LLA));
void get_mbg_xyz P((unsigned char **, XYZ));
void get_mbg_portparam P((unsigned char **, PORT_PARM *));
void get_mbg_eph P((unsigned char **, EPH *));
void get_mbg_alm P((unsigned char **, ALM *));
void get_mbg_iono P((unsigned char **, IONO *));

unsigned long mbg_csum P((unsigned char *, unsigned int));

#endif
/*
 * mbg_gps166.h,v
 * Revision 4.1  1998/06/12 15:07:30  kardel
 * fixed prototyping
 *
 * Revision 4.0  1998/04/10 19:50:42  kardel
 * Start 4.0 release version numbering
 *
 * Revision 1.1  1998/04/10 19:27:34  kardel
 * initial NTP VERSION 4 integration of PARSE with GPS166 binary support
 *
 * Revision 1.1  1997/10/06 20:55:38  kardel
 * new parse structure
 *
 */


We have a professional, efficiency team to provide quality service for Travel Power Supply , Tv Power Supply , Dell Power Supply , we are committed to solving any problem of high temperature protection for users.
"With our exceptional administration, robust technical capability and strict high-quality control procedure, we carry on to provide our consumers with dependable high-quality, reasonable selling prices and superb providers. We aim at becoming amongst your most responsible partners and earning your pleasure for Travel Power Supply , Tv Power Supply , Dell Power Supply , With the first-class products excellent service fast delivery and the best price we have won highly praise foreign customers'. Our products have been exported to Africa the Middle East Southeast Asia and other regions.


Idea's Sirji (Abhishek Bachchan) is already promoting MNP (Mobile Number Portability) on TV Ads and it is confirmed by DoT as well that finally MNP is coming in India on 25'th November 2010. Initially MNP will start from Haryana where 8 mobile operators are currently providing services. At least finally DoT is starting rolling out the most awaited feature in mobile industry i.e. MNP in India.
Update – Today on 25'th Nov, MNP (Mobile Number Portability) is launched in Haryaya, India by Telecom minister Mr. Kapil Sibbal. Rest of India is expected to get the service from 20'th Jan 2011.
Mobile Number Portability will let you change the service operator without changing your current mobile number. Still there is no update or confirmation about the MNP rollout in other circles. But the complete roll out is expected by March – May 2011.
As per TRAI, the new operator can charge you an amount less than or equal to Rs. 19. We will have to wait till 25'th to see how much operators charge for that. I hope that new operators may provide this service for free as they are getting new customer.
Postpaid users need to clear all pending bills before changing the operator. Once the bills are paid, they need to send a SMS to certain number and the current operator will provide a MNP key (or something similar). You just need to provide the key to the new operator at the time of registration.
Prepaid users will loose their current balance amount after changing the operator. They will also have to send SMS to that number to get the license key.
The complete portability or documents, history etc. should complete in 4 days as per TRAI. While changing the operator, deactivation and re-activation of the number should not take more than 2 hours. That means, you will be able to use your number in next 2 hours after registering to the new operator.
Well, we will have to wait to see how operators take this MNP as some of them may loose their current subscribers, and we know that none of them want so. Of course subscriber will have to face some issues as we can't expect this kind of feature to go as smooth as it seems. Anyway, MNP is definitely a good option for subscribers i.e. us and it will get good response after the launch.


Wild Horses, monoprint 25inX19in framed- $650.
Wild Series, monoprint 12inX12in- $550.
Celebration I, drawing framed 10inX14in- $650.
Celebration II, drawing framed 8inX10in- $425.
Celebration III, drawing framed 8inX10in- $425.
Figures I, drawing framed 8inX10in- $425.
Rodeo, drawing framed 8inX10in- $425.


VENTILADOR DE TECHO Ø 127CM. MONTECARLO MADERA SUL.
VENTILADOR DE TECHO Ø 132CM. MILENAIRE SULION.
VENTILADOR DE TECHO Ø 132CM. DENEL SULION.
VENTILADOR INFANTIL BANDIT SULION Ø105cm.
VENTILADOR FOCOS Ø 92CM. TONES NIQUEL SULION.
VENTILADOR FOCOS Ø 76CM. RAINBOW MADERA SULION.
VENTILADOR FOCOS Ø 76CM. RAINBOW COLOUR SULION.


text:
Who Knows the American Mind?
Andrew Hacker
The Next America: Boomers, Millennials, and the Looming Generational Showdown
PublicAffairs, 278 pp., $26.99
Social Trends in American Life: Findings from the General Social Survey since 1972
edited by Peter V. Marsden
Princeton University Press, 386 pp., $75.00; $35.00 (paper)
The Problem with Survey Research
by George Beam
Transaction, 421 pp., $59.95
Sexual Behavior, Sexual Attraction, and Sexual Identity in the United States: Data from the 2006–2008 National Survey of Family Growth
National Health Statistics Reports
Number 36, March 3, 2011, 36 pp.; available at www.cdc.gov/nchs/data/nhsr/nhsr036.pdf
The Pollsters: Public Opinion, Politics, and Democratic Leadership
by Lindsay Rogers
Knopf, 239 pp., 1949 (out of print)
Open Door Mission, Rochester, New York, 2012; photograph by Alex Webb from Memory City, his new book with Rebecca Norris Webb, published by Radius
Paul Taylor of the Pew Research Center argues that surveys of public opinion are both necessary for democracy and based on equality. His The Next America opens:
Opinion surveys allow the public to speak for itself. Each person has an equal chance to be heard. Each opinion is given an equal weight.
This view has long been held in the survey industry, going back to the early days of George Gallup, who called polls "the pulse of democracy."1 Some recent books on surveys show how they can help us understand American society, so long as we are aware of their limitations. For example, Taylor tells us he found that 39 percent of Americans agree that "marriage is becoming obsolete." But are we hearing "the public…speak for itself"? Certainly many people have changing views about the state of marriage but it's hard to believe that so many were calling it "obsolete" before an interviewer introduced the word.
Still, many of the Pew Center's findings shed light on where the country is moving. Thus Taylor reports that support for legalizing marijuana has gone from 12 percent in 1969 to 52 percent in 2013. We also learn that even among people in their fifties and sixties, only 50 percent still feel that the United States is "the greatest country in the world." In 2012, Pew put the following question to 3,008 adults: "Would you say that most people can be trusted or that you can't be too careful when dealing with people?" Of those responding, trust gets only 37 percent, with 59 percent counseling vigilance. (I'm still musing about what my own choice would be.) So it remains to consider how public views on marriage and marijuana meld with those on personal trust and national eclipse. The Next America works best as a sourcebook, leaving it to others to put the pieces together and try to understand the cause of changes in opinion.
Occasionally, Taylor missteps. For instance, he says that, since 1980, the divorce rate has been declining. That's true by official tallies. But since they stay single longer, most people now have intimate interludes and then breakups that resemble what were formerly divorces. Apparently something is being learned from such experiences: recorded marriages are becoming more stable.
Taylor's summary chapter barely mentions surveys. He titles it "The Reckoning," by which he means confronting the costs of an aging population. In his view, strict limits must be set on medical treatment for the elderly. To further tax an already "hard-pressed young" can only undermine the nation's "economic vitality." In turn, older people shouldn't expect more to be spent on them as their time arrives. Even now, we have $1,000 pills, courtesy of a medical-industrial complex based on churning out putative wonders. Taylor's proposal will have to mean denials of care, when it is deemed too costly or only marginally helpful. This sounds realistic but how many people will say they agree in general—but not when it comes to their own mother? I'd like to see how he would phrase a survey question on this issue. Would he present "rationing" as an option? As people are living longer, at what age would rationing start?
The General Social Survey (GSS), a private organization, has been posing questions since 1972, and some of its more interesting findings are in Social Trends in American Life. Generous funding from the National Science Foundation allowed it to sample some 50,000 adults on their "values, self-assessments, and behaviors," as well as "social connectedness, and individual well-being." Thus we learn that "liberalism" on homosexuality has increased by 73 percent since 1974, while support for abortion has declined by 6 percent. The number of voters identifying as "independents" has risen from 27 percent to 43 percent. I suspect the shift is more a matter of self-image than political preference. To say you are a Democrat or Republican implies that a party has you in its pocket, a presumption fewer want made about them.
In a revealing chapter on race, the Harvard sociologist Lawrence Bobo and his colleagues focus on "fraught, tension-filled, and conflictual interactions along the color line." Thus a GSS question found only 12 percent of white respondents supporting "preferences" in hiring and promotion of blacks. Another question asked:
What do you think the chances are these days that a white person won't get a job or promotion while an equally or less qualified black person gets one instead?
Here 67 percent of the whites who were interviewed felt this was somewhat or very likely, probably with some musing that such lamentation could happen to them. This is plainly so in college admissions cases, where white plaintiffs claim they were denied places they had earned. That those suing had been at the bottom of the white list—of course, such lists exist—shows who pays most for affirmative action.
At the same time, in a span of eighteen years (1990 to 2008) the number of whites willing to say their own race is natively more intelligent has fallen from 56 percent to 24 percent. In part, this may be cautiousness about what one says aloud, even to anonymous interviewers, even in "private," an increasingly unreliable setting. Even so, the authors hope that insofar as "racial stereotyping" is moving from "biology to culture," this is a "more porous and potentially modifiable stance."
Since 1973, confidence in "medicine" has declined from 54 percent to 40 percent. Support for the banking industry has been mercurial, at 42 percent one year and 12 percent another. The GSS asks people how happy they consider themselves to be ("pretty," "very," "not too"). The proportions of men and women who said "very" are just about identical, at 30 percent and 31 percent. But marital status makes a difference. Of those currently wed, 40 percent declare they are very happy, while only 20 percent of those formerly or never married feel able to say they are.
Are we becoming smarter or dumber? As a surrogate for IQ, the GSS gives a vocabulary test. Respondents are shown ten words, each with five possible definitions. I was surprised to learn that the proportion of correct replies has stayed essentially unchanged: inching from 64.9 percent in the 1970s to 65.7 percent in 2000–2008. But Social Trends in American Life does not let us know the words. A note cites a previous test with twenty words, which I've given below.2 The GSS intimates that half of them are in the current quiz, but won't say which ones. Even when we consider the easiest ten—among them chirrup and solicitor, for example—the proportions who got the meaning right are quite impressive.
For an unabashed indictment of surveys, there is George Beam's The Problem with Survey Research. "The flaws of polls," he writes, "are so extensive and severe that survey research, as a method for finding out what's really going on, should be abandoned." For one thing, "respondents lie" or "do not have relevant and correct information." For another, "question wording skews results." Those who sponsor research "disguise, or hide" its "actual or primary purpose." Even location matters. The answers given in classrooms differ from those given in dormitories, even when both are anonymous. Beam's advice: "If you want to find out what's really going on, don't ask."
While spirited, his book isn't easy to read. It is short on numbers—after all, surveys generate statistics—but is long on listing writers who support what he says. (He cites several comments of mine, all from these pages.) Still, the issues he raises are important, for example whether people respond truthfully. On actual lying, a classic test was conducted in Denver over a half-century ago. A sample of residents was asked if they had an active public library card. The names of those saying that they did were checked against the city's list. Fully 9 percent weren't there. When also asked if they had donated to Denver's community chest that year, 34 percent who said they had in fact hadn't.3 But the problem isn't always lying. Last year, the SAT asked 1,660,047 high school seniors for their parents' income. Most obliged, with 38,887 choosing the $120,000–$140,000 interval. But how many teenagers know that accurately what their parents make? Statisticians call this pseudo-precision.
Surveys assume a certain level of knowledge, at least on the subjects they inquire about. In March, Reuters reported on a poll that it conducted regarding Comcast's bid to absorb Time Warner Cable. It said it found 52 percent saying that a merger would diminish competition, while 22 percent felt it would bring better service. However, the poll assumed that fully 74 percent of adult Americans know enough about this quite complex transaction to have formed judgments about it. This seems too good to be true, given what we know about how far people follow the news.
Still, opinions can and should be taken seriously even if they're not accompanied by information. I doubt that even a third of Americans can locate Ukraine on an unmarked map; yet some are already telling polls they don't want their country involved there. The point, of course, is that they have a definite opinion: it may express a generally reluctant view about policing the world. In this vein, the Reuters survey shouldn't be seen as being about Comcast, but a concern that corporations are becoming too big. I've found that most polls can expand our understanding, even if it's not about what's in the headline.
Needless to say, how questions are phrased influences the responses they elicit. People are more likely to support abortion when asked if they feel it should be "legal" than if it should be "available." Nor is this inconsistent, since legality and availability have different connotations. I'm happy to have both surveys, since together they provide pieces of a larger story. Another poll found that 70 percent would allow doctors to "end a patient's life by some painless means," but only 51 percent would let them help a dying patient "commit suicide." Such variations in phrasing help us gauge the intensity and structure of people's thinking. And when there is a wide variety of options on an issue, more people will choose ones nearer the middle.
The first challenge for any survey is to secure a reliable sample, which replicates "the frame of all units in the population."4 For a national poll, about three thousand carefully culled names representing a range of groups will usually suffice; but you'll need more if you want to separate out, say, the opinions of widowed men. The ideal is a truly random drawing, like having access to Social Security's master list, and flagging every thousandth name. But since this is not possible, the method of choice is an "area probability sample," which the General Social Survey and the National Center for Health Statistics both use. First, a representative group of counties is selected, and within them a set of "primary sampling units," like city blocks or rural tracts. Interviewers usually then get free rein to find respondents within their assigned areas. A well-chosen sample will include a distribution of conventional groupings like races and classes and regions. Another virtue of random drawings is that they bring in spreads of less visible categories—like sadists, introverts, and straying spouses. If desired, a sample's percentages of, say, college graduates can be checked against census records. Also, some members of a sample may have their responses weighted. If a poll is short, perhaps, on Asians, then each one surveyed may be tallied as, say, 1.2 persons.
In the early days of surveys, interviewers rang doorbells and chatted face-to-face. Then came telephone calls, keyed to street addresses and neighborhoods. Now cell phone numbers are chosen by a computer—a kind of randomness—but not all who pick up are willing to talk. The Internet is being explored, with a full awareness of its hazards. It might be that someone with dementia is responding, it might be a teenager in Riga.
In recent elections, polls have called the vote within one or two points, which means that their samples must have been good replicas of the electorate. But in the case of opinions as distinguished from voting choices, there is no way to verify survey findings. If most Americans have views on abortion, there isn't an official register showing the variations. Hence recourse to polls, two of which I cited in an earlier article.5 Both began, "Should abortion be…" and then offered identical options. Table A presents the results.
Since Gallup and CNN used their own samples, it's not surprising that their results differ. But what is striking is how close they came. Splitting the difference, I'm willing to put the "always legal" view at about 30 percent, give or take, and "always illegal" around 17 or 18 percent.
The census is also a survey, even if it tries to include everyone. For its basic questions, it aims at a 100 percent response, via mailed forms or personal visits, if the forms don't come in. In 2010, it estimates that it found 97.5 percent of all persons then living in the country. Still, like polls, it must rely on what people tell them: about their age, ethnicity, who owns their current residence, and whether any of their offspring are stepchildren or adopted. (The most recent compilation is for 2010, where of all 88,820,256 children, 6,238,198, or 7 percent, were reported to be stepchildren or adopted.)
On how it deals with the 2.5 percent who won't answer doorbells or seem never at home, the census prefers something called "imputation." That is, it creates fictional counterparts of the people it can't find, endowing them with attributes common in the surrounding area. Like their race, or even having a stepchild. These fictions are said to be necessary, because an apparent full count is needed for creating congressional districts
An acid test of surveys arises when questions get very personal. One such survey is from the National Center for Health Statistics entitled Sexual Behavior, Sexual Attraction, and Sexual Identity in the United States. It takes its title literally, posing explicit questions on all three topics. To encourage truthful replies, it employed "audio computer-assisted self interviewing," wherein "the respondent listens to the questions through headphones, reads them on the screen, or both, and enters the response directly into the computer." Interviewers need do little more than open the laptop. A total of 13,495 men and women obliged, a very adequate sample. (For example, teenagers comprised 18.8 percent of the sample, compared with 16.9 percent of the actual population.) Here are some questions that appeared on their screens:
• Has a male ever put his penis in your rectum or butt (also known as anal sex)? [to women and men]
• Have you ever performed oral sex on another female?
• Thinking about your entire life, how many female sex partners have you had? [to women and men]
Among those currently single, 9.9 percent of the men said they had at least four opposite-sex partners during the past year, while only 5.5 percent of the women listed that many. Similarly, of those currently married, 3.9 percent of husbands, but only 2.2 percent of wives, said they had more than one partner in the past year. People who study sex say that men are more apt to exaggerate, whereas women understate, even to a computer. Also affecting the equation is how much of the reported (or unreported) sex is purchased. The only figures on this I've seen are in another NCHS survey that asked people if they had had "sex in exchange for money or drugs" in the last year. (An odd question, conflating two kinds of transactions.) Only 1.3 percent of the men said they had. But the 0.7 percent of women who said so might be closer to a (sad) truth.6
In other matters, people seem quite forthcoming. All told, 44 percent of the men and 36 percent of women said they had had anal intercourse with the opposite sex, another gender imbalance, albeit less pronounced. Also, among those under twenty-five, over three times as many women—13.4 percent to 4 percent—admitted to same-sex experiences, a marked gender gap. Even so, 93.7 percent of women and 95.7 percent of the sampled men declared their "identity" to be heterosexual. Another question, this one on "behavior," found a suspiciously small 1.4 percent of men and 1.9 percent of women saying that most or all of what they did was with same-sex partners. These low figures suggest a severe gay undercount, which shouldn't occur with so large a sample and the presumed anonymity of the survey.
My own view is that surveys are at their best when they yield new, even unexpected, information. To this end, I asked the University of Connecticut's Roper Center to collate for me responses on three topics—abortion, guns, and gay marriage—but with a twist. I wanted to know where those with views on each of the issues stood on the other two. Table B gives those results.
So far as I know, permutations like these haven't been run before. Here, as elsewhere, surveys provide precision, even with margins of error. Common sense, for all its virtues, will not produce 43 percent or 27 percent. Here I'd add that survey findings can prompt reassessments of what we thought we knew. To learn that at least half of gun proponents are liberal on gay marriage and abortion suggests they regard all three as personal freedoms. Posters in favor of "choice" at a gun show are not an outlandish idea. But it's not as easy to connect why so many who oppose abortion and gay marriage also want to limit guns. Here, as elsewhere, surveys should be supplemented by Studs Terkel's kind of colloquy. He would find some Right to Life adherents and ask them how they felt about the Second Amendment. It should be clear that deeper inquiries into the sources of personal views are needed if they are to be adequately understood. But how can intensive interviews be related to broad statistical results? This is still a central question for opinion studies.
Do "surveys allow the public to speak for itself," as Paul Taylor intimates? Not literally, since we only hear from selected samples, even if randomly drawn. Nor can it be said that people "speak" on surveys, if they are choosing from options others have framed. Yet inherent in Taylor's view is that survey findings should carry greater weight in the public sphere. As matters stand, officials hear from only a slice of their constituents, and often accord them more attention, as is clear with gun owners. But surveys reveal a full range of views, "the same noble ideal that animates our democracy."
There's nothing wrong with legislators having poll results on their desks. But enacting statutes is real work, with bills running to hundred of pages. Foreign policy is no less abstruse, given all the cables and memos. The Columbia political scientist Lindsay Rogers probably had the last word sixty-five years ago, in his still-delightful book called The Pollsters. "The pollsters," he wrote, "overlook the really vital role of representative assemblies." Even allowing for alarming exceptions, elected officials are better versed in the legislative art than a sampling of their constituents, who will still have the final say on Election Day. And with more direct participation, as in town meetings, Rogers adds that a "proposition under debate could be reframed to meet objections that the discussion had brought out." Does Paul Taylor really want governing given over to a population at home in their pajamas when the phone rings?
Christopher Benfey
How Bad Are the Colleges?
Law Without History?
More by Andrew Hacker
Hopeful Math
The Stem Frenzy
The Frenzy About High-Tech Talent
Are there enough jobs for all the people currently being trained in science, technology, engineering, and mathematics?
July 9, 2015 issue
Keeping Faith with the Old
Andrew Hacker teaches political science at Queens College. He is currently working on a book about the Republican Party. (September 2018)
George Gallup and Saul Rae, The Pulse of Democracy (Simon and Schuster, 1940). ↩
John B. Miner, Intelligence in the United States (Springer, 1957). His list: accustom, allusion, animosity, blunt, broaden, caprice, chirrup, cloistered, concern, edible, emanate, encomium, lift, madrigal, pact, pristine, sedulous, solicitor, space, tactility. ↩
Hugh J. Parry and Helen M. Crossley, "Validity of Responses to Survey Questions," Public Opinion Quarterly, Vol. 14, No. 1 (Spring 1950). ↩
J. Michael Brick, "The Future of Survey Sampling, Public Opinion Quarterly, Vol. 75, No. 5 (2011), p. 874. ↩
"How He Got It Right," The New York Review, January 10, 2013. ↩
HIV Risk-Related Behaviors in the United States Household Population Aged 15–44 Years: Data from the National Survey of Family Growth, 2002 and 2006–2010, National Health Statistics Reports, No. 46 (January 19, 2012), p. 13. ↩
Brian Urquhart
A Double Standard
April 9, 1992 issue
The Fate of the Union: Kennedy and After
Murray Kempton
The Nation's Progress
July 11, 1996 issue
An Illegal War
Robert Secher
The Report of Captain Secher
Downhill Part of the Way
Jane Yett Kiely
If the Fighting Had Taken Place Here


text:
module Main where
 import Network
 import Greet_Types
 import GreetingService_Client
 import Thrift.Transport.Handle
 import Thrift.Protocol.Binary
 import qualified Data.Text.Lazy as L

 main = do
   putStrLn "Please enter your message"
   messageText <- getLine
   handle <- hOpen("localhost", PortNumber 7911)
   let m = Message {message_msg = L.pack messageText }
   result <- greet (BinaryProtocol handle, BinaryProtocol handle) m
   print result
   putStrLn "Continue? (y/n)?"
   con <- getLine
   continue <- case con of
     "y" -> return True
     "n" -> return False
     _   -> error "B0RK"
   if continue then main else return ()