text:
Journals and Monographs: An Italian perspective
When, some months ago, Prof. Dekeyser invited me to talk about the tendency to abandon Italian, as well as other European languages, in favour of the English language in the scientific periodicals sector, he obliged me to gather information on a sector different to the one in which I normally work. Indeed, since its beginnings, more than forty years ago, the raison d'être of Casalini Libri, the promotion and diffusion of Italian publications to libraries throughout the world, has always privileged the humanities, social sciences, history and art which reflect the prevalent character of Italian publishing.
In order to have a sufficiently reliable picture of the situation, we have contacted a sample group of publishers of scholarly scientific periodicals of various types, obtaining information on the quantity of journals published, the languages used, possible total or partial changes in the choice of language over time, and the utilisation, present or future, of electronic resources. Subdividing the contacted publishers into 4 groups in order to illustrate certain lines of conduct indicates the results of this enquiry [1]. A separate section will then be dedicated to the developments in electronic publishing, with particular regard to the choice of language. The 4 groups are:
|Small specialised scientific publishers
|Large specialised scientific publishers
|University Presses
We contacted eighteen Italian academies, which, for the most part, publish annuals or periodicals, in the areas of science, and the humanities, that summarise texts and studies carried out during the preceding year of activity. For the sake of illustration, we present here the publishing programme of two 'sample' academies:
Istituto Lombardo dell'Accademia di Scienze e Lettere:
|Periodicals: 8
|Scientific and humanistic studies
|Texts in European languages, mostly in English and Italian
|Abstracts in English for Italian texts;Abstracts in Italian for texts in other European languages
|Predominance of English language in scientific publications
|Also articles in non-European languages (e.g. Arabic) with facing English text
|On-line periodicals in preparation
Accademia Nazionale di Lettere, Scienze e Arti di Modena
|Annuals: 4
|Scientific and humanistic studies
|Texts in English and Italian
|Abstracts in English for all texts (also Italian)
|Until 1900 publications also in French and German, now only in English and Italian
|No on-line periodicals, none projected
|The Italian academies tend to publish journals with articles in the original language (providing they have a common alphabet).
|This general trend probably has its origins in a certain 'traditional' method of disseminating culture, a method dating from the eighteenth and nineteenth century - the period in which most of the academies began publishing. This tendency is obviously accentuated in texts of humanistic character. However, that procedure, adequate for the times in which it originated, begins to be insufficient for a capillary diffusion of contemporary culture. The majority of Italian humanistic scholars still publish in Italian (at a national level, obviously), while those in other European countries already choose English, undermining or 'modernising' the tradition. However, this process is not yet in an advanced phase in the humanistic field in that it has been slowed down by a certain immobility and a certain coalescence/consolidation of study methods and approach to the subject.
|Very different is the situation in the scientific field. With the continuous arrival of new technologies, the approach to the subjects is necessarily in continual evolution and consequently discoveries/innovations and methodologies can become obsolete in a short period of time. With these premises the use of an 'official' language without doubt facilitates the immediacy of communication. A large group of non-Anglophone scholars (including the Italians) in fact publish in English for a greater visibility and diffusion of their studies and, above all, for the timeliness of the information (thus exempt from the need for eventual translation). Above all, where publications in the scientific sphere are concerned, the extent to which the English language facilitates the use and integration into the text of technical terminologies and abbreviations, which are established and consolidated in English on a worldwide level, is obvious. For this reason some academies are beginning to introduce an abstract in English for each article in their periodical publications, regardless of the language of the article itself. The intent to render the contents of texts immediately accessible by using a common language that, for evident simplicity and diffusion is English is therefore clear.
|On the other hand, the Italian academies do not yet seem to be interested in the use of electronic resources. In the sample of academies we have assessed, only one is projecting the publication on-line of proceedings, in parallel with the printed edition. This academy numbers among its annual journals two publications which are totally scientific, for which, for obvious reasons, publication is of a more urgent nature. For this reason the academy is considering the possibility of introducing an electronic format as well.
|This brief analysis confirms that also in Italy scientific periodicals by academies circulate mainly in the English language and are also accessible on-line.
We contacted twelve publishers of medium to low print runs and evaluated their work. We show below details of a sample of these:
Tecniche Nuove
|A variety of periodicals, mostly general interest
|In some cases two editions (in Italian and other languages)
|Texts generally in Italian
|No periodicals on-line
|Medical journals
|All texts in English
|Some periodicals on-line
Il Pensiero Scientifico
|Scholarly medical journals
|Texts in English and Italian
|Early periodicals previously only in Italian, now also in English
|Some periodicals on-line
Vevy Europe
|Periodicals on chemistry
|All texts in English
|Some periodicals on-line
|Small publishers of scientific journals follow a well-defined practice with regard to the choice of language for a publication. The English language is, if not yet definitively preferred, certainly preferable.
|The use of the English language has the basic advantage of a greater chance of diffusion and of exportation abroad. In this sense the tendency of journals, which originated in Italian to "Europeanise", if not to "globalise" through English, is obvious above all in the STM field.
|The driving force behind this fact is both cultural and commercial, creating convenience for those who write and those who publish; it is in fact clear that the first impetus for the emerging change comes from the authors who ask and prefer to publish in English. From the cultural point of view, visibility and affirmation of clearly defined scientific identities at a national, and above all, international level is fundamental. The recourse to English is a consequence of this need. From the commercial point of view, on the other hand, the publishers work to consolidate their own publications abroad as points of reference in their sector, thus favouring the implementation and participation of foreign scholars and, consequently, the globalisation of the language.
|Electronic scientific publishing is without doubt a separate matter. If the tendency of the small publishers to flank on-line publications with paper editions is clear, the increase of journals which are on-line only, and which guarantee immediacy incomparable to that of normal paper editions, is equally evident. With regard to on-line journals, the trend is clearly consistent with general globalisation and therefore the English language dominates.
Fifteen large publishers were contacted. Below we show details of a sample of four of these:
|Medical journals
|Texts in English and Italian
|Increasing number of Italian titles now produced in English
|No periodicals on-line
CIC Edizioni Internazionali
|Scholarly medical journals
|Texts mostly in Italian
|Generally Italian content but with English title
|All periodicals will be in English soon
Minerva Medica
|Scholarly medical journals
|Texts mostly in English
|Some multilingual periodicals are now only in English
|Many periodicals on-line
Edizioni Universitarie Romane
|Periodicals on science
|All texts in Italian, with English abstracts and key-words
|Some journals also on-line
|The large scientific publishers follow the general trend.
|The discriminating fact seems to be the contents of the publications: if in general there is an attempt to better promote scholarly studies by publishing them in English, the scholarly and "unique" content itself constitutes an element which safeguards the original language of the writer inasmuch as it carries with it that particular type of sensibility and approach to culture which is historically different from country to country. There are, in fact, intermediate solutions, such as the presence of an abstract or of key-words in English (on-line) for texts in Italian: an expedient which guarantees, if nothing else, a good level of searchability on the Internet, but also the survival of the original language.
|For the most part, the conservative line has university roots, while in scholarly publishing with wider coverage the need to internationalise emerges, and not without consequences. The most significant inconvenience, which we come up against in the current cultural context, is without doubt, the impoverishment of communication and the loss of the specificity of each language in favour of a simpler availability of texts.
|In this sense, on-line resources seem to be decisive: either to concede definitive supremacy to the language of the Internet, or as starting point for a cultural and linguistic exchange, perhaps more tiring but certainly more representative of each cultural reality.
Given the relatively small number of University Presses active in Italy, we have analysed the publishing programmes of four of the major presses:
Vita e Pensiero
|Periodicals on science and humanities
|Journals mostly in English, with abstracts and key-words
|ToC on-line
|Journals on economics
|Texts in English, or in both English and Italian
|All abstracts in English
|No periodicals on-line
Firenze University Press (FUP)
|Scientific and humanistic periodicals
|Some completely in English, some completely in Italian
|Periodicals mostly on-line
LUISS University Press
|New publishing reality
|University press and publisher
|Scholarly periodicals
|3 periodicals in hard copy only
|2 periodicals on-line only
|On-line content will be in English only
|In Italy the tradition of the university press does not exist, other than in certain exceptional cases such as Vita e Pensiero (for the Università Cattolica in Milan) and Egea (for the Università Bocconi in Milan) and a few more
|The universities produce a considerable quantity of material, which is currently spread over various publishers. Certain cases are now emerging, however, such as the LUISS, which is both university press and publisher of external contributions, and which is also investing in the electronic format. With these characteristics the LUISS represents an example of evolution of the Anglo-Saxon model of university press, an important step towards the diffusion of this new model in Italy.
|In general the university presses publish their periodicals in English. Almost all the exceptions to this relate to studies and research of local character.
|The electronic format is not yet predominant but, without doubt, the future is on-line (as for example, FUP)
The question of on-line resources was not the main concern of our research, but is by all means a key factor in scholarly Italian publishing. There is no doubt that e-journals are an expanding reality, although its affirmation is relatively slow in coming about and the process of digitalisation of texts still seems to be in an initial phase. It is in fact important to stress that in this sense two typologies of periodicals exist: journals which are on-line only and printed journals to which, in the last few years, a digital version has been added. From the data we have collected, the number of Italian journals, which are on-line only is an absolute minority. This induces us to conclude that users, authors and publishers see an on-line version of texts that were originally in printed form as an option to be considered indeed but still as an accessory, an initiative flanking the printed publication with a view to improving development.
If there are difficulties for journals, which are available in the two versions, different problems emerge above all in journals in electronic form only. In spite of offering new methods of communication between authors and readers and incrementing the process of diffusion of the published material, e-format still has limitations such as non-transportability, difficulty in reading from the screen, impossibility to make notes or underlinings in loco and, not least, the credibility of the publication. This final problem is sociological rather than technical: the reputation of the researcher increases in relation to the influence of the periodical in which he publishes the results of his work. Consequently the impact factor is the fundamental criterion in choosing the journal to which to send articles.
In spite of these difficulties there is a growing interest also among Italian publishers for the presentation on-line of their printed texts. For some years we have been convinced of the great importance of the electronic format and have therefore created a section, which is exclusively dedicated to the realisation of a digital platform for quality Italian publishing. Our long-standing relationship with Italian publishers initially led us to favour the humanities and social sciences but in recent times we are extending our work to scientific publishing as well.
Casalini Libri Digital DivisionThe Casalini Libri Digital Division is a system for the publication and management of texts (monographs and journals) in electronic format. Formulated with the aim of creating a portal of contents as a service for publishers and libraries, the Digital Division site primarily serves as a search function with immediate access to the information and the possibility of targeted use of the contents. The Mercurio@ search engine, realised by Casalini Libri, in fact allows full-text search within each document of the archive and the visualisation of the concordances found in the text with highlighting of the terms found, directly in the preview, on-line. The goal is to create additional access, certainly not to bring e-form and paper in competition.
Osservatorio sull'editoria elettronica italianaThe purpose of this section of the Casalini Libri Digital Division is to up-date all those who are interested in the state of Italian electronic publishing. The Osservatorio is divided into three sections: academic publishing (monitoring not only the sites of the Italian universities but also previewing/examining what the universities, cultural foundations and all academic institutions make available on the Internet); commercial publishing (examining the sites of those publishers who see the Internet as an ideal showcase); electronic journals (navigating the websites of the journals published on-line). The procedure is similar in all three cases: it starts with a list and proceeds through the analysis of the individual sites.
|From the analysis of the data collected through the work on the Osservatorio, which is both database and research tool, we see to what extent the development of electronic publishing can represent a turning point in cultural communication, both as a technological factor and also as diffusion of the culture itself.
|If Italian publishing were able to overcome the lack of standardisation of its resources and plan future developments of the electronic platform, other possibilities would probably emerge: if on the one hand English is the "official" language of the Internet, on the other the targeted use of electronic resources could constitute the beginnings of a reawakening of local linguistic realities. Digital publishing is the means of safeguarding a richness and variety of contents, which embrace both the subjects themselves (even the most specialistic), and the use of languages other than English.
However little we may like it, history shows us that a dominant language has always existed for scholarly communications. Leaving aside the period of classical Antiquity, how could European scholars and intellectuals have communicated throughout the Middle Ages had it not been for Latin, even though by then a dead language? And how, in the Settecento and much of the Ottocento, could French have been abandoned as the principal language? Obviously I refer not to the multiplicity first of Latin then of French derivatives in European languages but to the integral use of a common language of communication at a scholarly level.
The first impetus for the change to English comes from non-Anglophone scholars who wish to publish in English for a major visibility and diffusion of their studies. The point, which seems to me essential and discriminative is the distinction between the effective and unquestionable need for practicality in communication at a high scientific level and an unwarrantable diffusion of the English language in contexts and fields of knowledge which do not justify its use. I refer - excluding the literary sphere, within which any language must tenaciously maintain its own identity and tradition - to all other fields of criticism and non-fictional literature. Obviously the unquestioned value of the language that has now become the language of exchange between people of different countries and cultures still holds, while safeguarding the wealth and diversity of specific arguments in the single languages. One way of solving this problem could be the development and targeted use of information technology.
I would like to conclude this speech remembering the words of Italo Calvino in 1985, when the actual technological development was perhaps not even imaginable by most people. The Italian writer was invited to hold a series of lectures at Harvard University on those values, which were particularly dear to him in the perspective of the new Millennium. In the introduction to these Six memos for the next millennium published posthumously, Calvino writes:
"The millennium about to end has seen the birth and development of the modern languages of the West, and of the literatures that have explored the expressive, cognitive, and imaginative possibilities of these languages. It also has been the millennium of the book, in that it has seen the object we call a book take on the form now familiar to us. Perhaps it is a sign of our millennium's end that we frequently wonder what will happen to literature and books in the so-called post-industrial era of technology. I don't much feel like indulging in this sort of speculation."
Certainly the response of electronic publishing to the ever more variegated international publishing panorama answers the five values most dear to the illustrious writer in an extraordinarily appropriate way: lightness, quickness, exactitude, visibility, multiplicity (and consistency).
Calvino, Italo, Six memos for the next millennium. Cambridge, Mass. : Harvard University Press, 1988.
Casalini Libri. http://www.casalini.it/
Casalini Libri Digital Division. http://digital.casalini.it/indexING.html
Mercurio@ http://digital.casalini.it/mercurio.html
[1] The division between the large and small publishers of scientific periodicals has as its aim to illustrate separately the trends of the large and small printing runs in order, eventually, to individuate the different policies.
LIBER Quarterly, Volume 13 (2003), No. 3/4


text:
You have no items in your shopping basket.
There are no products matching the selection.
Built by
This website requires cookies to provide all of its features. For more information on what data is contained in the cookies, please see our
Privacy Policy page.
To accept cookies from this site, please click the Allow button below.
If you continue we assume that you consent to receive all cookies on all Nottingham Forest websites.

subset: commoncrawl


text:
|Version 95 (modified by 12 years ago) (diff),
Documentation for the new GHCi debugger
- User's Manual
- Known problems in the debugger
- Wishlist of features (please feel free to add your ideas here)
- Todo
- Implementation notes
Documentation for the new GHCi debugger
These notes detail the breakpoint debugger which is being incorportated into GHCi. Note that there was/is a previous prototype debugger, and we share some of its code (specifically the term printer) (see: GhciDebugger).
User's Manual
Command summary
Parameters to commands are indicated in angular brackets
<...>, optional parameters are followed by a question mark. Ellipses
... indicate where a sequence of parameters is allowed. Everything else is literal text, as you would type it at the prompt.
Setting breakpoints:
:break <module>? <line> :break <module>? <line> <column> :break <module>? <identifier>
Listing breakpoints:
:show breaks
Deleting breakpoints:
:delete <break_number> ... <break_number> :delete *
Inspecting values:
:print <expression>
Single stepping:
:step :step <expression>
Continuting execution from a breakpoint:
Starting the debugger
The debugger is integrated with GHCi, and it is on by default. XXX Not true at the moment; you still have to use the -fhpc flag. The debugger slows program execution down by a factor of approximately XXX times. You can turn it off (to avoid the slowdown) using the XXX command line argument, when you start GHCi.
Setting breakpoints
The general rule of thumb for breakpoints is that you can set a breakpoint on any thing which is not a value (though there are some exceptions). For example, a literal character is a value, but a case expression is not.
We call the places where you can set breakpoints as breakable expressions (even if some of them aren't strictly expressions).
You can set breakpoints on the following things: (XXX) Check this list carefully!
- Function applications. We allow breakpoints on partial applications, even though they are technically values. Also, if there is an application with more than one argument, we only allow breaks on the whole expression, not on the sub-applications within: e.g. for the expression
map f list, we allow a break on the whole expression, but not on the sub-application of
map f.
- Case expressions.
- Function declarations (all the equations of a function).
- Case alternatives.
- Do statements.
- Guards.
- Bodies of functions, pattern bindings, lambdas, guarded equations.
Conversely, you cannot set breakpoints on the following things, except if they occur as the outermost expression in the body of a declaration:
- Literals.
- Variables.
- Do blocks. XXX check this one
- List comprehensions. XXX check this one
You can set a breakpoint in three ways:
- By line number.
- By line and column number.
- By function name (not implemented yet).
In each case you can specify in which module you want to set the breakpoint, however, if that is omitted, the debugger will choose a suitable default module for you (XXX give a better explanation of what module is chosen by default).
The syntax for setting breakpoints by line number is:
:break <module>? <line>
This will activate the breakpoint which corresponds to the leftmost outermost breakable expression which begins and ends on the line indicated by the
<line> parameter, if such an expression exists. XXX If no such expression exists then what happens? Currently the debugger will report an error message, but perhaps it is nicer for it to probe a few lines ahead until it finds a breakable expression, or give up after some threshold number of lines?
The syntax for setting breakpoints by line and column is:
:break <module>? <line> <column>
This will activate the breakpoint which corresponds to the smallest breakable expression which encloses the source location
(<line>, <column>), if such an expression exists. If no such expression exists the debugger will report an error message.
The syntax for setting breakpoints by function name is: (XXX not yet implemented)
:break <module>? <identifier>
This will activate the outermost breakpoint associated with the definition of
<identifier>. If
<identifier> is defined by multiple equations, the breakpoint will cover them all. This means the computation will stop whenever any of those equations is evaluated. XXX What about local functions? XXX What about functions defined in type classes (default methods) and instance declarations?
Listing the active breakpoints
You can list the set of active breakpoints with the following command:
:show breaks
Each breakpoint is given a unique number, which can be used to identify the breakpoint should you wish to delete it (see the
:delete command). Here is an example list of breakpoints:
0) Main (12,4)-(12,8) 1) Foo (13,9)-(13,13) 2) Bar (14,4)-(14,47)
Breakpoint 0 is set in the module
Main on the breakable expression which spans between the source locations (12,4) to (12,8). Similarly for breakpoints 1 and 2.
Deleting breakpoints
You can delete any active breakpoint with the
:delete command. Breakpoints are refered to by their unique number which is displayed by the
:show breaks command (see above). You can refer to more than one breakpoint at a time, for example:
:delete <break_number> ... <break_number>
This will delete all the breakpoints which are identified by the numbers
<break_number> ... <break_number>. If you specify a breakpoint which does not exist, the debugger will simply ignore it.
You can also delete all the active breakpoints by giving the asterisk as an argument to
delete, like so:
:delete *
XXX I don't think the delete command actually turns the breakpoint off yet. Seems I forgot to do that. However, it does delete it, in the sense that ghci no longer prints it out when you ask to show the breakpoints.
What happens when the debugger hits a breakpoint?
When an executing computation hits an active breakpoint, control is returned to the GHCi prompt. The debugger will print out a message indicating where the breakpoint occurred, and the names and types of the local variables which are in scope at that point. Here is an example:
Stopped at breakpoint in Main. Location: (6,6)-(6,20). Locals: x :: Bool, f :: Bool -> Bool, xs :: [Bool], fx :: Bool, j :: Bool *Main>
The string "
*Main>" is GHCi's prompt marker. Note that it can change depending on what modules you have loaded.
All the normal GHCi commands work at the prompt, including the evaluation of arbitrary expressions. In addition to the normal prompt behaviour, the local variables of the breakpoint are also made available. For instance, in the above example the variable
f is a function from booleans to booleans, and we can apply it to an argument in the usual way:
*Main> f False True
If there are no local variables in scope at a breakpoint, the debugger will print this message:
No locals in scope.
The debugger also provides commands for inspecting the values of local variables without forcing their evaluation any further (see Inspecting values below).
You can continue execution of the current computation with the
:continue and
:step commands, explained below.
Inspecting values
It is important to note that, due to the non-strict semantics of Haskell (particularly lazy evaluation), the values of local variables at a breakpoint may only be partially evaluated. Therefore printing values may cause them to be further evaluated. This raises some interesting issues for the debugger because evaluating something could raise an exception, or it could cause another breakpoint to be fired, or it could cause non-termination. For these reasons we want to be able to print values in a way which preserves their current state of evaluation. The debugger provides the
For example, suppose the local variable
xs is bound to a list of booleans, but the list is completely unevaluated at a breakpoint. We can inspect its value without forcing any more evaluation like so:
*Main> :print xs xs = (_t1::[Bool])
The debugger uses fresh variable names (starting with underscores) to display unevaluated expressions (often called thunks). Here
_t1 is a thunk. A side effect of the
Sometimes we want to evaluate thunks a little bit further. This is easy to do because they are bound to variable names. For example, we can evaluate the outermost data constructor of
_t1 using
seq like so:
*Main> seq _t1 () ()
This forces the evaluation of the thunk bound to
_t1 to Weak Head Normal Form (WHNF), and then returns
(). The purpose of the expression is to force the evaluation of
_t1, we don't actually care about the answer, so
() makes a good dummy value.
If we print
xs again we can see that it has been evaluated a little bit more:
*Main> :print xs xs = [True | (_t2::[Bool])]
Here we discover that the value of
xs is a list with
True as its head and a thunk as its tail. The thunk is bound to the fresh variable
_t2, which can be manipulated at the command line as usual.
Another way to force further evaluation of a thunk is to use it inside another expression. For instance, we could examine the spine of the list
xs by computing its length:
*Main> length xs 3 *Main> :print xs xs = [True,(_t3::Bool),(_t4::Bool)]
Single stepping
When a computation has hit a breakpoint it is sometimes useful to continue execution up until the next breakable expression is evaluated, regardless of whether there is a breakpoint set at that location. This functionality is provided by the
:step command:
:step command accepts an optional argument expression. The expression is evaluated as usual, but the computation will stop at the first breakable expression which is encountered:
:step <expression>
Continuing execution after a breakpoint
A computation which has stopped at a breakpoint can be resumed with the
:continue command:
Nested breakpoints
The debugger supports nested breakpoints. That is, when you are stopped at a breakpoint, you can issue a command which causes something to be evaluated, and that evaluation might stop at its own breakpoint. And so on ad infinitum. The debugger maintains a stack of breakpoints, so that whenever a new breakpoint is reached it pushes information about how to resume on top of the stack. The
:step and
:continue commands resume execution of the topmost breakpoint on the stack. If the breakpoint stack is empty, and you try to resume execution by giving the
:step command with no arguments, or the
:continue command, the debugger will report this message:
There is no computation running.
Known problems in the debugger
Orphaned threads
Computations which fork concurrent threads can use breakpoints, but sometimes a thread gets blocked indefinitely. Consider this program:
main = do forkIO foo bar foo = do something bar = do something else
Suppose we have a breakpoint set somewhere inside the computation done by
foo, but there are no breakpoints in the computation done by
bar. When we run this program in GHCi the following things happen:
foogets forked and
barbegin their work
barcompletes its job and we return to the GHCi prompt (uh oh!)
fooeventually hits a breakpoint and attempts to return to the command line, but it can't because we are already there (in the previous step).
Now the foo thread is blocked, so we can't witness the breakpoint.
Wrong variable names in patterns
Consider this program:
foo (Just _ : xs) = [xs] foo (Nothing : ys) = [ys] {- set a breakpoint on this line -} main = print (foo [Nothing, Just ()])
If we hit a breakpoint in the second equation for
foo we expect to see
ys displayed as the local variables. Unfortunately, the debugger says that the locals are called
*Main> :break 2 Breakpoint activated in Main. Location: (2,22)-(2,25). *Main> main Stopped at breakpoint in Main. Location: (2,22)-(2,25). Locals: xs :: [Maybe ()]
The problem is the way that the compiler turns pattern matches into case expressions. XXX This issue deserves some extra thought.
Wishlist of features (please feel free to add your ideas here)
Perhaps the most useful missing feature is the ability to see where the program has been executing just prior to a breakpoint. A lexical call stack is probably out of the question (see: ExplicitCallStack, and ExplicitCallStack/StackTraceExperience), but we could keep track of the most recently visited breakable expressions. A key question is what kind of information should we keep about the evaluation history. The simplest thing is to record just source locations. A more adventurous idea is to keep the local variables too. One probem with keeping local variables is that we would have to make sure the GC keeps them alive, so the data structure for storing the evaluation history would have to be traversable by the GC. Note that by keeping things alive, there is the danger of introducing space leaks. Obviously we would not want to keep the whole evaluation history, but only the last N events, where N is a configurable parameter. Keeping track of the history is also likely to incur a performance penalty, so it might be advantageous to be able to turn it off, or perhaps have it off by default, and be able to turn it on.
It would be especially useful to be able to get backtraces when exceptions are raised.
Listing source code at breakpoints
When a breakpoint is hit, we almost always want to look at the source code around the location of the breakpoint. It is a pain to have to do this manually in another window. It would be nice if the debugger provided a
:list command, like gdb.
Andy's interactive trace viewer is another way of watching the program exeuction, and it would be good to be able to connect the debugger to it. Nonetheless, I think a
:list command would be useful on its own.
Temporarily disable breakpoints
Typically when we reach a breakpoint we want to inspect the values of local variables. As is often the case the values are thunks. So, to print them, we must force them in some way, and that sometimes raises more breakpoints. Often this is annoying. It would be handy if the debugger allowed us to temporarily disable all breakpoints. It should be relatively easy to implement. The main question is what is the right user interface to the feature?
- Merge the tick transformation of the coverage tool and the debugger. Simon: currently I have hacked Coverage.lhs so that it doesn't support the hpc tools any more. I turned a few things off and fiddled with where some of the ticks were generated. The changes aren't all that large, so it should be possible to come up with a single piece of code which serves both purposes. One thing you should be aware of is that, now, the tick function is applied to the local variables which are in scope at the tick location. This means that some of the code in the compiler for handling ticks, that is needed for hpc, probably doesn't work. This is simply because that code does not expext the tick function to be applied to anything.
- Replace Loc with a proper source span type. Currently I use a quadruple of Ints to represent a source span. Hpc also has its own representations of spans, as does GHC. It would be nice if we all used the same one (namely the one in GHC). (EASY)
- Investigate whether the compiler is eta contracting this def: "bar xs = print xs", this could be a problem if we want to print out "xs". (MODERATE)
- Save/restore the link environment at breakpoints. At a breakpoint we modify both the hsc_env of the current Session, and also the persistent linker state. Both of these are held under IORefs, so we have to be careful about what we do here. The "obvious" option is to save both of these states on the resume stack when we enter a breakpoint and then restore them when we continue execution. I have to check with Simon if there are any difficult issues that need to be resolved here, like gracefully handling exceptions etc. (MODERATE)
- Remove dependency on -fhpc flag, put debugging on by default and have a flag to turn it off. (EASY)
- Support Unicode in data constructor names inside info tables. Actually this should just be a matter of using the underlying fast string in the occname. (MODERATE)
- Fix the (sometimes) slow search of the ticktree for larger modules, perhaps by keeping the ticktree in the module info, rather than re-generating it each time. Simon: I currently re-build the tick tree for a module every time I set a breakpoint. This seems rather ugly. I think it would be better to keep the tick tree inside the ModInfo, and thus only build the ticktree when the module is (re)loaded. (MODERATE)
- Use a primop for inspecting the STACK_AP, rather than a foreign C call. (MODERATE)
- Timing and correctness tests. Pepe has some code for timing that might be useful. (MODERATE)
- Stabilise the API. (MODERATE)
- Fix the calculation of free variables at tick sites (currently done too late in the pipeline, gives some wrong results). Note a possible problem with letrecs, which means some locals vars are missing in where clause. (MODERATE/DIFFICULT)
- Extend the stack inspection primitive to allow unboxed things to be grabbed. (MODERATE)
- Prevent unification of the Unknown type family with any other type. Perhaps by giving it some special kind? (MODERATE/EASY)
- Fix GHCi so that it can work with real tyvars (are those called FlexiTyVars?) (UNKNOWN)
Partially done
- The delete command. It is fairly primitive, and probably not done in the best way. This will be fixed when the API is finalised. (EASY)
- User documentation. You're looking at it. The user manual will have to move into the main GHC docs at some point. (ONGOING)
- Perhaps there are some redundant ticks we can delete, such as ones which begin at the same start position? (MODERATE)
- Allow breakpoints to be enabled and disabled without deleting them, as in gdb. (EASY)
- Extend breaks and step with counters, so that we stop after N hits, rather than immediately. (EASY/MODERATE)
- Revert to adding tick information to the BCO directly, and remove the byte code instructions for breaks. I'm not sure that this is worth it. In some ways the implementation based on a byte code instruction is a little cleaner than adding breaks on BCOs directly. Though the bc instruction method may be a little slower than the other way. (MODERATE/DIFFICULT)
- Wolfgang's patch for PIC seems to break the strings in Info tables, so we need to fix that. (MODERATE)
- Look at slow behaviour of :print command on long list of chars. I've asked Pepe about this, he has an idea of what the problem is and will be working on a solution soon. (MODERATE)
- Allow breakpoints to be set by function name. Some questions: what about local functions? What about functions inside type class instances, and default methods of classes? One possible solution is to extend the tick tree slightly so that we can search it for function declarations. Another alternative is if the GHC API supports source location queries. The client can simply query GHC to ask what the outermost span of a declaraiton is, then we can set a tick on that span directly. Something to note is that the HPC code has some stuff in it for remembering the "path" of a function, which would be useful for naming nested functions. I don't know if it supports functions inside class declataions. (MODERATE)
- Fix the ghci help command. This can be done when we decide on the final syntax of the commands. (EASY)
- Add a commnad to show the current breakpoint stack (
:show context?)
Implementation notes
How does the debugger work?
Source code instrumentation
At the front end of the compiler we annotate the source code with ticks, based on the program coverage tool of Andy Gill and Colin Runciman. Ticks are uniquely numbered with respect to a particular module. Ticks are annotations on expressions, so each tick is associated with a source span, which identifies the start and end locations of the ticked expression.
Roughly, if
E is an expression to be ticked, its annotated form becomes:
case tick<N> of _ -> E
<N> is the module-unique number of the tick.
The ticks are added in the de-sugaring phase of the front end, and the instrumentation is implemented in
deSugar/Coverage.lhs. Note, we may eventually want to merge the source coverage tool and the debugger. If we do this, it would be useful to have a single piece of code for adding tick annotations. At the moment the debugger does not use all the ticks that the coverage tool uses.
Slightly later in the de-sugarer we add arguments ticks which correspond to the free variables in scope at the ticked expression. This is done in
deSugar/DsUtils.lhs, by the function
mkTickBox. If
a,b,c are the free variables of a ticked expression
E, then the annotation from above is elaborated to:
case tick<N> a b c of _ -> E
To make the core lint happy, we must conjure up a type for
tick<N>. If
a::T1, b::T2, c::T3 then the type is:
tick<N> :: T1 -> T2 -> T3 -> State# RealWorld
We are somewhat selective about where ticks go in the code, and it would be nice if this was documented properly. I will defer this until the code has stablised.
We assume, and indeed require, that each source span has at most one tick associated with it. This was not always upheld in the coverage tool (in the case of if-then-else expressions), so we had to modify the instrumentation a little bit.
For each module we also allocate an array of breakpoint flags, with one entry for each tick in that module. This array is managed by the GHC storage manager, so it can be garbage collected if the module is re-loaded and re-ticked. We retain this array inside the
ModDetails data structure, which is defined in
main/HscTypes.lhs. In the current implementation the array is stored inside something called
ModBreaks, which also stores an associtation list of source spans and ticks. However, the exact implementation of this depends on what we want in the API for the debugger, and it is likely that it will change soon. Also,
ModBreaks is in desperate need of a new home. At the moment it is floating around somewhere in the
deSugar directory, but that is almost certainly the wrong place for it.
Byte code generation
In the coverage tool the ticks are turned into real code which performs a side effect when evaluated. In the debugger the ticks are purely annotations. They are used to pass information to the byte code generator, which generates special breakpoint instructions for ticked expressions. The ticks themselves are eventually deleted.
The byte code generator turns GHC Core into a bunch of Byte Code Objects (BCOs). BCOs are heap objects which correspond to top-level bindings, and
let and
case expressions. Each BCO contains a sequence of byte code instructions (BCIs), which are executed by the byte code interpreter (
rts/Interpreter.c). Each BCO also contains some local data which is needed in the instructions.
Given a ticked expression of the form:
case tick<N> a b c of _ -> E
we translate it into:
let freshVar = E in E
(Note: if the ticked expression was already let-bound we do not do this step, since it would be pointless.) The idea is that the let expression will be turned into a BCO. We annotate the BCO with information about the tick, such as its free variables, their offsets in the stack, and the tick number. We also store a pointer in the BCO to a breakpoint array for this particular module (which was introduced by the coverage transformation, see above), and an offset into that array. The offset corresponds to the tick number. The entries of the array are (currently) boolean flags which, at runtime, determine whether we should stop at the breakpoint or not.
The BCIs for this BCO are generated as usual, and we prefix a new special breakpoint instruction on the front. Thus, when the BCO is evaluated, the first thing it will do is interpret the breakpoint instruction, and hence decide whether to break or not.
There is a downside to the introduction of lets: it causes more heap allocation in the debugged program. In particular we will allocate an expression on the heap, and then immediately evaluate it. We can tune the penalty to some extent by reducing the set of breakable expressions. More timing tests are needed to decide if the penalty is too high.
We experimented with alternative ways of implementing breakpoints, with the hope of avoiding this gratuitous heap allocation, but we ran into numerous obstacles which thwarted our attempts. The big issue is that when we hit a breakpoint we must leave the stack in a state which the GC can understand. The scheme described above works nicely because the first thing we do is interpret the break instruction for the BCO. At that point nothing has been done to the stack, so it is easy to leave it in a useful state. The same cannot be said for other types of expression (especially so because only lets and cases get turned into BCOs directly, everything else is just a sequence of BCIs). We initially thought that we could do something similar for the alternative branches of a case expression (since cases are the other kind of expression that gets turned into BCOs). The problem is that the scrutinee is unpacked before the branch is entered, and the unpacking pushes values onto the stack, leaving it in a state that the GC will not understand.
Stopping at a breakpoint at runtime in the byte code interpreter
Unfortunately this part of the story is somewhat complicated, c'est la vie.
To understand what happens it is necessary to know how GHCi evaluates an expression at the command line. When the user types in an expression (as a string) it is parsed, type checked, and compiled, and then run. In
main/GHC.hs we have the function:
runStmt :: Session -> String -> IO RunResult
Session argument contains the gobs of environmental information which is important to the compiler. The
String is what the user typed in, and
RunResult, is the answer that you get back if the execution terminates.
RunResult is defined like so:
data RunResult = RunOk [Name] -- names bound by this evaluation | RunFailed -- statement failed compilation | RunException Exception -- statement raised an exception | forall a . RunBreak a ThreadId BreakInfo (IO RunResult)
The first three constructors are part of the original code, and the last one,
RunBreak was added for the debugger. Hopefully the first three are self-explanatory; we will explain
RunBreak in due course.
Normally what happens is that
runStmt forks a new thread to handle the evaluation of the expression. It then blocks on an
MVar and waits for the thread to finish. This MVar is (now) called
statusMVar, because it carries the execution status of the computation which is being evaluated. We will discuss its type shortly. When the thread finishes it fills in
statusMVar, which wakes up
runStmt, and it returns a
RunResult. Ultimately this gets passed back to the GHCi command line. Actually, GHCi is merely a client of the API, and other clients could also call
runStmt if they wanted something evaluated.
To make the discussion comprehensible let us distinguish two threads:
- The thread which runs the GHCi prompt.
- The thread which is forked to run an expression.
We'll call the first one the GHCi thread, and the second the expression thread.
In the debugger, the process of evaluating an expression is made more intricate. The reason is that if the expression thread hits a breakpoint it will want to return early to the GHCi thread, so that the user can access the GHCi prompt, issue commands etcetera.
This raises a few questions:
- How do we arrange for the expression thread to stop and return early?
- What information needs to be passed from the expression thread to the GHCi thread, and how do we arrange that flow of information?
- How do we wake up the GHCi thread and return to the prompt?
- How do we continue execution of the expression thread after we have hit a breakpoint?
- What happens if we are running in the GHCi thread after a breakpoint, and we evaluate some other expression which also hits a breakpoint (i.e. what about nested breakpoints?)
- What happens if the expression thread forks more threads?
To arrange the early return of the expression thread when it hits a breakpoint we introduce a second MVar:
breakMVar :: MVar ()
When the expression thread hits a breakpoint it waits on
breakMVar. When the user decides to continue execution after a breakpoint, the GHCi thread fills
breakMVar, which wakes up the expression thread and allows it to continue execution.
Now we must return to
statusMVar and look at it in more detail. We introduce a new type called
data Status a = Break RunResult | Complete (Either Exception a)
It represents the execution status of the expression thread, which is either
Complete (with an exception or a value of some type), or
Break, to indicate that the thread has hit a breakpoint. It must be noted that the
RunResult argument of
Break is always a
RunBreak. Most likely a bit of refactoring in the code could remove this bit of ugliness.
statusMVar simply contains a
Status value:
statusMVar :: MVar (Status a)
The two MVars,
statusMVar and
breakMVar, are used like so:
- When runStmt begins to execute an expression for the first time it forks the expression thread, and then waits on the
- If the expression thread completes execution with an exception or with a final value, it fills in
statusMVarwith the appropriate
Statusvalue, which wakes up the GHCi thread. The
Statusis turned into a
RunResultwhich gets propagated back to the command line as usual.
- If the expression thread does not complete, but hits a breakpoint, it fills in the
statusMVarwith an appropriate
Breakvalue, and then waits on the
breakMVar. The GHCi thread is woken up because of the write to
statusMVar, and the
RunResultis propagated back to the command line (this time it is a
- When the user decides to continue execution after a breakpoint the GHCi thread fills in the
breakMVar, thus waking up the expression thread, and then the GHCi thread waits on the
statusMVaragain. The whole process continues until eventually the expression thread completes its evaluation.
Now we turn our attention to the
RunBreak constructor:
RunBreak :: forall a . a -> ThreadId -> BreakInfo -> IO RunResult -> RunResult
The arguments of
RunBreak are as follows, in order from left to right:
- a heap closure, specifically something which represents a chunk of the Stg stack (an
StgAP_STACK, to be precise). It is inside this object that we find the values of the local variables of the breakpoint. We use a type variable here for convenience.
- a thread ID of the expression thread. XXX Actually, we no longer use this value for anything, and it can probably be removed.
- a
BreakInfo, which stores information about the breakpoint, such as the module name, the tick number, and the stack offsets and identifiers of the local variables.
- an IO action to execute when we resume execution after hitting the breakpoint. This contains code to fill and wait on the
MVarsmentioned earlier.
Where does the
RunBreak get assembled? This is done by the I/O action which is executed by a thread when it hits a breakpoint. The code for the I/O action is as follows:
\ids apStack -> do tid <- myThreadId putMVar statusMVar (Break (RunBreak apStack tid ids resume)) takeMVar breakMVar
This is defined in
runStmt in
main/GHC.hs. We "pass" the I/O action to the runtime system by way of a global stable pointer, which is called
breakPointIOAction. Note that the thread ID is possibly redundant now, but I left it there since it may be useful for other purposes. The I/O action takes two arguments:
ids and
apStack. The first argument is the list of local variables names, paired with their stack offsets. We need this information for printing out the local vars. The second argumet is an AP_STACK closure, which contains the top stack frame of the expression thread. This is saved when the thread hits a breakpoint in Interpreter.c. The AP_STACK is used for finding the values of the local variables of the breakpoint. So,
ids and
apStack are used in conjunction for inspecting local variables. Note that the I/O action proceeds to write to the
statusMVar, which wakes up the GHCi thread, and then it waits on the
The last tricky part is how we resume execution of a thread after a breakpoint. This is the purpose of the fourth argument of
resume :: IO RunResult
As you can see it is an I/O action that will eventually yield a
RunResult. This accords with our intuition that, at least for terminating computations, we will get another
RunResult if we execute this thing. It could be another breakpoint, or it may be a final value.
resume is defined like so:
do stablePtr <- newStablePtr onBreakAction poke breakPointIOAction stablePtr putMVar breakMVar () status <- takeMVar statusMVar switchOnStatus ref new_hsc_env names status
The first thing it does is set up the
onBreakAction global variable. Then it writes to the
breakMVar which wakes up the blocked expression thread. Then it waits for
statusMVar to be filled in again. Eventually when we get a status value, we call the
switchInStatus function to decide what to do (either we hit another breakpoint, or we completed).
I've been a bit crafty in my implementation, and you will notice that
resume and
onBreakAction are mutually recursive. So in
main/GHC.runStmt you will see them defined like this:
let (resume, onBreakAction) = ( ..., ...)
The reason I did it this way is because they need to share their own versions of
breakMVar and
statusMVar. This must be understood in the context that we can have nested breakpoints. By writing them in this mutually recursive fashion, we can have multiple (
onBreaAction) pairs, and that they don't get their MVars mixed up.
When we hit a breakpoint the GHCi client pushes the
resume function onto a stack. If the user evaluates a different expression, which hits another breakpoint, its
resume function will be pushed on top of the old one. Eventually, when the user enters
:step or
:continue, the top of the resume stack is popped, and that is the action which is run next.
The view from inside the RTS:
As mentioned above, we add a new kind of BCI for breakpoints. It is called
bci_BRK_FUN. It is added as the first instruction to the BCI sequence for top-level and let-bindings, during Byte Code compilation. When the intepreter hits this instruction it does the following things:
- Check to see if we are returning from a breakpoint (by checking a bit flag in the current TSO). If so, we don't want to stop again (this time), otherwise we'd get into an infinite loop. We record that we are no longer returning from a breakpoint, and then continue to the next BCI.
- If we aren't returning from a breakpoint, then we check to see if the global single-step flag is set, or if the individual breakpoint flag for the current expression is set. If this is true, we prepare to save the stack, and call the
onBreakAction. If it is not true then we skip to the next BCI.
- If we are going to stop at this breakpoint, we create a new AP_STACK and copy the topmost stack frame into it. Then we push the current BCO onto the stack, and set up the
onBreakActionso that when we come back to this thread the action will be executed. We then record that we are now stopping at a breakpoint, and then yield to the scheduler. When the scheduler returns to this thread the
onBreakActionwill be executed, which will send us back to the GHCi prompt.
Here's how the stack is set up just prior to yielding:
Sp -= 7; Sp[6] = (W_)obj; Sp[5] = (W_)&stg_apply_interp_info; Sp[4] = (W_)new_aps; /* the AP_STACK */ Sp[3] = (W_)BCO_PTR(arg3_freeVars); /* the info about local vars of the breakpoint */ Sp[2] = (W_)&stg_ap_ppv_info; Sp[1] = (W_)ioAction; /* apply the IO action to its two arguments above */ Sp[0] = (W_)&stg_enter_info; /* get ready to run the IO action */
The first two things are the current BCO and an info table (what do you call these things anyway?). We need these so that when we eventually resume execution from a breakpoint we will start executing the currect BCO again. The next four things correspond to the call to the
onBreakAction: with its arguments pused first, then an info table, then the action itself.
new_aps is the AP_STACK which saves the topmost stack frame, and
arg3_freeVars corresponds to the list of local variable names paired with their stack offsets. Note that (a pointer to) this list is stored in the "pointers" array in the BCO.
arg3_freeVars is actually just an integer offset into that pointer array, and it is passed as the third argument of the
bci_BRK_FUN instruction.
Inspecting values
This is done exactly as it was before in the prototype debugger. See: GhciDebugger.


text:
Motel 6 Glendale properties are provided below. Search for cheap and discount Motel 6 hotel prices in Glendale, AZ for your personal or business trip. We list the best Motel 6 Glendale hotels + motels so you can review the Glendale Motel 6 hotel list below to find the perfect place.
Our search will show you discounted Glendale, AZ hotels that have a comparable rating of a Motel 6.Need a group/meeting discount? Request a group rate for Glendale AZ
How should we direct your call?


text:
Average retail gasoline prices in Arkansas have fallen 2.3 cents per gallon in the past week, averaging $3.49/g
Average retail gasoline prices in Arkansas have fallen 2.3 cents per gallon in the past week, averaging $3.49/g yesterday, according to GasBuddy's daily survey of 1,826 gas outlets in Arkansas. This compares with the national average that has fallen 1.9 cents per gallon in the last week to $3.65/g, according to gasoline price website GasBuddy.com.
Including the change in gas prices in Arkansas during the past week, prices yesterday were 14.8 cents per gallon lower than the same day one year ago and are 12.8 cents per gallon lower than a month ago. The national average has decreased 4.1 cents per gallon during the last month and stands 15.0 cents per gallon lower than this day one year ago.
"The national average has seemingly found some relative stability in the last week," said GasBuddy.com Senior Petroleum Analyst Patrick DeHaan. "And while the national average hasn't seen much movement, some areas of the country have seen volatility continue, mainly in the Great Lakes states where prices may again be poised to rise in the next couple of days as wholesale prices reverberate as refineries continue their maintenance schedules and the progressive switch over to summer gasoline continues," DeHaan said.
Arkansas Weekly Gas Price Update is provided courtesy of GasBuddy.com


text:
University of Vermont
2012-2013 Catalogue
Canadian Studies (Undergraduate Minor)
Specific Requirements
|College or School
|College of Arts and Sciences
|Global and Regional Studies Program
|Eighteen credits to include GRS 091 (HST 065 upon approval of advisor), and fifteen credits to be chosen from the Canadian content list (refer to the list of approved courses found on the Canadian Studies website) of which at least twelve credits must be at the 100-level or above.
Students will fulfill the language requirement with French.
|Through FREN 052 or equivalent.
Intro level courses for varying subject areas to get to the 100-level in course offerings.
|Ineligible majors
|Canadian Studies
|Other Information
|FREN 052 is not included in the minor credits.
- Colleges and Schools: College of Arts and Sciences.
- Departments and Programs: Global and Regional Studies Program.


text:
First, bits from the piece -- A Wave of Indie Angst Hits South Asian Cinema by Rachel Saltz -- that I'm specifically referring to:
Bollywood, until recently the home of fine romances with no kisses, now takes smooching in stride. Did anyone expect the younger generation of South Asian filmmakers to stop there? How could they, growing up not only with Bollywood — itself only a portion of the Indian film business — but also with Hollywood, Hong Kong cinema, indies and all the global culture the Internet can deliver.
You can practically see the growing pains in the competition films, mostly by first- or second-time directors. Often experimental, the selections are also self-conscious and terribly solemn. These films want to poke at corners of reality and humanity that the commercial cinema has traditionally ignored.
Now, questions I have for us all:
1) Based on your consumption of twenty-first century Bollywood and other Hindi cinema (but if you've read what is essentially my 'About Me' post, you know I tend not to make a distinction there anyway), do you believe the statements cited above are valid? Why or why not? Is Bollywood synonymous with escapism?
2) Do you pay attention to ratings assigned to Hindi films by the Central Board of Film Certification (also known as the Censor Board; official website here)? If yes, do you believe their ratings are credible? If no, does your perception of rating credibility vary when comparing India's CBFC and the Motion Picture Association of America?
3) "Bollywood has been undergoing an identity crisis lately, and the growing pains have been evident for too long." True or false? Why or why not? Do you like where it is and where it is headed?
4) Which is your favorite 'bold moment' in Hindi cinema? Please let the definition of 'bold' not be confined to how the media in the east and west are used to defining it for Bollywood. For example, I've always valued that boldness in subtlety with suggestive but classy lyrics has been a long-held trait, almost tradition, in Bollywood cinema. Boldness in theme and dialogue can be equally if not more effective than boldness in visual portrayals. (And please comment in good taste. Not to say you wouldn't, but you know how it goes.) This question is not limited by era, so if it's something that was considered 'bold' at the point in time it was released, it's certainly fair game for discussion.
Please feel free to ask questions of your own, and please respond knowing that my questions are not intented to: A) Be answered within the spectrum of film festivals -- we're talking about all Hindi films here, no matter the production sources and/or distribution channels; and B) Lead to discussions regarding the author -- in other words, what is being written is more relevant than who is writing it. As always, disagreements, while obviously encouraged for the sake of a healthy and constructive dicussion, are expected to be respectful.
Of course, I can't wait to share my answers (and if you've been reading for long enough, you probably know that I stand at an intersection point), but I'd love to hear from you first. So have at it, please!
I'll hope to be back with movie reviews soon. In the mean time, I must note that I recently added the new Apple TV to my home theater, and would very highly recommend it, especially if you're a Netflix subscriber.
Long live cinema.


text:
Of all the injured Mets who had a chance of returning this season, seeing John Maine again was easily the most important.
Billy Wagner returned, showed he was healthy and sent the Red Sox. We are finally seeing Carlos Beltran, although he might still be gimpy. Mets doctors say Johan Santana and Oliver Perez should make successful recoveries from surgery and be ready for spring training.
Then again, that's what they said about Maine.
Maine, on the disabled list since June 7 with a pinched nerve in his throwing shoulder, will throw a simulated game tomorrow, and barring any complications, start the second game of Sunday's double-header at Philadelphia.
"It feels good,'' Maine told reporters yesterday. "Strength-wise, it's not quite 100 percent. But as far as the pain, it's just not there. I think with a good off-season, I'll be able to put it behind me. It should go away and should be fine.''
The operative word being off-season. If Maine somehow didn't pitch again this year, the Mets would have nothing to evaluate and might opt to non-tender him a contract. The risk being somebody else would take a chance on him and he'd bounce back.
Personally, I think they'll tender the contract anyway because the money is rather small and would be for one year, and because the Mets don't have that many minor league options, and they are unlikely to splurge on the free-agent and trade markets. The inclination wildly spend is not there. Look on whom they passed last winter (Derek Lowe and Randy Wolf).
However, should Maine make it out of Sunday's 60-pitch audition without difficulty, he should get three more starts before the end of the season. Four starts is roughly a short spring training, but it this case it might be enough for the Mets to start formulating some plans.
Maine has as much to gain as the Mets by pitching in September, because if he proves he's healthy, and the Mets inexplicably don't tender a contract, he would enter the free-agent market.
If the Mets are able to pencil in Maine for one rotation spot, it would eliminate one of the many headaches the Mets will have to contend with this winter.
Although there has been some discussion about putting Maine in the bullpen, I don't see the Mets using this window for that kind of experiment.


text: ODU Sports Lady Monarchs Fall 1-0 To La Salle In Season Opener August 23, 2013 By ODU Athletics Play By Play/Box BOX SCORE Harrisonburg, Va. – The Old Dominion University women's soccer team fell 1-0 to La Salle in game one of the JMU Tournament and of the 2013 regular season. Friday night's game started with La Salle attempting the first four shots, but in the 28th minute it was Old Dominion's Grace Haverly who nearly scored first as she fired a shot that hit off the post. The Lady Monarchs would then test La Salle's defense again in the 36th minute of play, as senior Meghan Cozens ripped a shot that was saved by Jessica Wiggins. After a level first half, the Explorers struck first in the 50th minute of play off a Kelsey Haycook goal assisted by an Anna Dolhansky through ball. Haycook's goal proved to be enough, as La Salle held onto to defeat the Lady Monarchs 1-0. Meredith Lenox came up big on Friday night with six saves, Wiggins finished with one save. The Explorers led the shot count 17-5, with seven of those 17 shots on target compared to Old Dominion's one shot on goal. La Salle attempted five corners; the Lady Monarchs took one. La Salle has made the NCAA tournament the past two seasons and were the champions of the Atlantic 10 last year. The Explorers were picked to finish second in the Atlantic 10 this season. The Explorers returned six starters from last season including 2012 Defender of the Year Courtney Niemiec, CoSIDA Academic All-American Renee Washington and 2011 All-American Kelsey Haycook; all of whom were selected to the Atlantic 10's Preseason All-Conference Team. Old Dominion's second and final game of the JMU Tournament will take place on Sunday, Aug. 25 against the University of Richmond at 11 a.m. Live coverage for the Tournament can be found at JMUSports.com. Be sure to keep up with all the latest news regarding ODU Women's Soccer on Facebook; as well as follow @ODUWomensSoccer on Twitter!


text:
A's Acquire IF Jed Lowrie and RHP Fernando Rodriguez from Houston
OAKLAND, Calif. -- The Oakland A's acquired infielder Jed Lowrie and right-handed pitcher Fernando Rodriguez from the Houston Astros for first baseman Chris Carter, right-handed pitcher Brad Peacock and minor league catcher Max Stassi.
OAKLAND, Calif. -- The Oakland A's acquired infielder Jed Lowrie and right-handed pitcher Fernando Rodriguez from the Houston Astros for first baseman Chris Carter, right-handed pitcher Brad Peacock and minor league catcher Max Stassi.
Lowrie batted .244 with 16 home runs and 42 RBI in 97 games with Houston last year, posting career-highs in home runs, runs (43), hits (83), walks (43) and games played. He led the Astros in walks and finished second on the club in home runs, despite spending nearly two months of the season on the disabled list. The 28-year-old switch-hitter began the season on the DL with a sprained right thumb and was also out from July 15 to Sept. 10 with a sprained right ankle. Lowrie committed just eight errors in 93 games at shortstop for a .980 fielding percentage, which was the best among National League shortstops with 70 or more games. He spent the first four years of his career with Boston and is a .250 career hitter with 35 home runs and 159 RBI in 353 games over five seasons. Lowrie has appeared in 240 games at shortstop in his career in addition to 83 games at third base, 34 at second base and 11 at first base.
Rodriguez was 2-10 with a 5.37 ERA in 71 relief appearances with the Astros in 2012. He struck out 78 batters in 70.1 innings and allowed 14 of 56 (25.0%) inherited runners to score. The 28-year-old right-hander allowed a .252 batting average, including .226 against left-handed hitters and .203 against first batters faced. Rodriguez pitched in 47 games with Houston in 2011 and made his Major League debut with Los Angeles (AL) in 2009, appearing in one contest. He is 4-13 with a 4.89 ERA and 136 strikeouts in 123.1 innings over 119 career appearances.
Carter batted .239 with 16 home runs and 39 RBI in 67 games with the A's last year following a late June promotion from Triple-A Sacramento. He ranked third among American League rookies in home runs and walks (39) and was fifth in RBI, runs scored (38) and extra base hits (28). Carter made his Major League debut with Oakland in 2010 and is a .214 career hitter with 19 home runs and 46 RBI in 106 games in three seasons.
Peacock spent the entire 2012 season at Sacramento, registering a 12-9 mark and a 6.01 ERA in 28 games, 25 starts. The ERA was a career high and second highest in the Pacific Coast League, but his wins were the most in the A's farm system and tied for fourth in the PCL. The 25-year-old right-hander allowed a .275 opponents batting average and struck out 139 in 134.2 innings. Peacock was one of four players acquired from Washington following the 2011 season in the Gio Gonzalez trade and is 46-47 with a 4.32 ERA in 141 games, 126 starts, in five seasons in the minors.
Stassi hit .268 with 15 home runs and 45 RBI in 84 games with Single-A Stockton last year in a season cut short due to two stints on the disabled list with a sprained right ankle and strained right oblique. The home runs were a career-high but 12 of the 15 were solo shots. The 21-year-old catcher was originally drafted by the A's in the 4th round of the 2009 draft and is a .246 career hitter with 30 home runs and 123 RBI in 239 games over four professional seasons


text:
Among the dwindling number of Houma residents who remember the old church building replaced in the 1930s by the present Cathedral of St. Francis de Sales is Leonce Richard, 92, whose father was sexton at St. Francis for many years, living with his family on the church grounds.
Among the dwindling number of Houma residents who remember the old church building replaced in the 1930s by the present Cathedral of St. Francis de Sales is Leonce Richard, 92, whose father was sexton at St. Francis for many years, living with his family on the church grounds.
Richard recalls that the residence was close to the cemetery edge, facing Grinage Street across from the present U.S. Post Office.
There was a shed behind the house with room enough to raise chickens to supplement the family table. The back door looked out in the direction of the churches, old and new.
The location of their residence, adjacent to the church cemetery, is the basis of Richard's joking reference. "We lived in the biggest tomb in the graveyard." In truth, Richard's father who, after leaving his job of sexton went into business building brick tombs, built a tomb for himself near the edge of the cemetery. It has since been modified.
Leonce had been a small boy when the Rev. August Vandebilt recruited his father from the Delcambre-Erath area in the 1920s to become the St. Francis sexton. Since Vandebilt did not drive, one of Leonce's father's tasks was to drive him wherever his priestly duties took him.
While Leonce was eye-witness to much church history since the move to Houma, he was often too young to have kept track of precise dates. He thinks he must have been about 13 when the old church was taken down and work on the current building began, in the mid-1930s.
Leonce and his brother, since the family lived right on church property, were often recruited to fill in during church functions. He served as altar boy, usher, whatever task needed doing.
Richard remembers the fierce tropical storm (likely 1927) which brought down the bell tower seen in his picture of old St. Francis. He was probably about 7. Fearing their residence might not withstand the storm winds, Vandebilt brought the Richard family into his sturdier rectory home for safety.
During the night, Richard recalls, the bells in the church tower, moved by the wind, tolled on and on, until there was a crash and the entire tower, which was not fully attached to the church building, fell forward in the direction of Verret Street.
He thinks the bells were rehung in a temporary tower and when the present St. Francis building went up, were installed in the new church tower.
Early photographs of the present St. Francis tower show a somewhat fancier appearance. Each of the four corners where the steeple roof begins was adorned with a thin stone spire perhaps 6 or 8 feet tall. One day, while the choir was rehearsing in the loft below the tower, one of those spires loosened and fell through the roof of the building.
Leonce recalls no injuries in the accident, but he knows what came of the other spires. After they were removed from the building for safety, his father moved them to the Richard residence, by this time on Point Street, and stood them erect across the front yard.
They were discarded when the Point Street residence was sold into other hands, but Richard has photographs with family members and friends posing in front of the stones.
After high school, Leonce took a job with a prominent local accountant, L.J. Derbes. At first the work was chiefly secretarial, manually typing columns of numbers in broad spreadsheets. He was working for Derbes as World War II approached,
As more and more young men were drafted into the Army or Navy, Leonce volunteered for the Coast Guard, hoping for an assignment that would make use of his office skills and experience.
Even as the Coast Guard was putting him through grueling training to improve his typing, one officer, learning the results of a medical examination, insisted that Richard be discharged, ignoring the fact that his health difficulty would have been unlikely to have affected his work in an office setting.
After his discharge, Richard went briefly to LSU and then to Soule business college for training as a junior accountant. He returned to work for Derbes, but later was employed for many years as chief accountant by Bertoul Cheramie, the owner of Morgan City Seafood Packing Company and related businesses.
He and his late wife, Stella, raised five children, Arnold, Nevelyn, Henry, Janice (Lecompte) and Walter.
Along the way, Leonce and his late brother (then owner of Louisiana Hardware on Main Street) established a series of Best-o-burgers and a Zesto ice cream drive-in. The Best-o-burgers were on Main and Barrow streets and on Van Avenue, with the one across the street from Terrebonne General Medical Center likely best remembered.
Today, Richard is fully retired, volunteering minor assistance at son Henry's businesses about Houma.
The Courier and Daily Comet are looking for your old
photographs and the memories that go with them. In order to protect your valuable
photographs, do not send
unsolicited photographs. Instead, contact Bill Ellzey at 876-5638 and leave a message. You may also write to him at: The Courier, P.O. Box 2717, Houma, LA 70361 or contact him at email@example.com.


text:
cre8fmom quilts
Adventures of a Novelty Fabric and Selvage Obsessed Quilter
Glad you stopped by!
I am a busy wife and the mom of 19 year old twins,
a boy and a girl who are Sophomores at
Syracuse University.
I have been quilting since the spring of 2008.
I love novelty fabrics, colorful and unique.
Selvage quilting is addictive!
Who knew the "junk" we cut off and threw out would be what I now save!
I started a new tradition when I travel--visiting quilt stores!
I particularly enjoy going to stores that have been named in the Quilt Sampler Featured Shop Lists-
Wednesday, April 18, 2012
Dots of sorts
not alot of selvage info,
but great color wheels!
No comments:
Post a Comment
I love comments! Please make sure I have a way to contact you!
Newer Post
Older Post
Subscribe to:
Post Comments (Atom)


text:
For now, I've been letting things air out a bit and at least most of the musty smell has gone away.
|Kelly Family Crest
Mom's Family
This hung in the wall of our home for many years.
|Kelly Family Crest
Mom's Family
This hung in the wall of our home for many years.
LOL, I can totally relate. I went through a box the other day and found stuff from my grandmother that I did not remember ever seeing. I'm sure I have just didn't remember it. It was all new to me again and very exciting.
Learned my lesson to try and get organized because I know I have info hidden around the house that will help me.
Oh, if only we could be cloned. I'd have a genealogy clone who would do all the scanning and data entry so I could do the fun research.
What a coincidence. This weekend, I remembered a box of papers from my grandmother - put away soemwhere for safekeeping.
The difference is, you found yours and I haven't. Yet.
Dee, from Shakin' the Family Tree
I agree with what Tina says - I can totally relate. In looking for something that I knew I had in order to write a blog post, I came across all the other great "stuff" I have, not organized.
I need to get some archival boxes and put all these wonderful things away in an organized manner so I can find them easily when I want to!
I have been organizing and cataloging my collection for months. It takes time, but I am so thankful that I am doing it. When I needed to find something the other day for a cousin, I looked at my catalog and was able to go right to the correct box and there it was! Much better than the "digging through all the piles 'cuz I know it is here somewhere" of a few years ago.
I see from the picture you have lots of yellowing newspaper articles. If you have not already, I recommend transcribing all of them and also filing the transcriptions. Newspaper of old is falling apart and our newspaper of today has much less rag in it - so it is falling apart even faster.
Enjoyed visiting your blog.
Ahh, a kindred spirit! I am slowly organizing my archives and ot is definitly making a difference in my ability to find and use said Stuff!ReplyDelete


text:
Web ID: 7472221
Metaverse Art Come For Coffee Framed Print Wall Art
Metaverse Art Come For Coffee Framed Print Wall Art
Product Description
Come for coffee by courtney prahl is a high quality piece of framed artwork. the finished size of this piece is 16.5" x 31.5". it has a slim solid black flat with satin finish frame, is single matted and finished with high quality acrylic plexiglass. hand made in the usa. 100% satisfaction guaranteed.
- Features: Framed
- Measurements: 31.5 Length/Inches, 16.5 Width/Inches
- Base Material: 85% Polystyrene, 15% Paper
- Country of Origin: Made in US
Shipping & Returns
Convenient Shipping Options
Not available at your store? We can ship to you directly or to your favorite JCP location.
Easy Returns
Shop with confidence. Read our full, common sense


text:
Zacuto Featured Filmmaker ~ The Booth Brothers
Twin brothers Philip Adrian Booth and Christopher Saint Booth have been making films together since the mid-80s, and are the CEOs of "Spooked Television" for the Sci-Fi Channel. The Booth Brothers got their start after moving from England to Los Angeles, and landed a job working for Playboy. It was there that they gradually learned the craft of filmmaking, and made roughly 59 films for the company. But their true passion is ghost stories. In 2005, they made the horror film Death Tunnel, based on the actual reports of ghost sightings at the Waverly Hills Sanatorium. The brothers chose to shoot the film at the real sanatorium, and made a documentary about its history on the side. It was this documentary, Spooked: The Ghosts of Waverly Hills Sanatorium, which attracted the attention of the Sci-Fi Channel. Since then, they have made a number of films that investigate real life ghost stories, most recently The Possessed, which was released in May 2009.
"I think the story is the most important thing. I've been doing seminars in LA on the subject of keeping independent filmmaking alive. Horror films like the Saw franchise do well because of the gore. We've assimilated their style in films like Death Tunnel, but the difference is that with Saw, there's no story. Everyone dies and that's it. I've been living in America for about twenty years. I love America, but everyone here thinks that the great tragedies in history have taken place in Europe or Serbia. America has its own share of tragic tales, and we've found success in telling uniquely American stories. We find the actual places where things have occurred, and ghosts have been sighted, and we shoot there. We also make sure that every one of our shows ends with a positive message in which good prevails. In Saw, everyone dies at the end, and all it does is glorify serial killers." ~ Philip Booth
The Booth Brothers have become big fans of Zacuto equipment. According to Philip and Christopher, "The future of this industry depends on the relationship between the people who use camera equipment and the people who manufacture it. That's why we admire both Jens Bogehegn and Steve Weiss."
"Zacuto has the smoothest, most solid-locking knobs out of everything I've used and let me tell you, I've used a lot of people's stuff, from Redrock to K-Vision, or any third party spin-off. I've been through them all, and I've bought cheap, though I wish I didn't. I've wasted my money when I should have bought the better quality product in the first place, but you live and learn. Zacuto offers the smoothest gliding and tightest locking equipment available. It's so smooth and well-crafted that it feels like it comes from a German supplier. I don't think people understand the quality of Zacuto. It's an investment that will benefit you for a really long time. Why would you choose to buy something two hundred dollars less and live the rest of your time regretting it?" ~ Philip Booth.
For more information on Spooked TV and the Booth Brothers, visit www.spookedproductions.blogspot.com


text:
Christie Likely To Declare State Of Emergency
A person in Chris Christie's administration says the governor will declare a state of emergency for New Jersey on Saturday, ahead of Hurricane Sandy's expected arrival.
The governor, who returned Friday night from campaigning in North Carolina, is scheduled to hold a news conference at 11 a.m. Saturday. The person was not authorized to comment ahead of the news conference and spoke to The Associated Press on condition of anonymity.
The state's office of emergency management has been activated and voluntary evacuations have started from South Jersey's barrier islands.
Christie was criticized for vacationing in Florida with his family while a snowstorm pummeled the state in 2010. But he gained fame the following year for telling New Jerseyans to "Get the hell off the beach" as Hurricane Irene approached.
(Copyright 2012 by The Associated Press. All Rights Reserved.)


text:
This page is missing a key ingredient!
Try using the search bar to find what you need, or check out one of these awesome pages.
Keyingredient.com uses 'cookies' to give you the best, most relevant experience. Using this website means you're ok with this. You can change which cookies are set at any time and find out more about them by following this link.


text:
Maybe the best way to cut through all the spin and counterspin on the Olympics is this:
Last week, NBC was saying it would lose money on the Olympics.
Yesterday, it said it might break even.
Today, the network is saying it could turn a profit on the $1.18 billion investment.
"Yeah, we think there's a small chance, a chance we could make a little bit of money over the next couple of weeks," Mark Lazarus, chairman of the NBC Sports Group, said in a conference call from London Thursday when asked if the network might turn a profit on the games.
Lazarus attributed the change to the big ratings for the first nights of competition starting Saturday, Sunday and Monday. He said NBC expected big ratings for the opening ceremonies, but that the first few nights of ratings for competition convinced NBC there was a new market of advertisers who didn't buy in advance but would like to buy now.
And while he didn't address it in the conference call, advertisers who buy after it's no longer a gamble pay higher rates.
And that is the name of the biggest game in all media these days: Finding a way to monetize -- maximum monetize -- the content you own. That's what the queue of new Olympics buyers shows: NBC has found a way in using social and online media to drive viewers to prime time to make money on old-media TV where it can charge the highest rates. It's as if newspapers found a way to use their online and social media platforms to drive that audience back to print subscriptions or box sales.
Lazarus addressed surprisingly polite questions about the ire sounded in social media over the weekend and earlier in the week, by sounding the same theme other NBC executives have said in telephone interviews with me: The majority of American viewers and media consumers seem to like what NBC is doing. It's a "loud minority" complaining.
"The overwhelming majority of people are voting with their clicker and their mouses and their fingertips on every device, saying, 'We're with you, we're enjoying what you're doing, thank you, please continue,'" he said.
"We listen, we read, we understand that there are people who don't like what we're doing. We think that's a very loud minority, and the silent majority has been with us the first six days."
Alan Wurtzel, head of research for NBC, said the network's digital results "parallel television" in terms of success.
He said, so far, 28 million have visited nbcolympics.com, while 4.6 million have been to the network's mobile sites. The latter is double Beijing.
Furthermore, digital and social media are driving younger viewers to prime-time TV, according to Nielsen research that he cited.
"We always said this will be the first truly social media Olympics, and that's exactly how it's turning out."
Wurtzel said 82 percent of viewers surveyed by NBC have said, "with all the buzz, I have become more interested in watching the Olympics."
He said "two-thirds" of viewers surveyed told interviewers, "I've gotten in these Olympics because friends and family members are actively engaged in posting and tweeting about the games."
"Our total teen audience is up 28 percent compared to Beijing," Wurtzel said. "Viewing by teen girls is up 62 percent, teenage boys up 7 percent. Viewing by kids 2 to 11 is up 33 percent."
Indicative of how good NBC is feeling about things, Wurtzel, a self-described "research geek," felt confident enough on the phone yesterday to offer reporters his favorite "fun factoid."
"Archery is the new curling," he said. "It's delivered an average of 1.5 million viewers making it the highest-rated cable sports, beating out basketball."
He later explained that's the average for basketball -- not for basketball when the men's Olympic team is playing.
Still, there's nothing like the thought of making money instead of losing it to bring out a network executive's sense of humor -- weird as the sense might be.


text:
StackExchange, Google Team Up With USPTO To Help Crowdsource Prior Art Discovery
from the this-is-a-good-thing dept
And it's not just StackExchange and Google working together: they've teamed up with the USPTO to make it easier for good prior art to be submitted to the USPTO to (hopefully) invalidate bad patents. While we were incredibly underwhelmed by the America Invents Act, which was last year's attempt at patent reform, it has (finally) made it much easier to allow third parties to submit prior art which may be helpful to examiners during the ~18 hours they spend in reviewing each patent. There was the famed Peer-to-Patent program, which I was quite skeptical about, but this seems to take that to another level, thanks in part to the useful setup of StackExchange's system that helps float good ideas to the top.
But where this gets much more powerful is through integration in two key spots. First up, this will be integrated into Google's patent pages. Recently, Google launched its prior art finder, which tried to help people find prior art through automated searches -- but you can now also click through directly to the AskPatents site by clicking a "discuss" button that will be shown on each patent page, which will take you straight to the StackExchange page. Neat. The second integration may be even more powerful. As people find useful prior art and it bubbles to the top, StackExchange's system will make it easy to then directly submit it to the USPTO. Clicking a button will take you to an already filled out USPTO form, where a bit of additional info can be added and submitted.
StackExchange founder Joel Spolsky sees this as an opportunity to help stamp out bad patents: "Collectively, we're building a crowd-sourced worldwide detective agency to track down and obliterate bogus applications. Over time, we hope that the Patent Stack Exchange will mitigate the problems caused by rampant patent trolling. It's not a complete fix, but it's a good start."
There are still tremendous structural problems with the patent system. And, at best, a system like this just helps to prevent some of the bigger mistakes, rather than attacking any of the fundamental problems. But, given just how damaging absolutely ridiculous patents are these days, anything that helps stop bad patents has to be seen as a good thing.


text:
Employment at RIT
Faculty and Staff
Alumni and Students
Other Resources
Opportunities await you at the Rochester Institute of Technology!
Are you looking for challenging and inspiring career opportunities to put your talents to work as part of RIT's faculty and staff? Are you a student or alumnus looking for a great job opportunity? If so, you have come to the right place!
RIT is a nationally respected leader in professional and career-oriented education. Talented, ambitious, and creative students of all cultures and backgrounds—and from 50 states and more than 95 countries—have chosen to attend RIT. Why should you choose RIT?
Learn more about employment opportunities at RIT through the following resources:
Faculty and Staff Employment Resources
RIT Career Zone is a centralized repository of information for current faculty
and staff as well as those interested in working at the university. Interested
parties can search open faculty and staff positions, learn about the
university's competitive benefits program, and identify valuable
Learn More: RIT Career Zone
Student Employment Resources
The Student Employment Office, located in the University Services Center, can
assist you with finding on- and off-campus employment. You will find job
postings and resources to assist you with your employment search.
Learn More: Student Employment Office
Cooperative Education Resources
Cooperative education is the hallmark of an RIT education. It is a required
component of many of our programs and provides our students with valuable
hands-on experience in their field of study. The Office of Cooperative Education
and Career Services provide high-quality services to assist RIT students and
alumni in their co-op and career search.
Learn More: Cooperative Education and Career Services website
Alumni Resources
RIT graduates are in demand. To make the most of your career search, the Office
of Cooperative Education and Career Services is available to assist you. From
crafting resumes and writing attention-grabbing cover letters, to career
guidance and networking opportunities with professionals in your field, RIT can
assist you whether you are a recent graduate or a seasoned professional looking
for a new challenge.
Learn More: Cooperative Education and Career Services website
NTID Resources
The NTID Center on Employment assists deaf and hard-of-hearing students and
alumni in finding employment. The office can help you refine your resume,
critique your interview style, and provide tips on conducting a successful job
Learn More: Center on Employment at NTID


text:
Skip to content
How Do I...
To report an emergency in progress, call 911.
Animal License
Assessment Appeal
Online Building Permits
Committees and Commissions
Fictitious Business Name
Marriage License
Register To Vote
Birth / Death Records
(Copy of ) Marriage License
Property Tax Bill
Public Records
Vital Records
Adoptable Animals
Bid Opportunities
Parks and Trails
Sand and Sandbag Locations
Pay For
Child Support
Court Fines / County Fees
Property Taxes
Transient Occupancy Tax
Animal Abuse
Child Abuse
Code Violation
Elder Abuse
Agendas and Minutes
Burn Day Information
Daily Booking and Release Report
Election Results
Frequently Asked Questions
In-Custody Report
Open Government Data
Services & Information
ADA and Accessibility
Investor Information
Jobs, Benefits, and Business
Law and Justice
Birth, Death, and Marriage
Building, Property, and Home
Health and Family Care
Animal Services
County and Government
Community, Recreation, and Parks
Taxes and Financial Reports
Transportation and Travel
Safety and Emergency
Environment and Agriculture
Placer County Connect
Administrative Services
Agricultural Commissioner
Air Pollution Control
Board of Supervisors
Child Support
Clerk - Recorder
Community Development
County Counsel
County Executive Office
District Attorney
Economic Development
Facility Services
Farm and Home
Film Office
Fire Department
Flood Control
Health and Human Services
Human Resources
Information Technology
North Lake Tahoe
Probation Department
Public Defender
Public Works
Treasurer - Tax Collector
All Departments & Divisions
Contact Us
En Español
Section Menu
Public Works
Tahoe Truckee Area Regional Transit (TART)
TART Rider Tips
Services and Information
Public Works
Tahoe Truckee Area Regional Transit (TART)
TART Rider Tips
TART Fares
Tahoe City Transit Center
TART Route Maps
Bikes On Board
ADA Eligibility
Public Works
Tahoe Truckee Area Regional Transit (TART)
TART Rider Tips
TART Fares
Tahoe City Transit Center
TART Route Maps
Bikes On Board
ADA Eligibility
Tahoe Truckee Area Regional Transit Rider Tips
When getting on the bus, please have your monthly pass, ticket or cash fare ready.
Show your monthly pass to the driver.
Deposit tickets and cash in the fare box.
When paying with cash, please have exact change, as drivers cannot make change.
The seats closest to the front of the bus are reserved for elderly and disabled riders.
Rider Etiquette:
Food and drinks are prohibited.
Smoking is also not allowed on the bus.
Loud noises, such as music or loud cell phone conversations, are not permitted.
Animals, other than service animals, are not permitted on buses.
Carry-on parcels are limited to two per rider.
Lost and Found:
If you lose an item, call Placer County Transit at (530) 885-BUSS.
Give all found items to the driver.
Use the
route map
to determine where you are and which route(s) you will need to take to get to your destination.
Check the time
listed, or call TART for help.
Wait at a TART designated bus stop. Buses stop at TART signs along the road in direction of travel.
It is recommended that you arrive at your stop a few minutes before the bus is scheduled to leave.
All TART routes are accessible to passengers using a wheelchair. TART buses are equipped with wheelchair lifts and tie-down devices.
Before boarding the bus, allow passengers to exit, and permit the driver to assist wheelchair passengers.
Pay your
when boarding. Deposit cash, coins, or bus passes in the
electronic farebox
. You need exact change as drivers cannot make change.
The seats closest to the front of the bus and near the door are reserved for elderly and disabled riders.
Transfers between the Mainline and Hwy. 89 Routes occur at the
Tahoe City Transit Center
When on the bus, signal the driver to stop when you are one or two blocks from your destination. To signal a stop, push the yellow tape between the windows or pull the cord located above the windows.
If you are unfamiliar with the area, ask the driver for help.
Remain seated until the bus comes to a complete stop.
Not all stops are listed on bus
. Call TART for a complete listing.
Bike racks are available in the summer.
There is room for two bikes on the rack on the front of each bus on a first-come, first-served basis. You must be able to load and unload your bike without assistance. TART is not responsible for damage to bicycles.
subject to delays due to unforeseen circumstances.
Contact Tahoe Truckee Area Regional Transit
Tahoe Truckee Area Regional Transit
Mailing Address
Tahoe Truckee Area Regional Transit
PO Box 1909
Tahoe City, CA 96145
Office Address
870 Cabin Creek Road
Truckee, CA 96161
530-550-1212 or 800-736-6365
TDD Hearing Impaired: 530-550-9223
Office Hours
Mon-Fri: 6:00 AM - 6:00 PM
Sat-Sun: 6:00 AM - 4:00 PM
Directions & Map
View Larger Map