text:
From HaskellWiki
1 A Gentle Introduction to the Haskell XML Toolbox
The Haskell XML Toolbox (HXT) is a collection of tools for processing XML with Haskell. The core component of the Haskell XML Toolbox is a domain specific language consisting of a set of combinators for processing XML trees in a simple and elegant way. The combinator library is based on the concept of arrows. The main component is a validating and namespace-aware XML Parser that supports the XML 1.0 Standard almost completely. Extensions are a validator for RelaxNG and an XPath evaluator.
2 Background
The Haskell XML Toolbox is based on the ideas of HaXml and HXML, but introduces a more general approach for processing XML with Haskell. HXT uses a generic data model for representing XML documents, including the DTD subset, entity references, CData parts and processing instructions. This data model makes it possible to use tree transformation functions as a uniform design of XML processing steps from parsing, DTD processing, entity processing, validation, namespace propagation, content processing and output.
HXT has grown over the years. Components for XPath, XSLT, validation with RelaxNG, picklers for conversion from/to native Haskell data, lazy parsing with tagsoup, input via curl and native Haskell HTTP and others have been added. This has led to a rather large package with a lot of dependencies.
To make the toolbox more modular and to reduce the dependencies on other packages, hxt has been split into various smaller packages since version 9.0.0.
3 Resources
3.1 Home Page and Repository
- The project home for HXT
- HXT on GitHub
- The git source repository on github for all HXT packages
3.2 Packages
All packages are available on Hackage.
- hxt
- The package hxt forms the core of the toolbox. It contains a validating XML parser and a HTML parser, which tries to read any text as HTML, a DSL for processing, transforming and generating XML/HTML, and so called pickler for conversion from/to XML and native Haskell data.
- HandsomeSoup
- HandsomeSoup adds CSS selectors to HXT.
- hxt-css
- Another CSS selector engine for HXT.
- hxt-http
- Native HTTP support is contained in hxt-http and depends on package HTTP.
- hxt-curl
- HTTP support via libCurl and package curl is in hxt-curl.
- hxt-tagsoup
- The lazy tagsoup parser can be found in package hxt-tagsoup, only this package depends on Neil Mitchell's tagsoup.
- hxt-xpath
- hxt-xslt
- hxt-relaxng
- The XPath-, XSLT- and RelaxNG-extensions are separated into hxt-xpath, hxt-xslt and hxt-relaxng.
3.2.2 More general packages
There are some basic functionalities, which are not only of interest for HXT, but can be useful for other none XML/HTML related projects. These have been separated too.
- hxt-charproperties
- defines XML- and Unicode character class properties.
- hxt-unicode
- contains decoding function from various encoding schemes to Unicode. The difference of these functions compared to most of those available on hackage are, that these functions are lazy even in the case of encoding errors (thanks to Henning Thielemann).
- hxt-regex-xmlschema
- contains a lightweight and efficient regex-library. There is full Unicode support, the standard syntax defined in the XML-Schema doc is supported, and there are extensions available for intersection, difference, exclusive OR. The package is self contained, no other regex library is required. The Wiki page Regular expressions for XML Schema describes the theory behind this regex library and the extensions and gives some usage examples.
- hxt-cache
- A cache for storing parsed XML/HTML pages in binary from. This is used in the Holumbus searchengine framework and the Hayoo! API search for speeding up the repeated indexing of pages.
3.3 Installation
When installing hxt with cabal, one does not have to deal with all the
basic packages. Just a
cabal install hxt does the work for the core toolbox. When HTTP access is required, install at least one of
the packages hxt-curl or hxt-http. All other packages can be installed
on demand any time later.
3.4 Upgrade from HXT versions < 9.0
HXT-9 is not downwards compatible. The splitting into smaller packages required some internal reorganisation and changes of some type declarations. To use the main features of the core package, import
The second major change was the kind of configuration and option handling. This was done previously by lists of key-value-pairs implemented as strings. The growing number of options and the untyped option values have led to unreliable code. With HXT-9, options are represented in a more type-safe manner by functions instead of strings, so option handling has to be modified when switching to the new version. For examples, see copyXML and Pattern for a main program below.
4 The basic concepts
4.1 The basic data structures
Processing of XML is a task of processing tree structures. This is can be done in Haskell in a very elegant way by defining an appropriate tree data type, a Haskell DOM (document object model) structure. The tree structure in HXT is a rose tree with a special XNode data type for storing the XML node information.
The generally useful tree structure (NTree) is separated from the node type (XNode). This allows for reusing the tree structure and the tree traversal and manipulation functions in other applications.
data NTree a = NTree a [NTree a] -- rose tree data XNode = XText String -- plain text node | ... | XTag QName XmlTrees -- element name and list of attributes | XAttr QName -- attribute name | ... type QName = ... -- qualified name type XmlTree = NTree XNode type XmlTrees = [XmlTree]
4.2 The concept of filters
Selecting, transforming and generating trees often requires routines which compute not only a single result tree, but a possibly empty list of (sub-)trees. This leads to the idea of XML filters like in HaXml. Filters are functions which take an XML tree as input and compute a list of result trees:
type XmlFilter = XmlTree -> [XmlTree]
More generally, we can define a filter as:
type Filter a b = a -> [b]
p :: XmlTree -> Bool -- pure function p t = ... pf :: XmlTree -> [XmlTree] -- or XmlFilter pf t | p t = [t] | otherwise = []
isA :: (a -> Bool) -> (a -> [a]) isA p x | p x = [x] | otherwise = []
As an example, a predicate for filtering text nodes looks like this:
isXText :: XmlTree -> Bool isXText (NTree (XText _) _) = True isXText _ = False isXTextF :: XmlFilter -- XmlTree -> [XmlTree] isXTextF = isA isXText
Transformers, i.e. functions that map a tree into another tree, are lifted in a trivial way via singleton lists:
f :: XmlTree -> XmlTree f t = exp(t) ff :: XmlTree -> [XmlTree] ff t = [exp(t)]
f :: XmlTree -> XmlTree f t | p t = expr(t) | otherwise = error "f not defined" ff :: XmlFilter ff t | p t = [expr(t)] | otherwise = []
When processing trees, there's often the case that no result, exactly one result, or more than one result is possible. These functions, returning a set of results, are often a bit imprecisely called non-deterministic functions. Such functions, e.g. selecting all children of a node or all grandchildren, are exactly our filters. In this context, lists instead of sets of values are the appropriate result type, because the ordering in XML is important and duplicates are possible. Examples for working with non-deterministic functions are selecting the children and the grandchildren of an XmlTree, which can be implemented as follows:
getChildren :: XmlFilter getChildren (NTree n cs) = cs getGrandChildren :: XmlFilter getGrandChildren (NTree n cs) = concat [ getChildren c | c <- cs ]
Working with filters is rather similar to working with binary relations, which is rather natural and comfortable, database people know this very well.
4.3 Filter combinatorsComposition of filters, like function composition, is the most important combinator. We will use the infix operator
(>>>) :: XmlFilter -> XmlFilter -> XmlFilter (f >>> g) t = concat [g t' | t' <- f t]
getGrandChildren :: XmlFilter getGrandChildren = getChildren >>> getChildren
getTextChildren :: XmlFilter getTextChildren = getChildren >>> isXText
(<+>) :: XmlFilter -> XmlFilter -> XmlFilter (f <+> g) t = f t ++ g t -- not literally ++, rather the set union operator -- so without duplicates
getTextChildren2 :: XmlFilter getTextChildren2 = getChildren >>> ( isXText <+> ( getChildren >>> isXText ) )
Of course we need choice combinators, too. The first idea is an if-then-else filter, built from three simpler filters. But often it's easier and more elegant to work with simpler binary combinators for choice. So we will introduce the simpler ones first. One of these choice combinators is called
Exercise: Are these filters equivalent? If not, what is the difference?getChildren >>> ( isXText <+> ( getChildren >>> isXText ) ) ( getChildren >>> isXText ) <+> ( getChildren >>> getChildren >>> isXText )
orElse :: XmlFilter -> XmlFilter -> XmlFilter orElse f g t | null res1 = g t | otherwise = res1 where res1 = f t
guards :: XmlFilter -> XmlFilter -> XmlFilter guards g f t | null (g t) = [] | otherwise = f t when :: XmlFilter -> XmlFilter -> XmlFilter when f g t | null (g t) = [t] | otherwise = f t
4.4 Tree traversal filter
A very basic operation on tree structures is the traversal of all nodes and the selection and/or transformation of nodes. These traversal filters serve as control structures for processing whole trees. They correspond to the map and fold combinators for lists.The simplest traversal filter does a top down search of all nodes with a special feature. This filter, called
deep :: XmlFilter -> XmlFilter deep f = f `orElse` (getChildren >>> deep f)
Example: Selecting all plain text nodes of a document can be formulated with:
deep isXText
Example: Selecting all "top level" tables in a HTML documents looks like this:
deep (isElem >>> hasName "table")
multi :: XmlFilter -> XmlFilter multi f = f <+> (getChildren >>> multi f)
4.5 ArrowsWe've already seen that the filters
type XmlIOFilter = XmlTree -> IO [XmlTree]
Sometimes it's appropriate to thread some state through the computation like in state monads, which leads to a type like:
type XmlStateFilter state = state -> XmlTree -> (state, [XmlTree])
Real-world applications might need both extensions at the same time: Of course I/O is necessary but usually there are also some global options and variables for controlling the computations. In HXT for instance there are variables for controlling trace output, options for setting the default encoding scheme for input data and a base URI for accessing documents, which are addressed in a content or in a DTD part by relative URIs. So we need something like:
type XmlIOStateFilter state = state -> XmlTree -> IO (state, [XmlTree])
A filter as discussed above has all features of an arrow. Arrows are introduced for generalizing the concept of functions and function combination to more general kinds of computation.A basic set of combinators for arrows is defined in the classes in the
In HXT, there are four types instantiated with these classes for pure list arrows, list arrows with a state, list arrows with IO and list arrows with a state and IO.
newtype LA a b = LA { runLA :: ( a -> [b]) } newtype SLA s a b = SLA { runSLA :: (s -> a -> (s, [b])) } newtype IOLA a b = IOLA { runIOLA :: ( a -> IO [b]) } newtype IOSLA s a b = IOSLA { runIOSLA :: (s -> a -> IO (s, [b])) }
The first and last one are those used most frequently in the toolbox, and of course there are lifting functions for converting general arrows into more specific arrows. Don't worry about all these conceptual details. Let's have a look at some Hello world examples.
5 Getting started: Hello world examples
5.1 copyXML
The first complete example is a program for copying an XML document:
module Main where import System.Environment import Text.XML.HXT.Core import Text.XML.HXT.Curl main :: IO () main = do [src, dst] <- getArgs runX $ readDocument [withValidate no ,withCurl [] ] src >>> writeDocument [withIndent yes ,withOutputEncoding isoLatin1 ] dst return ()
We've omitted the boring stuff of option parsing and error handling. Compilation and a test run looks like this:
hobel > ghc --make -o copyXml CopyXML.hs hobel > cat hello.xml <hello><haskell>world</haskell></hello> hobel > copyXml hello.xml - <?xml version="1.0" encoding="ISO-8859-1"?> <hello> <haskell>world</haskell> </hello> hobel >
The mini XML document in file hello.xml is read, and a document tree is built. Then this tree is converted into a string and written to standard output (filename: -). It is decorated with an XML declaration containing the version and the output encoding.For processing HTML documents there is a HTML parser which tries to parse and interpret almost anything as HTML. This can be selected by using:
readDocument [withParseHTML yes, ...]
5.2 Pattern for a main program
A more realistic pattern for a simple Unix filter like program has the following structure:
module Main where import Text.XML.HXT.Core import Text.XML.HXT.... -- further HXT packages import System.IO import System.Environment import System.Console.GetOpt import System.Exit main :: IO () main = do argv <- getArgs (al, src, dst) <- cmdlineOpts argv [rc] <- runX (application al src dst) if rc >= c_err then exitWith (ExitFailure (0-1)) else exitWith ExitSuccess -- | the dummy for the boring stuff of option evaluation, -- usually done with 'System.Console.GetOpt' cmdlineOpts :: [String] -> IO (SysConfigList, String, String) cmdlineOpts argv = return ([withValidate no], argv!!0, argv!!1) -- | the main arrow application :: SysConfigList -> String -> String -> IOSArrow b Int application cfg src dst = configSysVars cfg -- (0) >>> readDocument [] src >>> processChildren (processDocumentRootElement `when` isElem) -- (1) >>> writeDocument [] dst -- (3) >>> getErrStatus -- | the dummy for the real processing: the identity filter processDocumentRootElement :: IOSArrow XmlTree XmlTree processDocumentRootElement = this -- substitute this by the real application
This program has the same functionality as our first example, but it separates the arrow from the boring option evaluation and return code computation.
In line (0) the system is configured with the list of options. These options are then used as defaults for all read and write operation. The options can be overwritten for single read/write calls by putting config options into the parameter list of the read/write function calls.
The interesing line is (1).
root node. This root node is a node above the XML document root element. The node above the XML document root element is neccessary because of possible other elements on the same tree level as the XML root, for instance comments, processing instructions or whitespace.
Furthermore the artificial root node serves for storing meta information about the document in the attribute list, like the document name, the encoding scheme, the HTTP transfer headers and other information.
To process the real XML root element, we have to take the children of the root node, select the XML root element and process this, but remain all other children unchanged. This is done with
all children of a node. All results form processing the list of children from the result node.
The structure of internal document tree can be made visiblee.g. by adding the option
This will emit the tree in a readable text representation instead of the real document.
In the next section we will give examples for the
5.3 Tracing
There are tracing facilities to observe the actions performed and to show intermediate results
application :: SysConfigList -> String -> String -> IOSArrow b Int application cfg src dst = configSysVars (withTrace 1 : cfg) -- (0) >>> traceMsg 1 "start reading document" -- (1) >>> readDocument [] src >>> traceMsg 1 "document read, start processing" -- (2) >>> processChildren (processDocumentRootElement `when` isElem) >>> traceMsg 1 "document processed" -- (3) >>> writeDocument [] dst >>> getErrStatus
In (0) the system trace level is set to 1, in default level 0 all trace messages are suppressed. The three trace messages (1)-(3) will be issued, but also readDocument and writeDocument will log their activities.
How a whole document and the internal tree structure can be traced, is shown in the following example
... >>> processChildren (processDocumentRootElement `when` isElem) >>> withTraceLevel 4 (traceDoc "resulting document") -- (1) >>> ...
In (1) the trace level is locally set to the highest level 4. traceDoc will then issue the trace message, the document formatted as XML, and the internal DOM tree of the document.
6 Selection examples
6.1 Selecting text from an HTML document
Selecting all the plain text of an XML/HTML document can be formulated with
selectAllText :: ArrowXml a => a XmlTree XmlTree selectAllText = deep isText
In this case, where the selected nodes are all leaves, these would give the same result.
6.2 Selecting text and ALT attribute values
Let's take a bit more complex task: We want to select all text, but also the values of the alt attributes of image tags.
selectAllTextAndAltValues :: ArrowXml a => a XmlTree XmlTree selectAllTextAndAltValues = deep ( isText -- (1) <+> ( isElem >>> hasName "img" -- (2) >>> getAttrValue "alt" -- (3) >>> mkText -- (4) ) )
The whole tree is searched for text nodes (1) and for image elements (2), from the image elements the alt attribute values are selected as plain text (3), this text is transformed into a text node (4).
6.3 Selecting text and ALT attribute values (2)
Let's refine the above filter one step further. The text from the alt attributes shall be marked in the output by surrounding double square brackets. Empty alt values shall be ignored.
selectAllTextAndRealAltValues :: ArrowXml a => a XmlTree XmlTree selectAllTextAndRealAltValues = deep ( isText <+> ( isElem >>> hasName "img" >>> getAttrValue "alt" >>> isA significant -- (1) >>> arr addBrackets -- (2) >>> mkText ) ) where significant :: String -> Bool significant = not . all (`elem` " \n\r\t") addBrackets :: String -> String addBrackets s = " [[ " ++ s ++ " ]] "
This example shows two combinators for building arrows from pure functions.The first one
7 Document construction examples
7.1 The Hello World document
The first document, of course, is a Hello World document:
helloWorld :: ArrowXml a => a XmlTree XmlTree helloWorld = mkelem "html" [] -- (1) [ mkelem "head" [] [ mkelem "title" [] [ txt "Hello World" ] -- (2) ] , mkelem "body" [ sattr "class" "haskell" ] -- (3) [ mkelem "h1" [] [ txt "Hello World" ] -- (4) ] ]
To write this document to a file use the following arrow
root [] [helloWorld] -- (1) >>> writeDocument [withIndent yes] "hello.xml" -- (2)
document is wrapped into a so called root node (1). This complete document is written to "hello.xml" (2).
a whole document tree with such a root node. Before writing, the document isindented (
text nodes, and an XML declaration with version and encoding is added. If the indent option is not given, the whole document would appears on a single line:
<?xml version="1.0" encoding="UTF-8"?>   <title>Hello World</title>
Hello World

The code can be shortened a bit by using some of the convenient functions:
helloWorld2 :: ArrowXml a => a XmlTree XmlTree helloWorld2 = selem "html" [ selem "head" [ selem "title" [ txt "Hello World" ] ] , mkelem "body" [ sattr "class" "haskell" ] [ selem "h1" [ txt "Hello World" ] ] ]
In the above two examples the arrow input is totally ignored, becauseof the use of the constant arrow
7.2 A page about all images within a HTML page
A bit more interesting task is the construction of a page containing a table of all images within a page inclusive image URLs, geometry and ALT attributes.The program for this has a frame similar to the
but the rows of the table must be filled in from the input document. In the first step we will generate a table with a single column containing the URL of the image.
imageTable :: ArrowXml a => a XmlTree XmlTree imageTable = selem "html" [ selem "head" [ selem "title" [ txt "Images in Page" ] ] , selem "body" [ selem "h1" [ txt "Images in Page" ] , selem "table" [ collectImages -- (1) >>> genTableRows -- (2) ] ] ] where collectImages -- (1) = deep ( isElem >>> hasName "img" ) genTableRows -- (2) = selem "tr" [ selem "td" [ getAttrValue "src" >>> mkText ] ]
With (1) the image elements are collected, and with (2) the HTML code for an image element is built.
Applied to http://www.haskell.org/ we get the following result (at the time writing this page):
  <title>Images in Page</title>
Images in Page

 /haskellwiki_logo.png

 /sitewiki/images/1/10/Haskelllogo-small.jpg

 /haskellwiki_logo_small.png

When generating HTML, often there are constant parts within the page, in the example e.g. the page header. It's possible to write these parts as a string containing plain HTML and then read this witha simple XML contents parser called
The example above could then be rewritten as
imageTable = selem "html" [ pageHeader , ... ] where pageHeader = constA "<title>Images in Page</title>" >>> xread ...
IO monad, so it can be used in any context, but therefore the error handlingis very limited.
7.3 A page about all images within a HTML page: 1. Refinement
The next refinement step is the extension of the table such that it contains four columns, one for the image itself, one for the URL,the geometry and the ALT text. The extended
has the following form:
genTableRows = selem "tr" [ selem "td" -- (1) [ this -- (1.1) ] , selem "td" -- (2) [ getAttrValue "src" >>> mkText >>> mkelem "a" -- (2.1) [ attr "href" this ] [ this ] ] , selem "td" -- (3) [ ( getAttrValue "width" &&& -- (3.1) getAttrValue "height" ) >>> arr2 geometry -- (3.2) >>> mkText ] , selem "td" -- (4) [ getAttrValue "alt" >>> mkText ] ] where geometry :: String -> String -> String geometry "" "" = "" geometry w h = w ++ "x" ++ h
(2) is the column from the previous example but the URL has been made active by embedding the URL in an A-element (2.1). In (3) there are twonew combinators,
geometry spec. (4) adds the ALT-text.
7.4 A page about all images within a HTML page: 2. Refinement
The generated HTML page is not yet very useful, because it usually contains relative HREFs to the images, so the links do not work. We have to transform the SRC attribute values into absolute URLs. This can be done with the following code:
imageTable2 :: IOStateArrow s XmlTree XmlTree imageTable2 = ... ... , selem "table" [ collectImages >>> mkAbsImageRef -- (1) >>> genTableRows ] ... mkAbsImageRef :: IOStateArrow s XmlTree XmlTree -- (1) mkAbsImageRef = processAttrl ( mkAbsRef -- (2) `when` hasName "src" -- (3) ) where mkAbsRef -- (4) = replaceChildren ( xshow getChildren -- (5) >>> ( mkAbsURI `orElse` this ) -- (6) >>> mkText -- (7) )
(1). This arrow uses the global system state of HXT, in which the base URL of a document is stored. For editing the SRC attribute value, the attribute listof the image elements is processed with
The resulting String value is converted into a text node forming the new attribute value node (7).Because of the use of the global HXT state in
8 Transformation examples
8.1 Decorating external references of an HTML document
In the following examples, we want to decorate the external references in an HTML page by a small icon, like it's done in many wikis. For this task the document tree has to be traversed, all parts except the intersting A-Elements remain unchanged. At the end of the list of children of an A-Element we add an image element.
Here is the first version:
addRefIcon :: ArrowXml a => a XmlTree XmlTree addRefIcon = processTopDown -- (1) ( addImg -- (2) `when` isExternalRef -- (3) ) where isExternalRef -- (4) = isElem >>> hasName "a" >>> hasAttr "href" >>> getAttrValue "href" >>> isA isExtRef where isExtRef -- (4.1) = isPrefixOf "http:" -- or something more precise addImg = replaceChildren -- (5) ( getChildren -- (6) <+> imgElement -- (7) ) imgElement = mkelem "img" -- (8) [ sattr "src" "/icons/ref.png" -- (9) , sattr "alt" "external ref" ] [] -- (10)
This arrow applies an arrow to all nodes of the whole document tree.The transformation arrow applies the
all A-elements (3),(4). This arrow uses a bit simplified test (4.1) for external URLs.
selecting the current children (6) and adding an image element (7).The image element is constructed with
an element name, a list of arrows for computing the attributes and a list of arrows for computing the contents. The content of the image element isempty (10). The attributes are constructed with
the name value pair of arguments.
8.2 Transform external references into absolute references
In the following example we will develop a program for editing a HTML page such that all references to external documents (images, hypertext refs, style refs, ...) become absolute references. We will see some new, but very useful combinators in the solution.
The task seems to be rather trivial. In a tree traversal all references are edited with respect to the document base. But in HTML there is a BASE element, allowed in the content of HEAD with a HREF attribute, which defines the document base. Again this href can be a relative URL.
We start the development with the editing arrow. This gets the real document base as argument.
mkAbsHRefs :: ArrowXml a => String -> a XmlTree XmlTree mkAbsHRefs base = processTopDown editHRef -- (1) where editHRef = processAttrl -- (3) ( changeAttrValue (absHRef base) -- (5) `when` hasName "href" -- (4) ) `when` ( isElem >>> hasName "a" ) -- (2) where absHRef :: String -> String -> String -- (5) absHRef base url = fromMaybe url . expandURIString url $ base
In this first step we only edit A-HREF attribute values. We will refine this later.
The second step is the complete computation of the base URL.
computeBaseRef :: IOStateArrow s XmlTree String computeBaseRef = ( ( ( isElem >>> hasName "html" -- (0) >>> getChildren -- (1) >>> isElem >>> hasName "head" -- (2) >>> getChildren -- (3) >>> isElem >>> hasName "base" -- (4) >>> getAttrValue "href" -- (5) ) &&& getBaseURI -- (6) ) >>> expandURI -- (7) ) `orElse` getBaseURI -- (8)
Input to this arrow is the HTML element, (0) to (5) is the arrow for selecting the BASE elements HREF value, parallel to this the system base URL is readwith
of a BASE element. in this case we take the plain document base (8). The selection of the BASE elements is not yet very handy. We will define a more general and elegant function later, allowing an element path as selection argument.In the third step, we will combine the to arrows. For this we will use a new combinator
The combined arrow, our main arrow, looks like this:
toAbsRefs :: IOStateArrow s XmlTree XmlTree toAbsRefs = mkAbsHRefs $< computeBaseRef -- (1)
this pattern occurs rather frequently, so ($<) becomes very useful.Programming with arrows is one style of point free programming. Point free programming often becomes unhandy when values are used more than once. One solution is the special arrow syntax supported by ghc and others, similar to the do notation for monads. But for many simple cases the
To complete the development of the example, a last step is necessary: the removal of the redundant BASE element.
toAbsRefs :: IOStateArrow s XmlTree XmlTree toAbsRefs = ( mkAbsHRefs $< computeBaseRef ) >>> removeBaseElement removeBaseElement :: ArrowXml a => a XmlTree XmlTree removeBaseElement = processChildren ( processChildren ( none -- (1) `when` ( isElem >>> hasName "base" ) ) `when` ( isElem >>> hasName "head" ) )
isElem >>> hasName n1 >>> getChildren >>> isElem >>> hasName n2 ... >>> getChildren >>> isElem >>> hasName nm
For this pattern we will define a convenient function creating the arrow for selection:
getDescendents :: ArrowXml a => [String] -> a XmlTree XmlTree getDescendents = foldl1 (\ x y -> x >>> getChildren >>> y) -- (1) . map (\ n -> isElem >>> hasName n) -- (2)
computeBaseRef :: IOStateArrow s XmlTree String computeBaseRef = ( ( ( getDescendents ["html","head","base"] -- (1) >>> getAttrValue "href" -- (2) ) ... ...
computeBaseRef = ( ( ( getXPathTrees "/html/head/base" -- (1) >>> getAttrValue "href" -- (2) ) ...
Even the attribute selection can be expressed by XPath, so (1) and (2) can be combined into
computeBaseRef = ( ( xshow (getXPathTrees "/html/head/base@href") ...
8.3 Transform external references into absolute references: Refinement
In the above example only A-HREF URLs are edited. Now we extend this to other element-attribute combinations.
mkAbsRefs :: ArrowXml a => String -> a XmlTree XmlTree mkAbsRefs base = processTopDown ( editRef "a" "href" -- (2) >>> editRef "img" "src" -- (3) >>> editRef "link" "href" -- (4) >>> editRef "script" "src" -- (5) ) where editRef en an -- (1) = processAttrl ( changeAttrValue (absHRef base) `when` hasName an ) `when` ( isElem >>> hasName en ) where absHRef :: String -> String -> String absHRef base url = fromMaybe url . expandURIString url $ base
The arrow applied to every element is extended to a sequence of
To process all possible HTML elements, this sequence should be extended by further element-attribute pairs.
This can further be simplified into
mkAbsRefs :: ArrowXml a => String -> a XmlTree XmlTree mkAbsRefs base = processTopDown editRefs where editRefs = foldl (>>>) this . map (\ (en, an) -> editRef en an) $ [ ("a", "href") , ("img", "src") , ("link", "href") , ("script", "src") -- and more ] editRef = ...
so the above code can be simplified to
mkAbsRefs :: ArrowXml a => String -> a XmlTree XmlTree mkAbsRefs base = processTopDown editRefs where editRefs = seqA . map (uncurry editRef) $ ...
9 More complex examples
9.1 Serialization and deserialisation to/from XML
Examples can be found in HXT/Conversion of Haskell data from/to XML
9.2 Practical examples of HXT
More complex and complete examples of HXT in action can be found in HXT/Practical
9.3 The Complete Guide To Working With HTML
Tutorial and Walkthrough: http://adit.io/posts/2012-04-14-working_with_HTML_in_haskell.html


text:
Posted on September 16, 2013
"Why would anybody buy that? It's outdated."
I hear that all the time: it's inevitable. After all, that was the rationale when the British Museum got rid of its First Folio of Shakespeare. A new Folio edition had come out without all the errors and typos of the First Folio, so…. And have you heard the one about the library that threw away each edition of Paris Review Interviews whenever a new one came in? (Each "series" has a different set of interviews completely; they don't really represent updates.)
But I did once have an argument with a customer who wanted to know why Webster's New International Dictionary of the English Language costs about ten times as much for the second edition as for the third edition.
"Because they're not printing the second since the third came out," I said.
"But the third edition is the NEW one," I was told.
It gets rather involved, really. Webster's Second, or W2, came out in 1934, a volume of authority and dord. It remained the standard until it was completely redone for a new edition in 1969, Webster's Third, or W3. The editor did drastic things to the book, cutting out a lot of proper names (you had to buy Webster's Biographical Dictionary or Webster's Geographical Dictionary for those) and a lot of the color plates. The new book was supposed to be limited to words, words, words.
And it was planned to be completely descriptive of the American language. Webster's Second had continued a tradition of being prescriptive: telling you which words were considered less than standard. (That old line about "Ya ain't supposed ta say ain't, cause ain't ain't in the dictionary". It WAS in the dictionary, but clearly stamped with warning labels.)
The uproar was immediate: the word cops objected, and several institutions announced they would be retaining Webster's Second, as it was clearly an authority whereas Webster's Third was merely a journalistic exercise. The publishers stood their ground: the dictionary's job was to define words as used, not tell people which ones they OUGHT to use.
One result was that prices on Webster's Second started to rise. Unabridged dictionaries are very susceptible to damage, and people who needed to replace one that was worn out had to go to used book dealers. Another result was the creation of the American Heritage Dictionary, to restore the sense of authority the "permissiveness" of Webster's Third had thrown away. It was a noble undertaking.
Unfortunately, the American Heritage Dictionary, also trying to cover American lingo, also found itself being screamed at by critics. The editorial staff had decided to fix up some oversights in previous dictionaries. Words like "bed" had definitions which were previously ignored. The word "bed" could be a verb or a location in situations where no bed was actually involved. (To put it no plainer.)
"If I want my child to learn words like that," said one critic, "I want him to learn them where I did: in the streets and in the gutter." The American Heritage Dictionary was the most challenged book in school and public libraries in the mid-seventies.
The lesson of all this could be that you can't win with dictionaries. But that would be untrue. Nowadays, to cover all bases, you really need a Webster's Second, a Webster's Third, AND an American Heritage. So those of us selling them win after all.

subset: commoncrawl


text:
Hurricane Sandy's aftermath
Hurricane Sandy's aftermath
The storm left cars partially submerged in a New York City parking lot.
A tree crew worked to free a pine from power lines in Norwell on Tuesday.
Flooded streets kept firefighters away when a blaze tore through homes in New York's Rockaway area on Tuesday.
The storm upended trees in Washington, D.C. It also left more than 8.2 million homes in 17 states without power.
A rescue worker helped a young boy evacuate an area in Little Ferry, N.J., on Tuesday, that was hit by flood waters.
Jason Locke moved mud out of his mother's home near Gooseberry Point at Horseneck Beach in Westport.
President Obama monitored relief efforts at the Red Cross in Washington.
Mitt Romney collected food donations at a campaign event in Ohio.
The storm uprooted a tree in Copley Square.
Parts of West Virginia received up to two feet of snow.
A man looked at a tree resting on powerlines in the front yard of a home in Newton.
A damaged home was seen on Manasquan Beach in Manasquan, N.J.
A car passed a tree lying on power lines, the morning after Hurricane Sandy in Dartmouth.
A woman dragged a wet rug out of her gallery in Falmouth Harbor.
A child looked at power lines knocked down by Hurricane Sandy in Scituate.
Needham public works crews removed a tree from power lines and traffic lights.
A submerged boat in Scituate Harbor.
In the Queens, N.Y., a rainbow could be seen behind homes devastated by the storm.
A boat was almost sideways between two flooded houses in Lindenhurst, N.Y.
A home in Cambridge sustained damage from a fallen tree.


text:
Nike Junior Golf Camps, University of Maryland
Average RatingStars
Improve your game and have serious fun at
Nike Junior Golf Camps
Our junior golf camp at University of Maryland takes place in College Park just outside Washington D.C. Junior golfers, ages 10 - 18, of all ability levels are welcome to join for an unforgettable camp experience!
Long-time Camp Director and Men's Head Coach, Jason Rodenhaver, welcomes campers back for another great summer of Nike Junior Golf Camp at University of Maryland. Coach Rodenhaver has been leading this camp for quite some time and he and the staff are excited to improve the skills of each young golfer.
This overnight camp includes golf instruction from top Division I coaches, overnight stay, course play, meals and fun, supervised evening activities. Players will stay on campus at UMD and travel to University of Maryland Golf Course for daily instruction and course play with the staff. By the end of the week, each player should expect to see substantial improvement to their game.
Highlights Include
- Instruction from nationally recognized college coaches and players
- Small group instruction with low student/teacher ratio
- Daily on-course instruction with the University of Maryland staff
- Camper amenity package including a Nike hat, drawstring bag, one dozen SRIXON golf balls, camp workbook and graduation certificate
- Supervised, evening activities on campus
- A healthy and positive learning environment designed to help every camper get better!
- View More Details ⟩
Camp Coaches
Camp Director Jason Rodenhaver
Jason Rodenhaver took over as the Maryland men's golf head coach in 2011 and has served as the director of intercollegiate golf and oversaw the men's and women's programs.View Jason Rodenhaver's Bio ⟩
Prior to his role as the director of intercollegiate golf for both teams, Rodenhaver became the first head coach of the women's golf program in 1999. Overall, he served as the women's golf head coach for 12 years and has been associated with Maryland golf as a head coach, assistant, and student-athlete for over two decades.
"We would like to sincerely thank Jason for his commitment and long-standing service to the University of Maryland men's and women's golf programs. We're excited that he will continue to lead our men's program," Anderson said. "As an alum of the men's golf program, he truly appreciates what it means to be a part of Maryland athletics. We applaud the outstanding job he's done over the last three years as the director of intercollegiate golf. With our transition to the Big Ten, we felt this was an important step for both our men's and women's golf programs."
Rodenhaver led the women's program to six NCAA Regionals appearances, 18 team wins, 10 All-ACC honorees, 13 Academic All-Americans and seven individual tournament wins. In his three years with the men's team, he helped Sean Bosdosh earn All-ACC honors and earn individual bids to the NCAA Regionals in 2013 and 2014. His teams have won the President's Cup three times."
Rodenhaver played three seasons for the Terrapins and led the team to a fifth-place finish at the ACC Championship in 1994. That finish was the best for Maryland since 1978. He was a two-year captain of the men's golf team and participated in the NCAA East Regional in his senior season.
Co-Director Diana Cantu
Diana Cantu is the head women's golf coach at University of Maryland.View Diana Cantu's Bio ⟩
In her first year with the Lady Bears, she helped guide the squad to just the second NCAA Championship appearance in program history. In 2011-12, Baylor also saw its first women's golf All-American (Hayley Davis) as well as two All-Big 12 performers (Davis, Chelsey Cothran).
During her second year at Baylor, the Lady Bears came within a stroke of earning an NCAA Championship berth after a ninth-place finish at the NCAA West Regional. Davis repeated as an All-American, and Lauren Taylor was named Big 12 Freshman of the Year.
Last season, Davis earned an individual appearance at the NCAA Championship and the team took third at the Big 12 Conference Championship.
"Diana is passionate about Maryland and the game of golf and brings a coaching philosophy that is completely in sync with our core values of nurturing and empowering student-athletes," Maryland Director of Athletics Kevin Anderson said. "She is a high energy individual who is a tireless recruiter and is an ideal fit for our women's golf program as we make the transition into our inaugural season in the Big Ten conference."
As a student-athlete at the University of Tennessee, Cantú put together one of the finest careers in Lady Vols women's golf history as a member of three NCAA Championship teams (2006-07, 2008-09, 2009-10). She earned All-SEC and NCAA East All-Region honors as a senior and ranks eighth in UT history in stroke average (76.16) and second in career rounds played (130).
In her junior campaign with the Vols, she ranked fourth in the country in three-putt holes (0.70) and 11th in average putts (30.47). She was an NCAA Academic All-American in 2007.
"I am honored to be leading the University of Maryland women's golf program and I want to thank Kevin Anderson and associate athletic director Ryan Bowles for this incredible opportunity," Cantú said. "Maryland has an outstanding reputation both academically and in athletics. I am looking forward to continuing to grow this great program coach Jason Rodenhaver has built and taking it to new heights."
Prior to arriving to Tennessee, the Monterrey, Mexico, native captured the 2005 Mexican Amateur title and was the runner-up in 2006. Cantú has been a member of the Mexican National Team since 2005 and won an individual silver medal to help lead Mexico to team gold at the 2007 University Games in Thailand.
Cantú graduated from Tennessee with a degree in business administration and a master's degree in sports management from Baylor.
Coach Steve Delmar
Steven Delmar is an assistant coach for the University of Maryland men's golf team. Delmar comes to Maryland after a successful playing career at Coastal Carolina.View Steve Delmar's Bio ⟩
Steven Delmar is an assistant coach for the University of Maryland men's golf team. Delmar comes to Maryland after a successful playing career at Coastal Carolina University, in addition to a four-year stint as assistant to the golf professional at Columbia Country Club in Chevy Chase, MD.
Delmar, who is from Rockville, participated in the 2009 and 2012 United States Amateur and the 2011 United States Amateur Public Links. He also won the 2012 Maryland Public Links by shooting a 3-under 139 on 36 holes(70-69).
At Columbia Country Club, Delmar was responsible for the daily operations in the golf shop in the absence of the Head Golf Professional and Assistant Golf Professional. He was also involved with preparation and execution of club tournaments and responsible for coaching and mentoring of junior golfers through club activities.
Delmar received his B.S. in management from Coastal in May of 2011.
Camp Details
Nike Junior Golf Camps at University of Maryland offer each junior golfer the same opportunity to succeed, regardless of their starting point. Coaches Rodenhaver and Cantu offer a positive and fun learning environment, one in which campers can thrive under the direction of motivated and highly skilled instructors. The staff lives in the dorms to provide supervision so parents can rest easy knowing their child is happy and healthy under our care. Upon arrival, all participants are evaluated by the staff so that their own instructional needs can be addressed throughout the week.Show Less See More Camp Details
Program Options
The Overnight fee includes all golf instruction, course play, evening activities, housing and all meals. The Extended Day fee includes all of the above except housing and breakfast. Extended Day campers may participate in the evening activities which will include golf activities, recreational sports, movies and more.
Check-In and Check-Out
Please refer to the registration packet (emailed in the spring) for all check-in and check-out information.
Nike Junior Golf Camps does not provide transportation to and from airports, bus depots or train stations. The packet we send to registered campers in the spring offers suggestions on shuttle services for each specific camp.
The staff lives in the dormitories/resort accommodations with the campers and participates in evening activities. Drugs, alcohol and tobacco are strictly prohibited, and constitute, along with general misconduct, grounds for dismissal from camp without a refund.
Registration Packets
A detailed camper registration packet containing check in location, health/release forms, emergency contact info, and a list of things to bring will be emailed to all registered campers in the Spring.
Sample Daily Schedule
- 7:00am Wake-up, breakfast
- 8:30am Instruction stations - campers rotate between putting, chipping, pitching, bunker play and full-swing practice
- Noon Lunch/relaxation
- 1:00pm Course play with staff (9-18 holes daily) focusing on course management, strategy, shot selection, rules and etiquette
- 6:00pm Dinner, free time, guest speakers, seminars
- 8:00pm Evening activities
- 10:00pm Lights out
University of Maryland Golf Course
Campers practice and play at the University of Maryland Golf Course; an 18-hole semi-private championship golf course located on the north perimeter of the University of Maryland's flagship campus. The UM Golf Course is the home of the Terrapins' men's and women's golf teams. Open year-round, the 6,700-yard championship course features a newly constructed clubhouse which was completed in April 1999.
Camp ReviewsSubmit a review
Overall Average RatingStars
Great Camp Despite the Weather!
"My camper was entirely satisfied, had a lot of fun and would go back. Unfortunately, we had miserable weather all four days, but kudos to the counselors for being able to maintain morale, and provide the campers with as much instruction and playing time as possible"
— Elaine S. Parent
I Improved So Much!
"I shot the lowest score of my life in golf on the last day because of what I learned"
— Nathan A. Camper
Longer Camp Please!
"A full week camp would be great (Sunday - Saturday). My son would have loved more time and the weekday rush hour made pick up tough. A weekend drop off and pick up would be better."
— Pam S. Parent
Fun Time At Camp
"My son was able to link golf with a fun, friendly environment!"
— Matt P. Parent
Learned A Lot
"I enjoyed meeting new people and the chance to have people I never met evaluate my skills."
— Matthew S. Camper
Amazing Camp Experience
"Maryland was an amazing camp experience for my son. He thought his putting improved the most, but I think he is all around a better player. Jason and his staff were great!"
— Brad P. Parent
Gained Valuable Knowledge
"Learned a lot about golf this summer. The small group teaching was perfect. Just enough attention from the coaches and tons of fun with the other campers. Made a lot of friends and gained valuable knowledge."
— Tomas F. Junior Overnight Camper
Learned a lot
"Nike Golf Camp taught me a lot about my game. The week was a valuable experience for me and I had a great time with all of the staff and campers! Thanks!"
— Eric K. Overnight Camper
Really Fun
"My first golf camp experience was really fun. The coaches were nice and helped me with my swing because I was a beginner. Thank you so much."
— Thomas T. Overnight Camper
Can't Wait To Return!
"This is second time my son has attend the Nike Maryland Golf Camp as an over nighter. There have been no problems or complaints voiced by him each time. For a fouteen year old not to complain, you guys must be doing something right. The staff are great. My son is looking forward to returning!"
— John M. Parent
Loved the Coaches
"The coaches were helpful and kind. Very supportive and fun!"
— Jake F. Overnight Camper
Looking Forward to Next Year
"Very enjoyable! Looking forward to coming back next year."
— Jake S. Overnight Camper
"Camp was so fun!"
— Andy K. Camper
Should've gone to advanced camp
"When signing up for this camp, they told us it was appropriate for my skill level. It would have been more appropriate for me to go to an advanced level camp and wish that had been made clear. Better screening upon registration might help."
— John R. Camper
Still had fun!
"There was too much supervision but a tremendous camp."
— Brett L. Camper
Great camp!
"I made improvements in both my full swing and my short game; I really enjoyed that I was able to play everyday and get better, even though it was really hot. I just wish the counsellors would pay better attention to the other campers due to their immaturity and violations of true golf etiquette."
— Will A. Camper


text:
We are here to help.
If you cannot find what you are looking for contact us.
Be smart about computer safety. Don't leave a trail.
Alert! Computer use can be monitored.
more info
Review these safety tips to learn more. Click the red quick escape button above to immediately leave this site if your abuser may see you reading it.
Error: linkLocal = 4, but newsLink is not a numeric spot. (newsLink = )


text:
Posts tagged "Eric Banks"
Critical Mass
Dispatch from Name That Author Contest, Brooklyn Book Festival
by Jane Ciabattari
NBCC Awards Week, March 8-10, 2011
by Jane Ciabattari
NBCC Reads: Back in Print, March 22 at McNally Jackson
by Jane Ciabattari
NBCC Reads: Gary Giddins, Honor Moore, Michael Miller at McNally Jackson
by Jane Ciabattari
Roundup: A(nother) Roth Controversy, and more
by Mark Athitakis (membership)
About the Critical Mass Blog
Commentary on literary criticism, publishing, writing, and all things NBCC related. It's written by independent members of the NBCC Board of Directors (see list of bloggers below).
Follow @bookcritics
Categories & Archives
Critical Notes |
NBCC News |
NBCC Reads |
#NBCCLeonard Award |
2018 Finalists: 30 Books |
Videos |
Podcasts |
Celebrating Philip Roth |
Conversations with Literary Websites |
Critical Library |
Critical Outtakes: Discussions With Writers |
In Retrospect |
NBCC Featured Review |
Small Press Spotlight |
What I'm Looking Forward to Reading
NBCC Awards
Upcoming Events
NBCC Finalists' Reading: March 13th, 2019
NBCC Awards Ceremony and Reception: March 14th, 2019
NBCC at AWP19 with Paul Beatty and Joan Silber: March 28th, 2019
NBCC at AWP19 The Future of Criticism: A Conversation with Established and Emerging Critics: March 30th, 2019
Videos and Podcasts
The postings on this blog represent the views and opinions of each individual poster and are not representative of views held by the National Book Critics Circle as an organization, or the NBCC board as a whole. Everything on this blog is copyright protected


text:
EBC Stage 5 GD Yellowstuff Brake Kit
- Includes YellowStuff brake pads
- Includes EBC sport dimpled and slotted brake rotors
- Designed to improve stopping power
- Brake pads only cause minimal wear on rotors compared to OE
- YellowStuff brake pads improve brake effect 30-40% over factory
- Sport dimpled and slotted rotors can operate up to 200 degrees cooler to prevent brake fading
- The rotors have built in slots to remove dirt, dust and debris from the rotor to maintain a consistent contact
- Designed for heavy brake use without brake fatigue
Whether you're hauling or towing, or maybe you just have a heavy foot, an EBC Stage 5 GD Yellowstuff brake kit will help to ensure that you stop, when and where you want. Horsepower without braking power is like parachuting without a parachute, you know?
EBC YellowStuff brake pads are engineered specifically for trucks, SUVs, and performance street cars. YellowStuff brake pads can deliver 30-40% better braking power compared to factory pads, and function much better over a wide temperature range. Performing well at a wide temperature range makes these the perfect pads for the daily driver who is constantly late for work, to the occasional track run. At high heat, YellowStuff brake pads maintain excellent performance even during repeated heavy brake use without suffering from brake fatigue or "fall-off". These brake pads will create a similar dust level to OEM brakes, but will cause much less wear on your ride's rotors.
EBC Sport dimpled and slotted brake rotors (GD Series) are constructed grey steel. EBC finishes the rotor in a black Geomet coating that not only looks fantastic, but also protects from rust and corrosion. Wide slots pull cool air into the rotor which reduces temperatures by up to 200 degrees. Reducing the temperature of a rotor during heavy towing or hauling can help to eliminate or reduce brake fatigue or fade. Slots also help to clear the rotor of dust, dirt or debris which reduce contact between pad and rotor. EBC then drilled dimples in the rotor, allowing for brake pads to degas.
BC Stage 5 GD Yellowstuff brake kits are going to allow you to push your truck or SUV to its limits while never losing confidence in your brakes. Rolling downhill with a couple tons of pushing your truck? Make sure you have the brakes to finish the job. Make sure you're riding EBC. Get your today!
Product Reviews Summary
|Price / Value
|Ease of Installation
|6 Customer Reviews
|5 Star
|4 Star
|3 Star
|2 Star
|1 Star
Part #: EBC-S5KF1346 Posted on
|Stage 5 brakes and rotors are far better than Toyota stock. They also leave more dust visible on the wheel.
|Perfect stops , make little noise ( when cold ) and some dust. Overal perfect breaks
Part #: EBC-S5KF1347 Posted on
|I have ordered from real truck a few times now so went there first when looking for upgrades on rotors and pads. My wife's truck is only two years old and has mostly highway miles but she noticed vibration while braking at high speeds. Reviews from other Tacoma owners talk about low quality rotors on these trucks so I went with high quality EBC and they did the job.
Thnx RealTruck for the recommendation and quality products
Limited warranty
EBC stage 5 GD Yellowstuff brake pads are backed by a 12 month or 10,000 mile warranty and the stage 5 GD Yellowstuff brake rotors are backed by a six month or 10,000 mile warranty. The warranty is for replacement of similar product or refund of purchase value only excluding all labor and ancillary charges such as vehicle towing, fitting, inconvenience, purchasing of other manufacturers products and is valid for a period of six months from date of purchase or 10,000 miles of highway use. Warranty is invalid if product is used for racing, rally, drifting, track day experience driving, or any other form of competition. Drivers/users must assess the performance and durability or EBC Brakes products themselves if any EBC is to be used in racing.
EBC Stage 5 GD Yellowstuff brake kits are designed for your specific vehicle for an excellent fit. All EBC kits can be installed at home by knowledgeable DIYer, or down at your favorite mechanic's shop. If you have any questions, give RealTruck a call at 877-216-5446. We have customer representatives by the phone seven days a week.


text:
Cadogan, PA Piano Lessons
Looking for private in-home or in-studio Piano lessons? Our Cadogan teachers are ready to get you started. Find your teacher today!
Our online tools make booking, managing your schedule and paying for lessons easy and hassle-free.
Easily search and compare teachers in your area, including past student reviews and background checks.
If you're not completely satisfied, we'll help you find a new teacher or refund any unused lesson credits.
Why TakeLessons?
Our teachers have taught
lessons and counting!
Popular Piano Teachers near Cadogan, PA
Check out some of our most popular teachers near Cadogan, PA including Pittsburgh, Murrysville, Wexford, Bethel Park and Coraopolis.
About Desiree S.Close
Music theory
About Desiree
I received a Master of Music in Vocal Performance from the University of Cincinnati College-Conservatory of Music and a Bachelor of Arts in Music from Rhodes College in Memphis, TN. I continued my studies in New York City in voice, acting and diction.
I continue to be an active performer specializing in musical theater, opera and concert. I began my professional career as an apprentice with the Portland Opera in Oregon. My love for music has taken me across the U.S. and around the world. I come to Pittsburgh via Memphis, Cincinnati, St. Louis, Portland, New York City, ports around the globe through Cunard Cruise L
Currently, I can be seen performing the first Tuesday of each month with Aria412 at Wallace's at Hotel Indigo. I especially enjoy new music and have premiered new works with Pittsburgh Festival Opera, Alia Musica and the New Dischord Festival. The most exciting premiere was the title role in Eve Apart by composer Tim Hinck and my husband, which was produced both in Chattanooga and Pittsburgh. My favorite operatic role is Queen of the Night in The Magic Flute and I have had the pleasure of singing it with Undercroft Opera, Opera San Jose, West Bay Opera, Stockton Opera, Pocket Opera and as a Resident Artist at Portland Opera.
I premiered the role of Flora Dart in A New Kind of Fallout by composer Gilda Lyons and playwright Tammy Ryan with the Pittsburgh Festival Opera. That same season I portrayed Joe Boyd in PFO's gender bending Damn Yankees. Other theatrical performances include Roselinda in Die Fledermaus with Undercroft Opera, Despina in Cosi fan tutte with Mission City Opera, Blonde in Abduction from the Seraglio with Pocket Opera, Cunegonde in Candide with Arena Stage in Washington, D.C., and Rosa Bud in The Mystery of Edwin Drood with Chattanooga Theater Center. I have appeared as Abigail in The Crucible, Mabel in The Pirates of Penzance, Zerlina in Don Giovanni, Lucy in Threepenny Opera and Celeste #1 in Sunday in the Park with George.
As a soloist with Pittsburgh's new music ensemble Alia Musica, I premiered Kierkegaard's Pantoum by composer David Lidov, was soprano soloist in Shadow in the Hot Sun by Paris-based composer Nissim Schaul and Al Vacio by composer Federico Garcia, a work she premiered at the inaugural New Dischord Festival in Chattanooga. I created the role of Pamela in the premier of TOOWHOPERA by composer Sorrel Hays in Rome, GA.
I was named a world finalist in the Luciano Pavarotti International Voice Competition, a regional finalist in the Metropolitan Opera National Council Auditions, a semi-finalist in the Jenny Lind Competition and a regional winner in the MacAllister Competition.
*** Lesson Details ***
Whether it is preparing for a competition, an audition or a role for the school play, I enjoy helping students of all ages reach their goals. I structure the curriculum to the individual needs of my students, focusing on healthy vocal technique, musicianship, stage presence, and joy in music.
During your first lesson, you will sing various vocalises to determine how you negotiate the changes in registration, what your vocal range is, and what you have to work on to improve your vocal quality, stamina, and flexibility.
If you do not see an available time, please call Takelessons. I sometimes have availability that is not visible on my calendar.
*** Studio Equipment ***
Living Room: baby grand, couch, chair, bench, small table, adjoining dining room where parents can wait.
· Piano · In home
· Vocal Training · In studio
· Singing · In studio
Desiree S.
Desiree S.
About Kelly J.Close
I have played piano since 3 years of age by ear. I have started to read piano music since 2005 in my college years. I teach and learn music theory and history. In piano playing, i teach all fundamental of class piano music such as major, minor, triads, chords and etc...
About Kelly
*** Lesson Details ***
I am a very fun, energetic and soulful person. I would expect my students to feel comfortable and confident of what they are learning in my class.
· · In studio
· Singing · In studio
· Singing · In studio
Kelly J.
Kelly J.
About Patti C.Close
View Full Profile
Students will learn and develop necessary skills and technique using the Bastien Piano method. Music theory is also incorporated into lessons.
About Patti
I have performed numerous piano solo recitals, as a featured pianist with the Allegheny Wind Ensemble, in piano duos, a piano quartet, small instrumental groups and in the pit orchestra for musical productions. I know the skills and technique needed to play as a soloist and in different types of groups. I am eager to share this with aspiring pianists.
I have 8+ years experience teaching private piano lessons and 3 years experience in teaching fun group EZ play organ classes to senior citizens. My senior year I was also a substitute teacher for beginning cla
So whether you are looking to study as a serious pianist, just as a hobbyist or somewhere in between, I can guide and teach you along your journey.
I started piano lessons when I was 8 and music has been a part of who I am ever since. My goal as a teacher is to make a students' experience positive and rewarding. I have studied under 3 piano teachers in my life. Each teacher had a positive influence on me personally and musically. I strive to do the same for my students.
*** Lesson Details ***
I like to use the Bastien or Alfred piano methods. Students will be engaged and excited with the progress they make. For the younger students 5-7 I prefer the Bastien method which includes 2 books: lesson book and theory/technique book. For young students 8 and up the Bastien method includes 4 books: lesson, Theory, Technique and Performance/Solo. For adults I use the Alfred's Basic All-in-One Piano Course. Once students are ready I incorporate chord progressions, scales, sight reading and ear training into the lessons. Each lesson builds on the concepts and skills learned in prior lessons. I provide an opportunity for students to perform in a recital twice a year to show family and friends their progress.
I put great importance on proper technique right from the start. Poor technique can frustrate a student and therefore hinder their enjoyment and sense of accomplishment.
Lessons incorporate things that appeal to different learning styles. For example, a visual learner may really enjoy the flashcards to help learn the notes on the staff. For an audible learner they may look forward to hearing me play a new musical passage for him/her before talking about it. Finally, clapping a rhythm before playing it can really benefit the kinesthetic learner.
*** Specialties ***
*Teachers classified as a Student Favorite have taught a minimum of 25 lessons and have received the highest feedback rating from students.
· Piano · In home
· Piano · In home
· Piano · In home
Patti C.
Patti C.
About Dale J.Close
View Full Profile
I've taught public school elementary band for 30 years, have been a church organist for 70 years, and taught piano and organ for 57 years. I enjoy teaching music and working with students and believe that learning to read music will enable the student to play with other musicians and enjoy music as much as I have. I try to put myself in the student's place to think as he/she does and help them understand music and perform it
About Dale
· Piano · In studio
I'm extremely pleased with the highly positive experience my children have in studying with him.
Dale J.
Dale J.
About Bennie D.Close
View Full Profile
I can teach you how to play the great piano styles & songs you love,.. and the techniques you need to learn,... to do it!
Do you like the Beatles, Ben Folds, Elton John, Genesis, Billy Joel, Styx, Pink Floyd, Blues, Rock, Jazz, Standards, New-Age,...
or Bach Counterpoint / Fugues / Inventions and beyond?
If you want to learn to read music or just play chords/rhythms/vamps/comp/improvise/sing-along ... I can help you.
About Bennie
I teach, play and compose a variety of styles, such as pop, rock, blues, classical, jazz, and new-age music. I can show you how to listen to a recording and to play it without written music. Also, I can teach you to read a lead sheet/fake book/chord chart or the grand staff for piano. I can teach you simple or fancy chords/scales/songs.
I have played keyboard and or piano for the "Diana Ross Show Review", "Beatlemania" and various notable restaurant/clubs in Pittsburgh, Pa. I studied music at Duquesne University and studied privately with Frank Cunimondo for Jazz improvisation.
I enjoy helping students learn to play the piano and understand music. We will have a good time.
I can teach you the fundamentals and beyond and help you pursue all
Please listen to my CD, "Spaces With Time", on the "Bandcamp.com" website. I hope you enjoy it.
Ready to play? Let's schedule some lessons together soon.
· Piano · In studio
Bennie D.
Bennie D.
About David B.Close
View Full Profile
I've been teaching piano for over 20 years and my students have gone on to major in music in college, become music teachers, and become lifelong lovers and players of music.. Within the first few lessons, you'll become comfortable at the piano keyboard and as time goes on you'll be able to play a variety of music in various styles. I love working with students of all ages and experience levels and I can't wait to meet you!
About David
· Singing · In studio
· Piano · In studio
· Piano · In studio
He's a very patient teacher and awesome personality to study with!
David B.
David B.
About Dan S.Close
View Full Profile
TEACH THE STUDENT NOT THE SUBJECT has always been my mantra. You are my primary focus. But I've also given a great deal of my time to knowing my subject by being a leader in professional teaching organizations.
I would love to bring my experience to helping you make music more meaningful to your life.
About Dan
In my years I've been involved in professional piano teachers organizations as the National Guild of Piano Teachers and Music Teachers National Organization and have occupied leadership positions in these organizations.
I have had articles published in professional piano pedagogy journals and presently write for my blogs -- Piano Lessons PLUS Blog and Blogging at Piano Teacher Press .
I've written and have had recorded music for Sheet Music Plus and Piano Teacher Press where I publish books and compositions for piano students.
I am particularly proud of the work I've done with the young pre school beginner having written piano methods The Key
I would love the opportunity to teach you or your children and share my love of music with you.
· Piano · In studio
· Piano · In studio
· Piano · In studio
Dan S.
Dan S.
About Betty I.Close
View Full Profile
First, we'll talk about your goals and what you want from the lessons. If you're a beginner, within the first few lessons, you'll be playing simple songs with both hands. I have been playing the piano since I was 6 and started teaching lessons at 16. I love teaching beginning and intermediate students. I typically use the Alfred books depending on age. I focus on a strong music theory foundation and solid practice techniques. We'll use audio and/or video recording to make sure you have an example to take home with you to practice with each session. I can't wait to meet you!
About Betty
As for music, I have played the piano since I was 6 years old and have taught lessons on and off for the last 35 years (depending on my work schedule as a nurse). My training is in classical piano, but I have expanded to contemporary piano and piano accompaniment for soloists and choirs. I received organ training in college and have played many years for my local congregation. As for vocal training, I started at age 14 and have sung as a soloist and in various choirs. I love working with beginners and i
If you have questions, please let me know. I'd love to help!
· Piano · In home
· Piano · In studio
· Piano · In studio
Betty I.
Betty I.
About Linda C.Close
View Full Profile
* Piano instructor for hundreds of students since 1986
* All ages, from preschoolers to senior citizens
* Comprehensive instruction including performance, theory, ear training & sight reading
* Variety of styles taught: classical, jazz and contemporary
*A truly caring atmosphere and individual attention to each student's abilities, interests and curriculum
About Linda
* All ages, from preschoolers to senior citizens
* Comprehensive instruction including performance, theory, ear training & sight reading
* Variety of styles taught: classical, jazz and contemporary
*Highly personal and individualized approach to every student - tailoring curriculum to your needs, interests and abilities
*Current PA Child Abuse and Criminal Clearances
· Piano · In studio
By far, Linda's approach was far more comprehensive. My daughter walked away with a knowledge of music theory as well as learning how to play piano. In addition, she was given opportunity to play in front of both smaller groupings and larger crowds; both were invaluable in terms of giving her the confidence to perform in front of others.
I have recommended Linda many times over the years! I continue to give her my highest recommendation. You will not be disappointed!
· Classical Piano · In studio
Linda C.
Linda C.
About LAURA M.Close
View Full Profile
Do you want to play classical piano music, rock keyboard, pop music, jazz? You are in the right place!
I choose and adapt songs according to the age, interests, goals, and skills of the students. I also use the songs to teach different musical concepts: intervals, progressions, scales, chords. Every student is different, so I don't use any specific method.
La clase puede ser en español.
About LAURA
I've been teaching music for a long time. Why? Because I love music and I love to teach. My mission statement: get you to enjoy music while learning.
The best moments on my work are when the students realize that they can play/sing something that they couldn't do before. I love their expressions at that moment.
I started playing music when I was 7: the recorder, the Spanish guitar, a double keyboard organ that I used to learn how to play the piano by myself. Later on, I started with official piano lessons and ended with my BA in piano.
My training was classical but I love new age music and jazz.
· Piano · In studio
How it Works
From finding the perfect teacher to managing payments, scheduling and tracking your progress, we take care of all the details, so you can focus on learning. Learn More
Search for a teacher
Compare hundreds of teachers based on the criteria that matter to you, including background checks, age and experience.
Schedule your lessons
When you've found the perfect match, schedule your lessons online using the teacher's real-time availability.
Connect with your teacher
Your teacher will welcome you with a personalized curriculum to meet your specific goals and you'll be able to manage your entire schedule through our free online account.
Can't find a teacher in Cadogan, PA?
No problem. Our online lesson platform connects you with any teacher, anywhere. All you need is a reliable Internet connection, a webcam and a microphone.
Zero travel time is great for a busy schedule.
Typically priced lower than local lessons.
Online students stick with lessons as long as local students.
Piano Lesson Reviews from Students
Students are raving about their Piano instructors on TakeLessons. Check out some of these recent reviews.
Patti is a great instructor for my 6 year old son. She has lots of patience and can teach in a way that keeps him interested."
I'm extremely pleased with the highly positive experience my children have in studying with him."
And they're not alone!
Our teachers have taught
lessons and counting!
Free Piano Lessons with an Expert Teacher
Learn how to play the piano in these video tutorials from a professional piano teacher!
Have you always wanted to play the piano? We're here to help! Get started with these 20 video tutorials hosted by San Diego, CA piano teacher Jordan M, one of our expert instructors with TakeLessons.com. In this free video series, you'll get an introduction to the instrument and learn a few easy exercises to get you reading music and understanding rhythm!
Sign up below to get free access to all 20 videos in the piano lesson series!
Recent Piano Articles from the Blog
Whether you're just starting out or a seasoned pro, check out the Piano articles on our blog.
How to Practice Piano When Your Hands, Back, or Arms Hurt
Should you reduce or alter your piano practice if your hands, back, or arms hurt? Here are some guidelines to follow from Rosedale, MD teacher Theresa D... Practicing piano can be a very enjoyable experience for most people, but what if you are in pain or it is difficult for you to play? If you are learning how to play for the first time or if you just want to keep the music under your fingers, regular piano practice is important. But as you get older your body doesnt always al … Read More


text:
Alfred Buehler was born in New York City � the Upper West Side of Manhattan, to be precise � of parents who emigrated from Germany in the early 1920s.
Al�s family moved to Ridgewood, Queens, NY when he was a toddler. Al attended New York City public schools, and after graduating from Grover Cleveland High School, he married fellow GCHS alum Anne Louise Beck; the couple started their family soon after.
After graduation, Al spent 15 years in the rapidly-growing travel and airfreight industry at Trans World Airlines. Active in the International Association of Machinists and Aerospace Workers Union (IAMAW), Al was a maverick, quick to understand issues and to point out how tasks and systems could be improved. Throughout his time there, Al made full use of TWA�s generous travel benefits and took his family on trips across America and to Europe whenever possible.
While still at TWA and with a growing family, Al started his college studies at St. John�s University. He majored in biology and hoped to work in veterinary medicine.
After an auto accident in 1969, Al changed careers and joined the Fire Department of New York City. While with the FDNY, Al took advantage of a training opportunity and enrolled in Emergency Medical Technician (EMT) classes. Al excelled in this environment; he received his EMT certification and finished his coursework at St. John�s with a Bachelor of Science in biology. Al then enrolled in the Hunter College�Bellevue School of Nursing program.
After years of balancing family life, work, and his studies at Bellevue, Al earned his second degree � a B.S. in Nursing. He immediately began part-time work at Bellevue, but the heavy demands on his time led him to shift gears and instead do occasional work as a veterinary assistant.
Al retired from the Fire Department of New York in 1995 after 25 years of service. While waiting for Anne to finish her career at the NYC Board of Education, the couple began construction on their retirement home in Lords Valley, Pennsylvania. Their weekend trips to oversee the building effort turned into a household move in 1997.
The "Palace in the Poconos" was a home, a library, and a launching pad for Al and Anne�s journeys. Both Al and Anne loved books and reading, with Al�s focus centered on the American Civil War and World War II; he also had a deep interest in the Colorado River, and especially the Grand Canyon.
For many years, Al made an annual pilgrimage to the Canyon. He hiked fully across it in both directions, and made several raft journeys down the Colorado following the paths of early Canyon explorers. These trips complemented his and Anne�s other travel, which included several visits to his parents� German homeland along with stays in Mexico, Scotland, Canada, and a cruise through the Panama Canal. Al and Anne were in Normandy, France during 9/11, and they were always grateful for the kindness and generosity of the local French who keep their deep kinship with the liberating Americans of 1944.
When not traveling, Al continued his community service. He and Anne joined the Lake Wallenpaupack German-American Club, where Al served as a club vice-president for seven years. He and Anne were also active as Friends of the Pike County Library, where Al was a vice-president for two years and always supported the Library�s annual book sales and fundraising efforts.
Al suffered a hemorrhagic stroke while on a trip to Washington, DC in 2009, and was confined to a wheelchair after that. He remained as active as possible, but his time focused more on Anne and his three children. Al�s health declined suddenly, and surrounded by his family, he took the final step of his life�s journey on February 28, 2013.
Al�s easy acceptance of others created lifelong friendships. Always willing to help, his skills found appreciation from people needing a household repair, managing a volunteer event, or planning travel to any of Al�s favorite places. He thoroughly enjoyed his life, seeking experiences that challenged him and friends who supported his unique approach to the opportunities around him. His path touched many, and he will be deeply missed.
In his last days, the staffs at Geisinger Wyoming Valley Hospital and especially at the Hospice Community Care Facility at 100 William Street, Dunmore, PA 18510 were helpful and kind to Al, Anne, and his family.
Al is survived by his wife, Anne Buehler of Lord�s Valley, PA, his daughter, Maggie Buehler of New York, NY, his son, Steven Buehler of Belmont, CA, his daughter, Diana Mischler of Glendale, NY, and his brother, Richard Buehler of Bowie, MD.
Al requested no funeral or memorial service, but please consider a donation in his name to support the Hospice, the Pike County Humane Society, your local library, access to education, or national parks.
For further information, directions or to leave a memorial remembrance (candle) visit www.TeetersFuneralChapel.com.
Arrangements by Teeters' Funeral Chapel, 505 Church St., Hawley, PA 18428.


text:
New! Order by phone
Constructed in the legendary shoe making district of San Mauro Pascoli in Italy, Giuseppe Zanotti is famous for creating show-stopping shoes underpinned by luxury artisan craftsmanship. This elegant pair of sandals is crafted from black leather and clear PVC, and features a high stiletto heel, an open toe and a slip-on style. Style yours with evening looks.
Designer colour: 001 NOIR TRANSPARENT
Made in Italy
Designer Style ID: E900054001
Farfetch ID: 13538812
Measurement Information
Below are the measurements for Sandals in size 37 IT
All measurements are made by Farfetch
Still need some help? Try our Size Guide
One shipping fee, on multiple pieces, from multiple locations.
No matter how many items you purchase, or where in the world you order from, you will only pay one fee.
Click here to find out more about our shipping options, including Click & Collect and Same Day Delivery.
Free returns pick-up
We offer free global returns.
You have 14 days from receiving your order to return the item. We strongly recommend that you book your free returns pick-up within 7 days of receiving your order to ensure that it arrives back in time. Click here to read our full returns policy.
Import duties information
Delivery duties are included in the item price when shipping to all EU countries plus USA, Canada, China, Australia, Puerto Rico, Switzerland, Singapore, Republic Of Korea, Kuwait, Mexico, Qatar, India, Norway, Saudi Arabia, Taiwan, Thailand, U.A.E., Japan. This means all import duties are included in your order. The price you see is the price you pay.
Delivery duties are not included in the item price when shipping to all other countries. This means you may be liable to pay import duties on receipt of your order.
Giuseppe Zanotti hails from the Italian shoemaking town of San Mauro Pascoli and his career has seen him design shoes for luxury labels including Dior and Roberto Cavalli. His super-glam evening shoes have become red-carpet staples.
Please Wait
Please Wait


text:
The people in charge of publicizing my new book have asked me to ask you to help them out with some market research. They want to know where they can advertise the book most effectively. What magazines do people who read my stuff read? What websites do they go to? What kinds of things convinced them to read Hardcore Zen?
If you have any bright ideas abnout how to market the book, please leave them in the comments section of this article. Thanks!
And remember, next Saturday (Dec. 23, 2006), Tonen O'Connor of the Milwaukee Zen Center will be at the Hill Street Center. So if you're around, come and hear what she has to say. We're also doing a sitting today (Dec. 16) at 9:45AM.


text:
Difference between revisions of "Kathmandu"
Revision as of 05:25, 27 May 2012
Kathmandu (काठमाण्डु) [20] is the largest city and capital of Nepal and the namesake of the Kathmandu Valley. Once thought to be the fabled and inaccessible Shangri-La, Kathmandu is now a hub for independent travelers as well as a growing vacation spot catering to all budgets. As a result of considerable urban growth in recent decades, it is now part of one continuous urban area together with Patan to the south.
Get in
Visas are available on arrival for citizens of most countries, and one passport-sized photograph is required. To complete the process, you must pay a fee: Transit ($5), 15 day ($25), 30 day ($40) or 90 day ($100.) Make sure that you fill in all of the forms and keep your departure card for when you want to leave. Facilities for taking passport-sized photographs are available near the immigration desk, though it saves a lot of time if they are prepared before arrival. SAARC nationals are exempt from visa fees.
There are no trains to Kathmandu, renting a car without a driver is not a reasonable option. You can hire bikes in Kathmandu and ride up, but you need to be brave. Alternatively, catch a bus. Check with other travelers to find a safe bus line (Green Line & Golden Travels have been recommended), some are quite dangerous and travel at stupid speeds through mountain passes. Many hotels will pick you up from the airport if you give them advanced notice. Otherwise, you can use a pre-paid taxi (the stand is on your right as you come out of baggage reclaim/arrivals.)
By plane
Kathmandu's Tribhuvan International Airport (IATA: KTM), [21] is the largest, and only international airport in Nepal. Most flights to Kathmandu arrive via Delhi, gulf countries (UAE & Qatar), or Bangkok, and of the remaining only a few originate from outside Asia. International airlines serving Kathmandu:
To and from airport
Many hotel and guest houses offer complimentary pick up and delivery from the airport. Taxis are also available. As always, negotiate the price beforehand with the driver. A taxi ride to Thamel or Boudha should not exceed 300 NPR. Otherwise, order a taxi at the pre-paid booth inside the airport, which costs 600 NPR (May 2011). A pre-paid from the taxi stand outside the domestic terminal costs NPR450 to Thamel (April 2011). Both these fees are more than the meter rate, but saves the hassle of long negotiations. When booking a prepaid taxi dont give the recipt to the driver until you are at your destination and you are satisfied, this is the drivers payment. If the driver asks for more money dont give it. There is no culture of tipping taxi drivers. Try not to exchange money at the airport. Money changers at the airport not only charge service charge but also offer a lower rate than is offered in Thamel or elsewhere in town. Don't pay for a taxi at the taxi desk or at any of the drivers immediately outside the airport terminal, they're all a rip-off. They'll ask for 500nrs at least, especially if they see you're a newcomer. Simply ignore them and take your bags out and past them to the edge of the parking lot where many other drivers await. Haggling with them can get you a taxi to Thamel for around 300nrs.
By bus
Kathmandu has frequent and cheap bus service to nearly all parts of Nepal, unfortunately due to poor roads and frequent delays the buses are some of the slowest and least comfortable in South Asia.
Connections include India (usually Patna, Gorakhpur, Varanasi or Lucknow) and other parts of Nepal such as Chitwan National Park and the trekking hubs of Pokhara to the west, Langtang to the north and Jiri to the east of Kathmandu. For points of departure in India or Tibet see the Nepal 'Get in' section. Buses arriving from the Indian border, Pokhara and Chitwan terminate either at the bus station at Balaju at north of the city or Kalanki at the south of the city since large vehicles and long distance vehicles are not allowed to enter the city due to traffic congestion. Varanasi to Kathmandu & Kathmandu to Varanasi INR. 1200 per seat.
The bus to or from Pokhara takes 7-8 hours to cover the 200km. Traffic jams often occur on the zig-zags just out of the KTM valley. All the tourist buses now stop for lunch and snacks at prearranged restaurants. It can be nerve-wracking to look out the front bus window while traveling, due to the narrow roads and much weaving in and out of cars, scooters, & buses. There are many of what westerners would call "close-calls", but they are normal in Nepal and the drivers stay calm through it all. It's best to avoid looking out the front window. There are countless, extremely beautiful sights to be seen while looking out the side windows.
Get around
If you fly in, be sure to pick up a free Katmandu Valley map at the airport. The first thing some visitors notice about Kathmandu is the general lack of street names except for major roads such as Tri Devi & Ring Road (loops around the city) & address numbers. In most cases directions are given relative to the nearest chowk or tole (an intersection or square, often with a market) or a noteworthy location or building (such as a temple or restaurant). In the tourist district of Thamel, the Kathmandu Guest House & Hot Breads bakery are two main landmarks.
It is possible to get around Kathmandu by foot, but it is not always a pleasant walk & you may want to consider a public transportation for anything more than wandering around a specific area. Rickshaws can be found around the tourist area of Thamel, and Taxis are everywhere. Negotiate on a price before you get in a taxi or Rickshaw. If you can't agree, ask another driver. Prices go up after dark & in less busy areas. Taxis are easy to find; they park near all major streets & have fare-meters. After 22 it can be very difficult to find taxis away from central tourist areas or major hotels. It should be possible to hire a taxi for 300rs one-way to Patan & 800-1,200 rs to Bakhtapur from Thamel or the airport. For longer trips & to hire a taxi by the day negotiate with the driver. Haggle hard and you will easily find another driver if you are not satisfied. The meter is your best bet if you are not confident enough to negotiate. However it should be avoided if the driver suggest using it, as it is probably fixed and will overcharge you. After 11PM, taxis can be harder to find outside Thamel.
There are also buses for longer trips within the valley, ie Patan, Bakhtapur, Boudha, etc. that can be used for trips in & around around town. See below for tips on traveling outside of the valley. Blue buses & green buses constantly drive in circles/loops around the city on "Ring Road" - for 15 to 20rps - depending on the distance. Every bus has a cashier/attendent who can tell you where it stops & alert you upon arrival. Riding the buses with the local people can be very pleasant & interesting. The buses are typically very old and rough.
Kathmandu Durbar Square
The heart of the Kathmandu Valley this ancient square crowded with palaces & temples, including the current incarnation of the Kasthamandap or "Wooden house" that gives the city its name. The square has been in active use since the construction of a palace around 1000 AD. This site is the most popular UNESCO World Heritage Site in Nepal.
Magical in the very early morning and evening, Durbar Square. There are a number of young men who offer to be "guides." Be firm with saying "no" if you are not interested. A place not to be missed is a visit to Durbar Square Museum.
Film "Durbar Square", poetic short movie directed by Guillaume Boulanger, 1996. http://www.youtube.com/watch?v=IK2Gd300Sac
It is possible to climb the steps of many of the temples for a better look, or to join the people sat at the top watching the bustle below.
Kathmandu city itself has limited activities for visitors beyond the amazing sightseeing and general experience of being there, but it is the starting point for numerous adventures in the rest of the country including trekking, rafting, jungle adventures, and more extreme sports.
If you would like to see some of the Himalayas, but do not want to go on a trek it is possible to spend a few days (two or more) walking from Kathmandu out of the valley. This is less intense than the trekking available in the rest of the country, but can still reward you with some great views of the mountains. For instance, the walk up to Nagarkot, which offers a great spot for watching surrounding mountain ranges at sunrise or sunset from atop the hill, can be done in a couple of days. Any of the trekking companies in Kathmandu will be willing to organise this for you.
Kathmandu and Dubar Square is the center for many of Nepal's festivals. Note that many businesses are closed for all of these holidays-- and often a few days before and after. Dasain in particular tend to shut down much of the city for October.
Meditation Courses
Yoga Courses
Massage Courses
Kathmandu is a great place to stock up or trade in reading material. Used bookstores cover everything from backpacker favorites, to classics, to local history and culture.
The most popular food in Kathmandu has to be Momo, a dumpling which has its roots in the Tibetan mountains. Try them fried or steamed stuffed with buffalo, chicken, or veggies with a Tuborg or San Miguel beer. In a local place expect to pay 50 NPR for ten buff momos, 90-120 NPR in a tourist place. However, the prices vary according to what it is stuffed with. For example, Chicken momos cost more than a regular buffalo momos. Also a good place to sample Newari and Tibetan dishes.
A Nepali set meal will usually include rice, dhal, vegetable/meat curry, a vegetable dish, chutney and curd. Expect to pay around 140-280 NPR at a tourist place, much less at local places. Chiya (similar to the Indian chai), a milky spiced tea, is ubiquitous and good for a break to calm one's nerves.
There are dozens of tourist restaurants clustered in the Thamel district serving everything from Middle Eastern to Mexican food. Indian and Nepali dishes are always the best tasting-- and best priced. Don't hesitate to state your preference for spiciness. Travelers who venture into smaller places are often rewarded with better prices and friendlier staff. Inspect your bill and count your change at the places frequented by short trip tourists.
Outside Thamel
Yes, there is a whole world waiting outside Thamel!
Nepal is also a coffee producing country, though the people are famously tea drinkers. Most often coffee comes as a dishwater-colored cup of instant; however, good coffee IS available. The first thing to remember is that people who don't drink coffee don't understand coffee. When ordering, try ordering "Strong coffee", as opposed to just "Coffee", to minimize those dishwater blues. Also note that cafes here don't follow the equal espresso, milk and froth rule. Expect your cappuccino to be anywhere from very little froth in large cup to something laced with whipped cream. And there is little difference between latte and cappuccino. Places to look for ground coffee, either drip or espresso, are:
Beer and mixed drinks are available at almost every bar and restaurant. For a quick drink and cheap cultural experience try the local 'Nepali wine' (raksi) or 'Nepali Beer' (chang) neither of which taste anything like their namesakes. Ask for these at local places. San Miguel, Everest Beer, Nepal Ice, Carlsberg, and Tuborg beer are the principal conventional beers served in Kathmandu. Everest, being locally produced rather than shipped in from Turkey (the source of the Danish name-brands), tends to be more reliable than the available imports. Gorkha Beer, a local brand is lately popular and even exported to Belgium, Japan and Hong Kong!
Virtually all tourist accommodations are located in Thamel, near the Kathmandu Guesthouse. Upscale hotels tend to be a few blocks away on Durbar Marg near the former Royal Palace. A few guest houses still remain on Freak Street below Durbar Square, they tend to be somewhat cheaper, and a bit less well cared for than Thamel, but the neighborhood is quieter and there are fewer touts though there tend to be more pickpockets.
Remember any tout on the street who takes you to a place, their commission will be included in the price. Best to find a place on your own and cheaper.
Prices can range from 5 - 350 USD for a double room.
Stay safe
Canadian Consular Affairs [74], the UK Foreign and Commonwealth office [75], and the US State department [76] provide travel advice. Currently Nepal is safe to visit but caution must be taken. After the Maoists joined the government, Nepal has become relatively peaceful. However, visitors should avoid public demonstrations and may want to register with their consulate on arrival. Although tourists haven't been directly targeted by politically motivated violence, it is possible to be in the wrong place at the wrong time. The frequent strikes that are still held are a major inconvenience for most tourists as all transportation stops, and shops and restaurants close.
Load-shedding (power cuts) during the dry season can make life in Nepal very difficult. Due to the lack of street lights, tourists should watch out for the double hazards of opportunistic crimes in the darkness, and tripping or twisting ankles when walking the uneven, unlit streets by night.
Following the news and government warnings is important. Be sure to check on current road conditions before leaving Kathmandu. As of April 2010, long-haul bus trips through the Eastern Terai are to be avoided as there was a risk of Maoist activity in this area. The most common route being Kathmandu to the border crossing at Karkavitta. There have been numerous reports of Maoists stopping buses and setting them alight, although allowing passengers to disembark first. Check daily newspapers or NepalBandh, [77] for advance warning of planned strikes (bandh), when it may be safe to stay away from the main roads in town.
While in Kathmandu, always keep an eye on belongings. Violent crime is rare; pickpockets are not, especially in crowded places. If your hotel room door doesn't have a good lock or safe windows, store valuables on your person or in a hotel safety deposit box at all times. As with any large city, avoid walking alone in unlit areas.
Stay healthy
Most cafes & coffee shops in tourist areas have free WiFi for customers. Computer/internet rentals are almost stacked on top of each other in Thamel & near the stupa at Boudha. You can surf to you heart's content for about 15Rs to 20Rps an hour (10Rps in Putalisadak). Though not adequate for video conferencing the 128-256kbps NTC backbone often used by the cafes is more than adequate for VOIP calling. Please refrain from downloading anything large, as most connections are limited. ISD and STD telephone services are available in almost all internet cafes. Services such as Skype are available in most tourist areas.
Embassies and Consulates
Airline offices
Many airline companies have their offices on Hatisser road, about 20min from north Thamel/Jyatha by walk, if you need to buy/edit ticket.
Get out
Domestic flights also leave from Tribhuvan International Airport. There is a 200rs (about 2.50 USD) airport tax. The primary domestic airlines are Yeti [82], Nepal Airlines [83], and Buddha Air [84]. The latter, Buddha, has a reputation among local expatriates as the safest domestic airline.
Also, there is an airport fee for all domestic flights that you must pay before you board (RS 200). Best to get the first flight of the morning as the later flights get delayed more and more as the day moves on. These are offered by both Buddha and Yeti.


text:
LUBBOCK, Texas — Billie Sol Estes, a flamboyant Texas huckster who became one of the most notorious men in America in 1962 when he was accused of looting a federal crop subsidy program, has died. He was 88.
Estes, whose name became synonymous with Texas-sized schemes, greed and corruption, died in his sleep at his home in DeCordova Bend, a city about 60 miles southwest of Dallas,.
Estes reigned in the state as the king of con men for nearly 50 years. At the height of his infamy, he was immortalized in songs by Allan Sherman (in "Schticks of One and Half a Dozen of the Other") and the Chad Mitchell Trio (in "The Ides of Texas").
Time magazine put him on its cover, calling him "a welfare-state Ponzi ... a bundle of contradictions and paradoxes who makes Dr. Jekyll seem almost wholesome."
"He considered dancing immoral, often delivered sermons as a Church of Christ lay preacher," the magazine wrote. "But he ruthlessly ruined business competitors, practiced fraud and deceit on a massive scale, and even victimized Church of Christ schools that he was supposed to be helping as a fund raiser or financial adviser."
Estes was best known for the scandal that broke out during President John F. Kennedy's administration involving phony financial statements and non-existent fertilizer tanks. Several lower-level agriculture officials resigned, and he wound up spending several years in prison.
Estes' name was often linked with that of fellow Texan Lyndon Johnson.
Estes was convicted in 1965 of mail fraud and conspiracy to defraud. Sentenced to 15 years in prison, Estes was freed in 1971 after serving six years.
But new charges were brought against him in 1979, and later that year he was convicted of mail fraud and conspiracy to conceal assets from the Internal Revenue Service. He was sentenced to 10 more years but was freed a second time in 1983.


text:
We mentioned the ESPN Fantasy Football App for Nokia Windows Phone being available shortly just the other day and today, ESPN FFL 2012 is available for download. The free app will let you manage multiple fantasy football teams, check in on player performance and view news and video highlights from ESPN.
ESPN FFL 2012 also taps into FantasyCast Live Scoring that will deliver real time player and matchup scoring to your Windows Phone.
Team management controls include start/bench players, add/drop/claim players off waivers, and propose/accept/reject trades with other teams. ESPN FFL 2012 also will let you monitor tweets from ESPN Fantasy Analysts to give you a little insight on your fantasy team strategy.
ESPN FFL 2012 is nicely laid out in Modern Design format with main pages covering your team listings, ESPN headlines, ESPN videos, and NFL Scores. If you have a myESPN account you can log in from the three-dot menu, news items can be shared with friends and in pulling up a specific game you can view player stats. All in all, ESPN FFL 2012 isn't too shabby of a fantasy football app.
ESPN FFL 2012 is an exclusive Nokia app for the Lumia Windows Phone line. ESPN FFL 2012 is a free app that you can find it here in the Nokia Collection that is in the Marketplace listing on the Lumia Windows Phones.
Note: If you don't see ESPN FFL 2012 in the Nokia Collection, tap on any of the apps you do see and follow the "more from Nokia" link that is in the app description. ESPN FFL 2012 should be the very last app in the list that is pulled up from the link. Also, the link above will only work from your Lumia Windows Phone. You can get there on your Lumia through the WPCentral App or by visiting our site from your mobile browser.
Thanks, pedro, for the tip!