text:
There are no products matching the selectionThis is a custom CMS block displayed if category is empty.
You can replace it with any custom content.
Fire Wire
For communication from your alarm system to your fire alarm accessories, check out our stock or fire wires here at HomeSecurityStore.com. A fire wire will ensure that, with your hardwired alarm system, all of your products are running on the same connected wire. For fire safety equipment, hardwired systems are reliable and increase communication with the security of always being plugged in.
Determining which type of fire wire you need shouldn't be very difficult. It is labeled usually labeled on the box or packaging that your accessory (like a smoke detector) came in. The package should tell you how many conductors (wires) there are and the gauge size. The gauge of the wire is the thickness of it- the higher number of the gauge, the smaller the wire will be.
We offer fire wires in different lengths and wires for your convenience. It's always better to have more than you need, for the present and the future. We stock fire wire from 500 feet to 1000 feet, to cover more than enough ground in your home or business. All of our fire wire is 18 gauge, mostly because this is the standard for home monitoring wire products. Our variations of 2 or 4 wire sets is what sets based on how many feet you need is what sets us apart from the rest.
All of our fire wires are stored in convenient boxes to prevent frustration and save time. Get what you need to keep everyone safe during a fire here at HomeSecurityStore.com.
Minimal Price: $0.00


text:
In my previous post I said that delimited continuations could be used to create interesting control constructs. In this post I give examples of one such construct: coroutines.
I describe the implementation of a library to make it easier to write coroutines, and I give an example that is built on that library. If you want to go straight to the example, see the section Producer-Consumer.
Like my previous post on delimited continuations, this is a long post. However, though long, it should be much easier going than that post. You don't need to read and understand that post in order to understand this post, but it will help in two places:
- In the discussion of the
CoScheduler API and
an understanding of
shiftis required.
- You need to understand at some level about CPS code and its
when writing coroutines or using the CPS-only methods in
- Coroutines
- Why Use Coroutines
- Building a Coroutine Library
- Blocker
- CoQueue
- An Attempt to Avoid Blocking
- CoScheduler API
- CoScheduler Implementation
- DefaultCoScheduler
- Other Schedulers
- Producer-Consumer
- Resources
CoroutinesThe Wikipdeia coroutines page says coroutines are a generalization of subroutines: whereas a subroutine starts at the beginning every time it is called, a coroutine starts at the beginning the first time it is called, but can start at any other point on successive calls. Generally this means that on successive calls, it continues running from the point where it most recently returned.
Instead of using a
return statement,
coroutines typically use a
yield statement.
yield statement
indicates that the routine is done executing for now,
and will resume execution following the
yield statement
the next time it is called.
In the classic definition of coroutines, the
yield statement indicates which coroutine is to be run next.
With two coroutines, each always yields to the other;
with more than two, a coroutine might have code to determine which
other coroutine to yield to.
Unfortunately for coroutines,
is already a keyword in Scala, so we can't use it for our purposes.
We can either pick a slightly different word such as
yld or
or we can just use a different term altogether.
The classic example of the use of coroutines is a pair of routines, one of which (the producer) generates data and one of which (the consumer) consumes data. These two routines are connected by a queue; the producer puts data into the queue and the consumer takes data out of the queue.
This same producer-consumer pair is also a typical example of multi-thread code. Ted Neward uses this producer-consumer example in his blog post describing the concurrency benefits of using Scala.
In the multi-thread producer-consumer example, the producer thread runs and places data into the queue until the queue is full, at which point that thread stops running until the queue empties out enough for it to add more data. Meanwhile the consumer thread runs and takes data out of the queue until the queue is empty, at which point that thread stop running until the queue contains more data. If the host on which the multi-thread application is running contains more than one processor, both of these threads might be running at the same time.
I like to think of coroutines as being like multi-thread code, only without multiple threads. The coroutine version of the producer-consumer example works essentially the same as the multi-thread version, except that only one of the two is ever running at one point in time. The producer runs and places data into the queue until it is full, at which point it pauses and the consumer starts running. The consumer takes data out of the queue until it is empty, at which point it pauses and the producer starts running again.
In both the multi-thread and the coroutine version of this example, there is some state that is saved while each routine is paused waiting for the queue to fill or empty. In the multi-thread example, that state is saved in the thread. In our coroutine example, we use a different mechanism to save that state: a delimited continuation.
Why Use CoroutinesIf coroutines are like multi-thread code, why use them and have to deal with continuations rather than just using threads? Here are some possible reasons:
- With the default scheduler that runs everything in one thread, you don't need to worry about concurrency issues such as multiple concurrent access to shared state.
- You can create your own scheduler to control when to run each of your coroutines. If you want that scheduler to use a thread pool and run coroutines concurrently, you can do that (assuming you then deal with concurrency issues in your coroutines).
- An application can handle more suspended continuations than it can suspended threads (for example, see slide 19 of Phillip Haller's presentation on Actors, where he says an app can handle up to 5,000 threads, but up to 1,200,000 actors).
Building a Coroutine LibraryIt is possible to write coroutines directly in Scala code using
reset and
shift, but
dealing with delimited continuations can be tricky,
so I wanted to isolate all of that code into a reusable library
that would make it easier to write coroutines
as well as allow encapsulating more sophisticated
capabilities within the library.
The package name I selected for this library is
The source code is
available on github.
I started with a change that makes these coroutines look less like coroutines and more like the multi-thread model: rather than have a coroutine specify what other coroutine is to be run, I wanted to be able to specify only that the coroutine is ready to give up control. Essentially, rather than yielding to another coroutine, I always yield to a scheduler, and the scheduler selects and then yields to the next coroutine. Given such a scheduler (described below), we can create a few simple constructs on which to build our coroutine API.
BlockerIn the typical producer-consumer example, there is an explicit check to see if the routine is blocked, and if so, then a call to
yield is made.
I wanted something more generic, so I created an abstract trait
to represent the condition that a routine could be blocked by something:
package net.jimmc.scoroutine trait Blocker { def isBlocked: Boolean }The implementations of this for the producer and consumer are straightforward: for the producer,
isBlocked returns true when the
queue is full;
for the consumer,
isBlocked returns true when
the queue is empty.
Given the
isBlocked method, the typical coroutine always
includes a code fragment that looks something like this:
while (isBlocked) yield controlSince we will always be yielding control to the scheduler, we can encapsulate this into a more convenient method, which I have called
I added this function to my
Blocker trait, and delegated it to
a scheduler of type
package net.jimmc.scoroutine trait Blocker { val scheduler: CoScheduler //class must override to provide instance def isBlocked: Boolean def waitUntilNotBlocked:Unit = { scheduler.waitUntilNotBlocked(this) } }We pass
this to the scheduler so that it can call our
isBlocked method and continue our execution only
isBlocked returns false.
There is one more detail to be added to
but it is an important one.
I stated above that this implementation is built on
top of delimited continuations.
When we call
and we are blocked, we want the coroutine library to wait until we
are no longer blocked and then continue execution of our routine.
The coroutine library will be using delimited continuations to do this,
and since our routine might be suspended, the signature
for the
waitUntilNotBlocked method must
include the
suspendable annotation.
We add that annotation along with a suitable
import statement
to get our final version of
package net.jimmc.scoroutine import scala.util.continuations._ trait Blocker { val scheduler: CoScheduler //class must override to provide instance def isBlocked: Boolean def waitUntilNotBlocked:Unit @suspendable = { scheduler.waitUntilNotBlocked(this) } }
CoQueueOnce we have
Blocker, it is easy to compose a blocking
version of the standard
Queue class
(where by "blocking" I mean that the coroutine will be suspended until
the specified
Blocker is no longer blocked).
We want a version of the
Queue.enqueue function
that blocks when the queue is full,
and a version of the
Queue.dequeue function
that blocks when the queue is empty.
We create a thin wrapper around the
Queue class,
which we call
to implement our blocking methods for use with our coroutines.
For each of our two blocking conditions,
we create an instance of
with those conditions as each of their
isBlocked functions,
and we use those
Blocker instances to create our
blockingEnqueue and
blockingDequeue methods.
Because the
blockingDequeue methods might block,
they must be annotated as
which means they can only be called from within CPS code.
Here is our entire
package net.jimmc.scoroutine import scala.util.continuations._ import scala.collection.mutable.Queue class CoQueue[A](val scheduler:CoScheduler, val waitSize:Int) extends Queue[A] { coqueue => val enqueueBlocker = new Blocker() { val scheduler = coqueue.scheduler def isBlocked() = length >= waitSize } val dequeueBlocker = new Blocker() { val scheduler = coqueue.scheduler def isBlocked() = isEmpty } def blockingEnqueue(x:A):Unit @suspendable = { enqueueBlocker.waitUntilNotBlocked enqueue(x) } def blockingDequeue():A @suspendable = { dequeueBlocker.waitUntilNotBlocked dequeue } }
An Attempt to Avoid BlockingYou might wonder if we could implement
as follows so as to avoid the call to the scheduler's
waitUntilNotBlocked method:
//this won't compile def blockingEnqueue(x:A):Unit @suspendable = { if (enqueueBlocker.isBlocked) enqueueBlocker.waitUntilNotBlocked enqueue(x) }However, the compiler gives this error message:
CoQueue.scala:22: error: type mismatch; found : Unit required: Unit @scala.util.continuations.cpsParam[Unit,Unit] if (enqueueBlocker.isBlocked) ^Syntactically, the problem is that the above one-sided
if statement is equivalent to
if (enqueueBlocker.isBlocked) enqueueBlocker.waitUntilNotBlocked else ()The type of
() is
Unit, but the type of
waitUntilNotBlocked is
Unit @suspendable,
so there is a type mismatch.
You might think we could use some trickery such as this:
//compiles, but won't run properly def unitSuspendable:Unit @suspendable = () def blockingEnqueue(x:A):Unit @suspendable = { if (enqueueBlocker.isBlocked) enqueueBlocker.waitUntilNotBlocked else unitSuspendable enqueue(x) }This will compile without errors, but will not work properly. The problem is that we are trying to define one code path that is CPS (through
waitUntilNotBlocked) and one path that
is not (through
The CPS compiler plugin transforms the code to use continuations,
which, as you might recall from the discussion in my previous post,
packages the rest of the function up in a continuation and passes it
along to the called function.
But the
unitSuspendable expression does nothing with that
continuation; it neither executes it nor saves it for later execution.
Thus as soon as this code path is taken, the continuation -
which represents
the remainder of the execution of the entire delimited continuation,
including the caller of this function -
is dropped, and the whole delimited continuation is done.
CoScheduler APIThe scheduler is the piece of the coroutine library that saves the continuations for all of the participating coroutines and determines when to execute those continuations. By design, all of the tricky stuff is encapsulated in this class. I have divided the discussion of the scheduler into two section: this first section discusses at a high level the tasks for which the schedule must take responsibility, and defines an API to perform those tasks. The following section describes the implementation of that API. If you don't want to get too far into the delimited continuation stuff, you can read just this section and skip the implementation section.
I started with the requirements that it should be possible to write a scheduler that:
- uses one thread for all participating coroutines, or uses a thread pool so that multiple coroutines can run at once;
- uses a simple algorithm to select which coroutine to run next, such as round-robin, or a more complex algorithm, such as a priority-based approach;
- can be instantiated multiple times so that different collections of coroutines can be managed with different schedulers.
CoScheduler needs to define three basic functions:
- Register a coroutine.
I chose to do this with a method that accepts a block of code which
is the coroutine body.
Since the coroutine body might be suspended, the signature for that
argument must include the
suspendableannotation. I call this method
addRoutine. To improve tracing, I also pass in a name argument that can be used to identify that coroutine.
- Wait until a coroutine is no longer blocked.
This is the method to which
Blocker.waitUntilNotBlockedwill delegate. It is also called
waitUntilNotBlocked, and takes an argument which is the
isBlockedmethod will be used to make that determination. Since this method will be called from the coroutine body or a method called from that body, it must be marked as
- Run a coroutine.
There are two flavors of this: run a single step, returning as soon as
one coroutine has run and has returned control to the scheduler,
or run as many steps as possible,
until there are no more unblocked coroutines to run.
I call these two methods
runUntilBlockedOrDone, respectively. Since these methods are meant to be called from the main application, not from within a coroutine, they are not marked as
When one of the
runmethods returns, we would like to know whether there are some blocked coroutines, all of our coroutines have completed, or we don't know which because we only ran one routine. In order to return this indication, we define a sealed class
RunStatuswith three case objects representing these three possibilities.
trait thus looks like this:
package net.jimmc.scoroutine sealed abstract class RunStatus case object RanOneRoutine extends RunStatus case object SomeRoutinesBlocked extends RunStatus case object AllRoutinesDone extends RunStatus trait CoScheduler { def addRoutine(name:String)(body: => Unit @suspendable) def waitUntilNotBlocked(b:Blocker):Unit @suspendable def runNextUnblockedRoutine():RunStatus def runUntilBlockedOrDone():RunStatus }If you are interested in using the
scoroutine library
to write coroutines, but you don't care how it works internally,
then you can skip the next few sections and pick up again at
CoScheduler ImplementationThe reason for implementing
CoScheduler as a trait rather
than a class is to make it easier to create multiple implementations.
On the other hand, there is some functionality which is likely to be
the same in all implementations, and since Scala allows us to include
code in traits, we will add the implementation of those methods to the trait.
For example, given the
runNextUnblockedRoutine method,
runUntilBlockedOrDone method is a simple loop that
runNextUnblockedRoutine until it does not run something.
Likewise, if we internally create an instance of a
we can implement both that method and
on top of a single method that stores a continuation,
which we will call
This means we can create a concrete scheduler class that extends the
CoScheduler trait by implementing just two functions:
runNextUnblockedRoutine and
Below is what our implementation of
CoScheduler looks like
after making the above changes.
package net.jimmc.scoroutine import scala.util.continuations._ sealed class RunStatus case object RanOneRoutine extends RunStatus case object SomeRoutinesBlocked extends RunStatus case object AllRoutinesDone extends RunStatus trait CoScheduler { cosched => private[scoroutine] def setRoutineContinuation( b:Blocker, cont:Option[Unit=>Unit]):Unit def runNextUnblockedRoutine():RunStatus /* We use a class rather than an object because we are using the * instance as a key to find more info about the associated routine. */ class BlockerNever() extends Blocker { val scheduler = cosched val isBlocked = false } def addRoutine(name:String)(body: => Unit @suspendable) { reset { val blocker = new BlockerNever() waitUntilNotBlocked(blocker) body } } def runUntilBlockedOrDone():RunStatus = { var status:RunStatus = RanOneRoutine while (status==RanOneRoutine) { status = runNextUnblockedRoutine() } status } def waitUntilNotBlocked(b:Blocker):Unit @suspendable = { shift( (cont: Unit=>Unit) => { setRoutineContinuation(b,Some(cont)) }) } }As we already knew based on the existence of the
suspendable annotation, there are two methods that deal
with CPS code:
addRoutine and
Before examining these functions, it is worth reviewing one point about how
reset and
shift work.
When there is a
shift call within a
reset block,
the CPS compiler plugin transforms the code within the
block such that the code after the
shift block is passed
as a continuation argument to the
shift block.
The code within the
shift block is thus the last code
to be executed within the
reset block.
The code that is within the
reset but outside of the
shift is CPS code, but the code within the
block is not CPS code.
In other words, once within a
reset block, we are executing
CPS code until we get into the
shift block, at which point
we are no longer executing CPS code.
The continuation contains CPS code; if we call the continuation from
within our
shift code, we transition from non-CPS code
into CPS code.
But if we happen to save the continuation,
we can directly execute it later from any non-CPS code, and that will likewise
transition us into the CPS code of the continuation.
waitUntilNotBlocked function takes as an argument the
Blocker that will tell us when the calling coroutine is
allowed to run again, and, along with the continuation passed in to
shift, passes it to
That function saves the continuation and its associated
and returns without executing the continuation.
Because we are returning without executing the continuation,
control returns to the first statement past the end of the
reset block,
or, if the current code/continuation (i.e. the CPS code containing the call to
waitUntilNotBlocked) was directly executed from non-CPS code,
to the statement after
the point at which that continuation was executed.
addRoutine function creates a
Blocker that
never blocks, then calls
waitUntilNotBlocked with that
blocker. Since
waitUntilNotBlocked is a CPS function
(marked with the
suspendable annotation),
the remainder of the code in the
reset block is turned
into a continuation and passed along to
When that method calls
shift, the continuation we passed to
waitUntilNotBlocked - i.e. our call to
body -
is part of the continuation passed to the
Thus when that method saves the continuation, that saved continuation
includes the call to the coroutine body.
Since the continuation is not immediately executed, control returns
to the end of the
reset block, and we return from
addRoutine with our coroutine sitting in the scheduler
ready to start running.
DefaultCoSchedulerGiven the
CoScheduler trait described above, the only
functionality that remains for our concrete class is
to implement a mechanism for storing continuations
and selecting the next one to run.
implements a simple round-robin
scheduling mechanism, selecting the next runnable continuation each
time it is invoked.
Note that this implementation has been designed to be simple, but
is not very efficient.
In particular, it will not exhibit good performance when there are a large
number of coroutines of which only a few are runnable at any time.
We define a case class
BlockerInfo to tie together a
Blocker and its associated continuation,
ArrayBuffer to store an ordered set of those,
and a map to find one given a
setRoutineContinuation function adds a new
BlockerInfo to our array if we don't already have one
for the given
Blocker, or updates the existing one if we do.
runNextUnblockedRoutine function does a simple
linear scan through the array of items, starting just past where we left off
the last time, looking for the first unblocked continuation and
running it.
If there were no runnable continuations, we return a status code
without running anything.
package net.jimmc.scoroutine import scala.collection.mutable.ArrayBuffer import scala.collection.mutable.HashMap class DefaultCoScheduler extends CoScheduler { val blockerIndexMap = new HashMap[Blocker,Int] case class BlockerInfo(val blocker:Blocker, index:Int, var cont:Option[Unit=>Unit]) val blockerList = new ArrayBuffer[BlockerInfo] var nextIndex = 0 private[scoroutine] def setRoutineContinuation( b:Blocker,cont:Option[Unit=>Unit]) { if (blockerIndexMap.get(b).isEmpty) { val nextIndex = blockerIndexMap.size blockerIndexMap.put(b,nextIndex) blockerList += BlockerInfo(b, nextIndex, cont) } else { val n = blockerIndexMap(b) blockerList(n).cont = cont } } def runNextUnblockedRoutine():RunStatus = { var blockedCount = 0 for (i <- 0 until blockerList.size) { val index = (nextIndex + i) % blockerList.size val bInfo = blockerList(index) if (bInfo.cont.isDefined && bInfo.blocker.isBlocked) { blockedCount += 1 } if (bInfo.cont.isDefined && !bInfo.blocker.isBlocked) { nextIndex = index + 1 val nextCont = bInfo.cont bInfo.cont = None nextCont.get() //run the continuation return RanOneRoutine } } if (blockedCount > 0) { SomeRoutinesBlocked } else { AllRoutinesDone } } }Note that
DefaultCoScheduler does not import
the continuations package.
It does not use
or any of the CPS annotations such as
This is because none of this code is CPS code.
runNextUnblockedRoutine is called from non-CPS code,
and although
setRoutineContinuation is called from
CPS code, it does not itself call any CPS functions nor does it use
shift, so it does not need to be declared as CPS code.
Other Schedulers
DefaultCoScheduler implements a basic scheduling algorithm.
It is intended for use with small numbers of coroutines and has not
been optimized.
Other schedulers could be written that are optimized for other
situations, such as large numbers of coroutines,
coroutines with different priorities,
or "stickiness" so that a running coroutine continues to run
until it is blocked before the next coroutine runs.
Since the code that creates the coroutines starts by creating
the scheduler that controls those coroutines,
it would be simple to create a scheduler other than
DefaultCoScheduler for use with a particular
set of coroutines.
Producer-ConsumerLet's see how the Producer-Consumer example (
looks using the
scoroutine library:
import scala.util.continuations._ import net.jimmc.scoroutine.DefaultCoScheduler import net.jimmc.scoroutine.CoQueue object ProdConTest { def main(args:Array[String]) = { val prodcon = new ProduceAndConsume() prodcon.run } } class ProdCon() { val sched = new DefaultCoScheduler val buf = new CoQueue[Int](sched,2) def run() { sched.addRoutine("producer"){ var i = 0 while (i < 4) { buf.blockingEnqueue(i) } } sched.addRoutine("consumer"){ val total = buf.blockingDequeue + buf.blockingDequeue + buf.blockingDequeue println("consume total is "+total) } sched.runUntilBlockedOrDone } }After the imports and a simple
main method
for testing, we have the
ProdCon class with the
actual producer-consumer definition.
We start by setting up two objects: the scheduler that will control our two coroutines, and a queue for communication between them. We then register two coroutines with our scheduler, one for the producer and one for the consumer, and we call
to run the coroutines until
there is nothing runnable left on that scheduler.
You can't tell in this example, but the code blocks being passed to
addRoutine are CPS code, the same as the body of
reset block.
If you decide to refactor this code and push the
blockingEnqueue or
blockingDequeue calls down into a
subroutine, that subroutine will have to be marked with the
suspendable annotation.
Also, because coroutine bodies are CPS code, there are
there are some restrictions
on what control constructs can be used.
You can see what this looks like in the
ProdConTestWithSubs source code in the
scoroutine examples.
I will give some more examples in my next post, a followup about Generators.
- My original blog post on Delimited Continuations, which includes its own Resources section.
- The net.jimmc.scoroutine library on github.
- python-multitask, a similar framework for Python.

subset: commoncrawl


text:
Channel profile viewed 1 time since 11/11/2017.
Want to see competitive channels on the chart?
Add them here.
Want to add a competitive channel on the chart?
Want to add a competitive Category on the chart?
A channel's spider chart is made up of 12 data points. This spider chart demonstrates how Makenna Lehnert performs against each of the 12 data points. The teal line represents Makenna Lehnert, and the black line represents the average performance for the 178 channels in the Gay & Lesbian Interests, LGBTQ Vlogs topic.
For the channel to improve, it would help to work on the following metrics, which are areas the channel underperforms its peers.
Total Views: This channel's Total Views of 407,845 is 99.95% lower than the topic average of 38,815,006. Video Amigo metrics to focus on for growth are:
New Views: This channel's New Views of 94 is 100.96% lower than the topic average of 263,418. Video Amigo metrics to focus on for growth are:
On the other hand, this channel over-achieves its peers when it comes to:
View Growth: This channel's View Growth of 1.57% is 130.7% higher than the topic average of 0.68%. All activity starts with views. The more there are, the more opportunity there is to grow by engaging viewers.
Videos Removed: The channel beat the topic average of 1 videos removed. The goal is to never take down a video, especially one that has and is continuing to perform. Removing videos shrinks the channel's views, engagement and watch time.


text:
Friday, 27 July 2012
Eyeing up the crux, no going back now. Pallor E7 6b first ascent on the Caldera slabs, Ben Nevis.
Since my elbows finally got healthy last autumn, I've been on a mission to get strong and fit after three years unable to really train. I've been unleashing my keenness mainly the bouldering and sport climbing disciplines and although I'm still only part way through the process of getting where I want to be, I've had some good milestones. Part of a grand plan? Well sort of. Partly I've just missed pulling really hard on holds at my limit and now on a year long indulgence! But partly I know that to build my climbing to another level it has to start with bouldering, then sport climbing, then I'll have a good foundation to do something good on trad.
With all this building a new base line I've not really climbed an unprotected trad route for ages. In fact I can't really remember the last time. Yesterday we went to the Granite slab. I was just going to belay Kev and have a play on the routes. But I still took my helmet and a pair of jeans, in case.
In the end, I decided I might as well lead the first project on the slab. It feels rather hard for E7 given the height and absence of gear, but climbs just a little too easily to be happy to give it E8. So E7. I clipped some cams three moves up to stop my body rolling to the car park if I did decide to fall off and headed upwards.
In the absence of recent trad experience I fluctuated in and out of the right mindset, having conversations with myself and becoming distracted (relatively speaking of course!), then popping back into the flow for a few moves. Thankfully I flowed properly at the crux and watched myself carefully smear through and creep my fingers onto the finishing ledge. It was nice to remember why I do bold trad. It's a demanding passion but excellent when you make the investment to do it right.
I wondered if the good vibe would help me on my Steall project today. It didn't. I wasted a fine chance with a belayer and a cold wind by fumbling the same move on two consecutive attempts and failing to get back to my highpoint. I can climb it in overlapping halves every session and nearly every try and even in not so great conditions. I've been here before - 95% good enough but exhausted all the easy channels of progress. I think I've hit a wall. My patience for acting like an amateur has run out. It's time I got to grips with addressing the hard components influencing my performance that I've been avoiding.
Kev working on the line, Steall gorge behind. Nice place eh?
Wednesday, 25 July 2012
Triassic boulders on Raasay
The most I knew of Raasay was Sorley MacLean's famous and rather haunting poem 'Hallaig' in Martyn Bennett's album Bothy Culture. It brings alive a sense of the ancient and now abandoned remote communities across the island and how what seems like remote exploring for us today was once home to generations of MacLeods and Macleans until the Highland clearances. I especially liked these lines;
Between the Leac and Fearns
the road is under mild moss
and the girls in silent bands
go to Clachan as in the beginning,
the road is under mild moss
and the girls in silent bands
go to Clachan as in the beginning,
and return from Clachan,
from Suisnish and the land of the living;
each one young and light-stepping,
without the heartbreak of the tale.
from Suisnish and the land of the living;
each one young and light-stepping,
without the heartbreak of the tale.
Approaching the crux of Screapadal Prow 7C+
After last week's recce with Michael I returned to finish the giant prow. Both of us were very excited just to climb on it, whether we succeeded or not. It's a mega piece of climbing and one of the best lines of it's grade in the country for sure. I cleaned an extended start first of all - a 30 move F8c route to come back to.
Then I set about the standard start; still 23 moves with the crux being the last few. After one go I reassessed my initial estimate up to at least Font 7c+. Tired and a bit worn down from a long week of training, I knew I could only have three good goes, which were all lost to various footwork disasters. "What an amateur!" One of these ended painfully in a hole full of razor sharp blocks adjacent to the 5 mats we brought. Sporting my war wounds, I messed up the tired 4th go as well. Oh well, next trip it is then…
Michael working the moves
The last go was the formality, just to finish me off. I didn't think I'd even drag my expended arms to the crux. But of course, on this try I managed not to make any mistakes, and leapt for that finishing jug with full commitment. The walk back seemed even more scenic. A classic not to be missed if you climb the grade and you like exploratory Scottish climbing.
Doing a new climb here is something special. It's not the same as a good session at your local crag, or down the wall. For me it's an order of magnitude different. It's an experience that really does inspire and last. The distance to go there, and the risk of wasting a day or two in the rain is nothing compared to what you have to gain if you get to walk this coastline past Screapadal and the sandstone towers and find amazing lines hidden between a jungle of rocks, some unclimbably soft, some perfect.
Posted by Dave MacLeod 4 comments
Labels: hebrides, Scottish bouldering
Caldera crags
Kev checking out some future very scary granite slab climbs on Ben Nevis
On the outer rim of the Ben Nevis volcanic caldera is a ring of granite surrounding it's andesite centre. The granite is the stuff that gently baked the mica schist of Glen Nevis, giving it it's honeycomb texture that makes it so great to climb. But not much of the granite is exposed as crags unfortunately. I've often passed small outcrops of the stuff on various approaches to the Ben and thought it would be nice to find a good crag or boulder made of this stuff since it's some of the nicest rough granite I've ever seen.
One place I kept meaning to look were the obvious slabs high on the slopes of the Ben, directly above the car park for Steall. I say high - they only look high because of the savage slope leading up to them. They are actually only about 6/700m altitude. On last week's run I went past one of them and found an immaculate 15 metre slab of granite with four routes to do on it and an even bigger slab above. Two lines in particular stood out as the best gritstone style E7/8 slab climbs I've seen. A bit like the classic Cairngorm E7 'Firestone' but with even better rock.
Kev and myself couldn't resist checking them out and so we slogged up and had a play on them. As suspected, a pair of fantastic but very bold climbs to be done there. An E7 6b and E8 6c. Something to go back to when feeling rather confident. If I'd remembered my helmet, the E7 line may just have got an ascent. But probably best to have to go back with a strong mind anyway.
Posted by Dave MacLeod 0 comments
Labels: Ben Nevis
Tuesday, 24 July 2012
Mystic Stylez 8C video
Video of me doing the repeat of Daniel Woods problem Mystic Stylez in Switzerland a couple of months ago. The clip comes from the Polished Project's film about my reflections on climbing which is on the way.
Posted by Dave MacLeod 0 comments
Labels: Switzerland, videos
Tuesday, 17 July 2012
The Nevis breakfast, again
Finally needing a climbing rest day I went for another fasted run before breakfast. The weather was fine so I opted for Ben Nevis, straight up the slope from the Glen Nevis road end in a brutally steep glycogen burning continuous climb straight to the summit. Going as fast as I could, I could start to feel the glycogen tank emptying after only 45 minutes, motivation to keep slogging dying off and being replaced by a strong desire to lie down and sleep.
Having a few of these runs in the bag recently is meaning I can now keep going a fair bit better once the tank is empty and I'm making glucose out of body fat. The next 45 minutes to the summit felt predictably hard work, but some good tunes got me through it and all of a sudden strolling over the plateau to the observatory.
I sat down in the cool breeze among the crowd of summitteers, for a few minutes. I couldn't stay though, I was pretty damn hungry and the sound of many sandwiches being munched all around me was deafening. Get moving!
My legs felt worked but were still strong to bounce back down the boulderfields in a good run and off into Coire Gubishean and onto to upper Steall. Running through Steall I could really feel I was burning fat and stopping running even for a moment to clamber over rocks on jelly legs gave me an overwhelming urge to lie down. So I cruised on happily down the familiar path back to my car and an egg roll in town.
Today, I'm 34. Birthday itinerary: Swimming with the girls, book writing, feeding midges at Steall.
Posted by Dave MacLeod 10 comments
Saturday, 14 July 2012
Raasay recce
100 metres high, the grey stuff is good sandstone, and it goes on for miles along the coast. Running out of new rock in the UK? Aye...
For ages Michael and myself have been keen to go and look at the huge Triassic sandstone cliffs on the east coast of Raasay and scope out what potential there might be. After a hard day at Steall we decided now was a good time for a day trip and sped up there.
First up we checked out this huge slot of Sandstone. Beautiful rock formations and good stone. But maybe a little too sheltered to get dry enough very often. I could be wrong though. You'd get some lovely E8 and upwards 25 metre solos in here, or some great sport routes!
Then we headed along the lovely coast past Screapadal and the now long abandoned crofting communities that existed in this remote spot. As we expected, there was a TON of rock. Towering sandstone cliffs over 100 metres high with only a handful of the very easiest lines climbed, and the slope below covered in countless boulders.
Mega boulder, 20 metres high. Unfortunately made of cheese.
Both the cliff and boulders were a little dissapointing on closer inspection. The main face routes would make one of the best sport cliffs in Scotland, or some death defying barely protected trad which didn't really inspire me too much (maybe it's just not St John's Head?!). We spent ages looking round the boulders finding countless problems in the V0-V3 range that looked great, but not much for ourselves. But finally we stumbled upon one line that changed our psyche - the biggest, baddest Font 7c/+ roof in Scotland!
It looked simply awesome. But we were now counting down to run for the ferry time. The landing was full of big holes so we moved rocks for an hour and built a mega landing. I got the holds clean and moves done rapidly and then looked at my phone; we should have left 20 minutes ago to catch the last ferry! There was time for one try.
It was 22 moves long, pretty techy and a little scary at the end. I unfortunately caught a hold wrong near the end and didn't get it. I cursed, but there was nothing to do but scrabble to get trainers on and spend the next 30 minutes running at 180bpm to catch the ferry, which we did. So there is something to go back for. I'm glad in a way. It's such a lovely piece of rock, and although I'm pretty sure I can do it in an attempt or two, It'll be worth the day trip to enjoy it properly...and then try the left hand exit.
Posted by Dave MacLeod 1 comments
Labels: hebrides, running, Scottish bouldering
Another Steall milestone.
Michael gears up for another scrap with Steallworker (8b), a cloud of midges above. Get tied in, whirr your jacket around a few times to disperse the midge pack, rip the bag off your head and go!
The other day I completed a new 8b+/c at Steall. 'Irn Age' climbs pretty much all of The Fat Groove (8a) to the roofed groove and then pulls right to climb pretty much all of Maxwell's Demon (8b+). Although it has two no-hands rests on it low down, it's still a good test of stamina and a mega trip up the crag with a tough finale. I certainly felt I needed to be quite fresh for the crux of Maxwell's Demon which is right up near the last bolt after 35 metres of climbing.
After I got a nice sequence on the crux I did think Irn Age would be 8b+ and Maxwell's Demon could actually be 8b. But Michael pointed out that it is way harder than any of the 8b+s or even the 8c's I've done abroad. A classic case of a route feeling easy when you do it. Too many of the routes at Steall are my own and there's noone repeating the harder ones them despite attempts, so I don't have much info to go on to figure out what grade everything might be. Moving on...
Finally I can feel the effects of my circuits in my arms, climbing The Fat Groove without getting a pump and actually recovering on the better holds high on the route. Although it's obviously miles easier than my 9a project just to the right, it's still a confidence booster that these routes can go despite wet holds, bad weather and the odd midge.
I've put in the hours on my harder project, so I have the moves really smooth. I'm feeling 85% there fitness wise. But I think the real issue might come down to conditions. Last week I had a brief go on it again and just couldn't even hang the two crux edges. Unless it's cold and windy the tiny crystals just cut my skin. The northerlies of this week have turned out to be way too weak to be of any use at Steall.
So there are still some hurdles, but I'm making enough progress to want to keep at it for now.
Posted by Dave MacLeod 0 comments
Labels: Ring of Steall, Scottish sport climbing
Out jogging
Looking back down the lower slopes of Leitir Fhionnlaigh, my house near the bottom right and Meall na Teanga across Loch Lochy.
I rounded off yesterday's rest day with a jog in the hills around my house. Straight out of my back garden I can go straight up with a continuously steep slope to 600m altitude. If I go at high heart rate up this it's a good primer to burn some glycogen and then go for a cruise along the ridge at the top. Actually it's not really a cruise at all thanks to the huge peat troughs lining the plateau above the leitir. Every ten metres or so you jump 6 or 8 feet down into a trough and jump and commando roll back up the opposite wall. So it's a bit of an assault course! All quite good fun, especially in the rain. Getting cold, wet, muddy and burning some energy at a fast pace.
Since I've not had too many mountain cliff days out so far this summer, I'm keen to do some more runs to keep me in shape. Generally my preference is for fasted long distance hill runs at a gentle pace for 2-6 hours. It is sometimes hard to find time to fit them in though, especially when I'm doing endurance work in my climbing training so I'm doing wall circuits every day and need to be careful to eat lots to fuel the work. I could probably manage to time it well to do both and indeed I might be getting fit enough now to start experimenting with that.
Ideally I'd run pretty much all morning, then work, then eat, then climb. My biggest limitation for making it happen is probably disciplining myself to go to bed early. I do find that it's nice to have some late evening relaxation time after training and family time during the day. Plus, being a night owl it's all too easy to stay up late. I need a coach to remind me how important it is to get some rest. I've spent a lot of the past years on 6 or 7 hours sleep a night which for me just isn't enough to progress in my sport. The ideal amount would be 10 hours. For that I'd need to be well disciplined!
Posted by Dave MacLeod 0 comments
Labels: home training, running
Friday, 13 July 2012
Wet season training
If you're reading from the UK you don't need me to tell you the weather has been grim. The rain has been one thing, although you can usually get round that in Scotland given our abundance of steep crags which aren't seepy limestone. High humidity and light winds (i.e. Midge weather) have been the stopper. Actually, our rain has been very light and although there haven't been too many lovely days, the crags are in general very dry.
I could go cragging I guess, which might be good for the head. But it doesn't feel like the right thing to do for some reason. Training feels right, or at least did feel right.
I have been doing my circuits night after night. Some strange things are going on though which I can't put my finger on. I'm definitely getting less pumped per circuit. I'm even getting a reasonable amount done. Yet for some reason, I don't 'feel' fit.
When warming up I'm feeling rough and starting from a low base. And even once I'm going I feel heavy. I'm guessing it's just one of those periods you have to go through every so often. So I'll carry right on, until my body decides to wake up to the message that I need it to get fitter and stronger.
To be fair, I do have a hunch that I was actually losing fitness when I was having all those sessions at Steall just on the one route. I've had that before and it can be quite marked. So I probably am starting from a low base! It's quite early days too - 2 or 3 weeks on plastic after a long time away from it. So maybe I shouldn't be so surprised that it feels like a bit of a shock to the system. We'll see how things go for another couple of weeks and if the conditions are still poor for Steall I'll decide whether it's best to train more or go out and do some trad new routes. My bias will definitely be to train more. Doing trad new routes is always what I do in summer and although I love it, it might be a nice time to do something different and really make a 100% effort to do the hardest piece of climbing I've done.
There's no doubt that there will be good conditions at some point during July and August. But even if it takes until September, at least I'll have some endurance to speak of! When deciding like this I guess you have to really weigh up what success on the project would mean for you. For me, it would be the most important climb I've ever done (quite apart from being the hardest for me personally since it's not my style). It would be such a great milestone to move on to something fresh.
Quite a strong argument to train like hell..
Posted by Dave MacLeod 1 comments
Subscribe to: Posts (Atom)


text:
November Script W00 Regular Fonts
<link href="//db.onlinewebfonts.com/c/efc894f2ce5e44a3258e3ea7c41388b2?family=NovemberScriptW00-Regular" rel="stylesheet" type="text/css"/>#2 Using @import CSS directive, put the following line in add to your css file.(http | https)
@import url(//db.onlinewebfonts.com/c/efc894f2ce5e44a3258e3ea7c41388b2?family=NovemberScriptW00-Regular);#3 Use font-face declaration Fonts.(http | https)
@font-face {font-family: "NovemberScriptW00-Regular"; src: url("//db.onlinewebfonts.com/t/efc894f2ce5e44a3258e3ea7c41388b2.eot"); src: url("//db.onlinewebfonts.com/t/efc894f2ce5e44a3258e3ea7c41388b2.eot?#iefix") format("embedded-opentype"), url("//db.onlinewebfonts.com/t/efc894f2ce5e44a3258e3ea7c41388b2.woff2") format("woff2"), url("//db.onlinewebfonts.com/t/efc894f2ce5e44a3258e3ea7c41388b2.woff") format("woff"), url("//db.onlinewebfonts.com/t/efc894f2ce5e44a3258e3ea7c41388b2.ttf") format("truetype"), url("//db.onlinewebfonts.com/t/efc894f2ce5e44a3258e3ea7c41388b2.svg#NovemberScriptW00-Regular") format("svg"); }
Copyright (c) 2009 by Emil Bertell. All rights reserved.
Copyright (c) 2009 by . All rights reserved.
November Script REGULAR TEST is a trademark of Emil Bertell.
Scritzy X
Scritzy XStyle
1.000 1996 initial releaseCompany
Ray LarabieAuthor
Ray LarabieCopyright
1996 Ray Larabie. This font is freeware. Read attached text file for details. Info & updates visit www.larabiefonts.com. Donations gratefully accepted at www.larabiefonts.com/donation.html. Also visit my commercial type foundry at www.typodermic.com. This font was updated in 2004.Description
Larabie Fonts is able to offer unique free fonts through the generous support of visitors to the site. Making fonts is my full-time job and every donation, in any amount, enables me to continue running the site and creating new fonts. If you would like to support Larabie Fonts visit www.larabiefonts.com for details.
Expressway Cd Lt Italic
Style : Condensed Light ItalPackages
Condensed Light ItalVersion
Ray LarabieAuthor
Ray LarabieTrademark
Expressway is a trademark of TypodermicCopyright
(c) 2005 Typodermic. Do not distribute. Report Piracy to firstname.lastname@example.com. Visit www.typodermic.comDescription
Updated in March 2007 with improved accents, kerning, class-based kering, Hungarian and Romanian characters.
FreightText BlackItalicSC V1
Style : BlackItalicSCPackages
1.000 2004 initial releaseCompany
Joshua Darden & Phil's Fonts, IncAuthor
Joshua DardenTrademark
Freight Text is a trademark of Joshua Darden & Phil's Fonts, Inc.Copyright
Copyright 2004, Joshua Darden & Phil's Fonts, Inc. All rights reserved. Published by Garagefonts USA 301-260-2285 www.garagefonts.comLicense
---------------------GARAGEFONTS---------------------Phil's Fonts/GarageFonts End User License AgreementSoftware means the computer program contained in this package (which may include digitally encoded, machine readable, scalable outline font data as encoded in special format), together with all codes, techniques, software tools, formats, designs, concepts, methods and ideas associated with the computer program and all documentation related thereto.Phil's Fonts, Inc./GarageFonts (Phil's), hereby grants you, and you agree to accept a non-exclusive, non-transferable, limited license (the License) to use the Software solely for your own customary business or personal purposes. Under the terms of this License Agreement, you have the right to use the software on up to five (5) CPUs.If you need to have access to the Software on more than five (5) CPUs, you must pay Phil's the applicable fees for typefaces used in a multi-system environment. You acknowledge that licensing fees for the Macintosh and PC formats are separate and individual fees.Fonts can be embedded in files such as Adobe Acrobat PDF files for viewing and printing purposes only.No rights are granted to you other than a License to use the Software on the terms expressly set forth in this Agreement.You agree to maintain the Software and other proprietary information in strict confidence and to establish reasonable procedures regulating access to and use of the Software.You will not make or have made, or permit to have made any copies of the Software or portions thereof, except as necessary provided, however, that you may make one copy for back-up purposes for its use with the authorized number of systems hereunder. You agree that any such copies shall contain the same proprietary notices which appear in the Software.Except as stated above, this Agreement does not grant you any right to patents, copyrights, trade secrets, trade names, trademarks (whether registered or unregistered), or any other rights, franchises or licenses in respect of the Software.You agree that you will not modify, alter, disassemble, decrypt, reverse engineer or decompile the Software.This License shall continue until the last use of the Software, unless sooner terminated. This License may be terminated by Phil's if you fail to comply with the terms of this License and such failure is not remedied within thirty (30) days after notice from Phil's. When this License expires or is terminated, you shall either return to Phil's or destroy all copies of the Software as requested.You agree that you will not export or re-export the Software in any form without the appropriate United States and foreign government licenses.The parties agree that all warranties, express or implied, including warranties of fitness for a particular purpose, merchantability and noninfringement are excluded.Your sole and exclusive remedy and the sole liability of Phil's in connection with the Software is repair or replacement of defective parts, upon their return to Phil's. In no event will Phil's be liable for lost profits, lost data or any other incidental, or consequential damages, or any damages caused by abuse or misapplication of the Software.You shall not sublicense, sell, lease or otherwise transfer the Software without the prior written consent of Phil's.Use, duplication or disclosure by the Government is subject to restrictions as set forth in subparagraph (c)(1)(ii) of the rights in Technical Data and Computer Software clause at 252.227-7013. Maryland, USA law governs this agreement.You acknowledge that you have read this agreement, understand it, and agree to be bound by its terms and conditions. Neither party shall be bound by any statement or representation not contained in this agreement. No change in this agreement is effective unless written and signed by properly authorized representatives of each party. By opening this package or downloading these font files from the internet you agree to accept the terms of this agreement.Call Phil's Fonts if you need to purchase additional licensing.In USA and Canada call 1-800-681-9375, all others call 1-301-879-6955. Fax: 1-301-879-0606.Phil's Fonts/GarageFonts License Upgrade ScheduleEach Phil's Fonts/GarageFonts Font package is automatically licensed for use with five (5) computers (CPUs) at a single (1) location(site) in a single format (e.g. Mac PostScript). Licenses for additional CPUs must be purchased. Additional formats and/or platforms may be purchased at the same time as the original purchase for 50% of the price of the first format. Individual sites, persons or business entities must purchase individual licenses beginning with the original price. The following upgrade cost schedule is calculated based on multiples of the original list price of each font or family:-------------------------------------------------6 to 25 CPUs, multiply original font or family price by 1-------------------------------------------------26 to 50 CPUs, multiply original font or family price by 2-------------------------------------------------51 to 75 CPUs, multiply original font or family price by 3-------------------------------------------------76 to 125 CPUs, multiply original font or family price by 4-------------------------------------------------126 to 175 CPUs, multiply original font or family price by 5-------------------------------------------------176 to 250 CPUs, multiply original font or family price by 6-------------------------------------------------251 to 375 CPUs, multiply original font or family price by 8.5-------------------------------------------------376 to 500 CPUs, multiply original font or family price by 11-------------------------------------------------501 to 625 CPUs, multiply original font or family price by 13.5-------------------------------------------------626 to 750 CPUs, multiply original font or family price by 16-------------------------------------------------751 to 875 CPUs, multiply original font or family price by 18.5-------------------------------------------------876 to 1000 CPUs, multiply original font or family price by 21 -------------------------------------------------For more than 1,000 CPUs use the following formula to get multiplication factor:CPUs: In increments of 250.(maximum number of CPUs divided by 100) plus 11 (=Multiplier).Example: End user has 1350 CPUs, so the Multiple User License price is to be calculated as follows:(1500 divided by 100) + 11 = 26 (= Multiplier)(c)Phil's Fonts/GarageFonts501 Olney Sandy Spring Road, Suite 201Sandy Spring MD 20860Ph. 301.260.22851.800.681.9375Fax 301.260.2277
MateusBold Beveled V2
MateusBold BeveledStyle
1.000 2012 initial releaseCompany
Paulo W, Intellecta DesignTrademark
MateusBold Beveled is a trademark of Paulo W, Intellecta Design.Copyright
Copyright (c) 2012 by Paulo W, Intellecta Design. All rights reserved.Description
Copyright (c) 2012 by Paulo W, Intellecta Design. All rights reserved.
Pepito W00 Regular
Emil BertellAuthor
Emil BertellTrademark
Pepito is a trademark of Emil Bertell.Copyright
Copyright (c) 2011 by Emil Bertell. All rights reserved.Description
Copyright (c) 2011 by Emil Bertell. All rights reserved.
1.00 May 17, 2014, initial releaseAuthor
wates awalCopyright
WAAS (bandung). 2014. All Rights ReservedDescription
This font was created using FontCreator 5.5 from High-Logic.com
NatGrotesk Nar W08 Regular
ParaType, Inc.Author
Natalia VasilyevaTrademark
NatGrotesk is a trademark of the ParaType, Inc.Copyright
Copyright (c) ParaType, Inc., 2009. All rights reserved.License
mi letra Regular
mi letraStyle
FontStruct is a trademark of FSI FontShop International GmbHCopyright
Copyright punchis 2009Description
This font was created using FontStruct (http://fontstruct.fontshop.com)License
Creative Commons Attribution Share Alike
NewWGL4Font V30 V2
1.02; January 29, 2000Author
Anastacia E. ZittelTrademark
NewWGL4Font is a registered trademark of High-Logic.Copyright
Typeface High-Logic. 1999, 2000. All Rights ReservedDescription
insect dingbat


text:
Description:Storage Works MSL6030 Ultrium Tape Drive Option Part# 330731-B23
Overview:The HP StorageWorks MSL6000 Series Ultrium Tape Libraries provide performance and investment protection. Designed to maximize the performance of the Ultrium 460 tape drive the MSL tape library also provides unparalleled flexibility. The MSL tape library can be scaled with other MSL libraries using a pass-through mechanism for up to 16 drives and 240 slots allowing a single library to grow and change with capacity and technology needs. In addition the MSL6000 libraries are easily managed through an intuitive GUI control panel and integrated remote web management.??The MSL6000 tape libraries offer the highest storage density in their class. The MSL6030 supports up to two Ultrium 460 tape drives and 30 cartridges per module. Compatible with a wide variety of operating systems software applications and server platforms the MSL6030 will fit in your environment.


text:
Business Insider has learned the exact terms of Box's $125 million fundraising—and it makes it pretty clear that the company is gunning for an IPO.
Officially, Box CEO Aaron Levie is downplaying the idea of going public.
"We can do way more as a private company than we can as a public company," Levie recently told AllThingsD.
Okay. But General Atlantic, which led the Series E round, agreed to take convertible preferred shares in Box, VC Experts tells us. Previous investors had gotten participating preferred.
What's the difference? In the event of a liquidity event—a sale, in other words—participating preferred investors get to double dip.
Assuming typical terms, they'd get their money back, and then get a proportional share of the remaining proceeds.
Here's an extremely simplified example, ignoring a lot of details: Say that an imaginary firm called Thomarow Partners invested $100 million for 10 percent of a company that had a $1.5 billion sale, Thomarow Partners gets its $100 million back, plus 10% of what's left, or $1.4 billion.
That means Thomarow gets $240 million—16 percent—of $1.5 billion, instead of 10 percent, more than doubling its money. Pretty sweet, huh?
Convertible preferred shareholders always get their money back, but they don't get the participating double dip. If Thomarow got convertible preferred shares, it would only get $150 million in the scenario we just laid out. (It's obviously more complicated than all of this—there are dividends and other negotiated structures to increase investors' returns.)
Box clearly had negotiating leverage with prospective investors. But we'd point out that General Atlantic is a sophisticated operation which has backed now-public companies like ServiceSource and Facebook.
So General Atlantic has a strong incentive to hold out for a Box IPO. In the event of a public stock offering, both participating and convertible preferred shareholders typically convert their shares to common stock, which ends up with a more equitable outcome for everyone.
A Box spokesperson declined to comment.
Here's what we think is going on: Levie wants to manage employees' expectations, lest they get worked up over the notion of an IPO coming in the immediate future.
So he's telling them one thing. The terms he agreed to say another.
Judging from past investments, we don't think General Atlantic is in a rush to push Box into the public markets. It led a $66 million investment in ServiceSource, another enterprise startup, in 2007; ServiceSource didn't go public until 2011.
But it's clear that General Atlantic has an incentive to make sure Box goes public rather than selling to a larger concern—like Yammer just did to Microsoft. It's right there in the terms of its investment.


text:
Practical Christian Application and Reference Resources
Hosted at SHEPHERDPUPLINUX.US
This content posting board is currently sub divided into the the following sections:
PCARR Main Threads:
HomePage - Home Page (including bible book summaries and system guides and helps)
FeatureHome - Featured Christian Resources
DailyApplications - User contributed ways of applying scripture to daily life.
BibleNotes - User contributed bible notes (Word, Verse, Chapter, Book, Topic study notes)
DoctrinalStudy - A growing collection of historical creeds/confessions/catechisms and doctrinal works.
RealGod - Real Life Real People Real God testimonies and user profiles.
MyPad - A place for personal user notes and jots.
devotion:MyDevotions - Individual and group bible devotions home page
MyApps - User scripted pcarr applications: Journals, Calendars, Date driven Devotionals, RSS News Feeds etc...
journal:MyJournal - Journal app using the PCARR comment facility.
For information regarding how to become involved in the development of these Christian resources please see: PracticalChristian and PbiblxHelp


text:
Thursday-Saturday, May 24-26
at Oshkosh, Wisconsin
° Rob Bailey (junior from Ogden Dunes, Ind./Portage HS), 3,000-meter Steeplechase (seeded 3rd among 16 entrants, 9:09.89) Note: Rob qualified for nationals on the last possible day with a school-record performance at the North Central Last Chance Invitational. His time (9:09.89) bettered a 29-year-old record set by Mark Northuis who is now his distance coach at Hope.
° John Donkersloot (freshman from Zeeland/Zeeland East HS), High Jump (seeded 3rd among 18 entrants, 6-10 3/4).
° Nora Kuiper (junior from Parchment/Parchment HS), 100-meter Dash (seeded 11th among 20 entrants, :12.13)
° Lindsay Lange (senior from Manistee/Manistee HS), 100-meter Hurdles (seeded 11th among 20 entrants, :14.49) and Heptathlon (seeded 3rd among 18 entrants, 4,596 points) Note: Lange has been an NCAA All-American three consecutive years -- 7th in 400-meters in 2005, 3rd in heptathlon in 2006, and 4th in heptathlon in 2007.
° Christina Lis (junior from Novi/Novi HS), High Jump (seeded 2nd among 18 entrants, 5-7 1/4) Note: Was an All-American high jumper in 2007, finishing sixth.


text:
Topic: Mandalorian Armor, more then meets the eye?
So i was thinking, Boba's "color scheme" is a dark green and tanish, while Jango is a blue and silver, well when we see Jango we see him as a buisness man in AOTC and Boba in 'Empire' as the been through the jungle a few times type of warrior. My question is, would Boba's appearance change the way we view him, if for instance it was red or maybe a dark brown instead of the green thats so recognizable to his character?
―Peter Griffin


text:
PLSJC Director Alan Hall writes a weekly column discussing library and community news, history, and other interesting subjects.
Building a library's collection is the task of the librarian.
The purpose of that collection is to meet the information needs of the users of that particular library.
That purpose will vary depending on the type of library, the community of users, and the reason for the library.
That task has sure changed over the past decade.
When I was in Library School 32 years ago, much of the curriculum was centered on the selection process for building a collection for a library.
It is a never-ending process of adding new items, and removing outdated and worn items.
The problem with this picture in 2008 is that a library collection has grown far beyond just shelves of books.
Today, we have various media sources and things not even physically in the library building that forms the "collection."
Magazines, newspapers, and pamphlets were added to libraries in the early 20th Century.
By 1950, long-playing records and films made their appearance as the first audio-visual products in the library collection.
The task of collection development became more difficult as these audio-visual items had a shorter lifespan in the collection when compared to books.
A book purchased by a library can remain part of the collection for 20-30 years. Our library's collection even contains a few items more than a century old.
As audio-visuals appear and disappear from the information marketplace, libraries start over collecting in the new format.
Films and records became videocassettes and audiocassettes, which moved aside for DVDs and CDs.
It remains difficult to build a collection based on these items as they "keep changing" and wear quickly being used by the public.
Books can be mended, DVDs and CDs need special equipment to clean and rebuff their surface for continued usage.
What is the library's collection today, and where is it physically located?
As libraries found that they could not collect all of the items needed to satisfy people's information requests, cooperative systems were developed with the available technology.
Our cooperative now includes 73 public libraries with 5.6 million items, all online with borrowing abilities.
The Internet and online databases that we purchase for usage supplement our collection.
If we stop paying for these, they go away and we have nothing to show for our purchase.
The library collection of 2008 is not just what is contained within the walls of the physical building, it is also what is available through the services of the library.
People access their library by physically entering one of our libraries, telephoning through the 26 lines that serve our system, e-mailing the library through our Web Page, or electronically using our resources.
Some folks checkout e-books without ever interacting with a library staffer.
All in all, public libraries remain as one of the few institutions remaining in our society that still provides a human factor for the public.
Many public services and offices have been closed and replaced by an 800 number answered by someone in a far-off place, or an Internet site where you wait for the desired response in 24 hours, likely 2 weeks if ever.
Whatever "front door" you use to access the library; welcome.


text:
Email us 24/7 My Name is Jess and I would be happy to answer any questions about our rings or the process to make them. I am physically in our office from 9-4:30, M-F, EST. Handmade in Topsham, Maine by Brent. We create beautiful and meaningful jewelry in sterling silver, 10k gold, 14k gold, 18k gold, palladium and platinum.
our number is toll free 1-888 370-7042.
Need to speak to a salesperson? We're here to help - use the contact options below.
(888) 370-7042
Please check this box to confirm you are not spam: I am not spam!
Leave this empty:
Items with a * are required
brent&jess is home of the original fingerprint wedding rings. We work in platinum, palladium, rose gold, white gold, yellow gold, and sterling silver. Each ring is customized and personalized to you through a personal consult. Start the process today
We'd love to hear from you!
(888) 370-7042


text:
Those strange sightings 'round Jefferson Parish crime hot spots of martial-arts godhead/actor/musician Steven Seagal dating back to the late 1980s?
The A&E cable network announced Monday that production has begun on "Steven Seagal: Lawman," a reality series that will document Seagal's work as "a fully-commissioned deputy with the Jefferson Parish Sheriff's Office."
"I've been working as an officer in Jefferson Parish for two decades under most people's radar," said Seagal, as quoted in the release. "I've decided to work with A&E on this series now because I believe it's important to show the nation all the positive work being accomplished here in Louisiana - to see the passion and commitment that comes from the Jefferson Parish Sheriff's Office in this post-Katrina environment."
The release continues: "Until now, Seagal has never sought publicity for his work with the Jefferson Parish Sheriff's Office. However, over a span of almost two decades, he has regularly gone out on patrol and worked major cases. The series will allow fans to ride shotgun with Seagal as he and his hand-selected elite team of deputies respond to crimes-in-progress. Then, when Seagal goes off-duty, the cameras will continue following him as he pursues his many ventures - including musical performances and philanthropic efforts - in Jefferson Parish and New Orleans."
In addition to 20 years of ride-alongs and working major cases, the release says, Seagal, "an expert marksman" and "a 7th-degree black belt in aikido," has worked with the JPSO's SWAT team and has instructed officers in firearms and hand-to-hand combat.
"Steven has a very close relationship with the Jefferson Parish Sheriff's Office and I'm proud to have him as part of our team," says Sheriff Newell Normand in the release. "I cannot tell you how honored I am to not only be affiliated with Steven, but with A&E and all their support in highlighting the efforts, the trials and the tribulations of the men and woman of the Jefferson Parish Sheriff's Office."
Seagal's film credits include "Above the Law," "Hard to Kill," "Under Siege" and "Under Siege 2: Dark Territory" and "Exit Wounds."
"Steven is a hero both on and off camera and helps fight crime because he cares about the community," said Robert Sharenow, senior vice president non-fiction & alternative programming for A&E, in the release. "It's such an amazing revelation that this larger-than-life star has been doing real police work for nearly 20 years."


text:
The Numerical Algorithms Group has released Fortran Builder 5.2 which features an implementation of the most recent Fortran 2003 standard and an IDE. Fortran Builder supports Microsoft Windows while providing a Fortran-aware editor, build system, GUI debugger and help system for Fortran. The NAG Fortran Compiler is also available for other platforms.
Key new NAG Fortran Compiler features include:
- More information, including line number, displayed in runtime messages
- More Fortran 2003 features
- Quad precision real and complex
- I/O library multi-threaded for performance
- Improved RANDOM_NUMBER generator
According to Malcolm Cohen, a NAG principal technical consultant and Editor of the ISO/IEC Fortran Standard comments, "Fortran users do not always consider that they ought not to depend on a single compiler, which may be set to sacrifice accuracy, standards-conformance and portability in exchange for speed. NAG's Fortran Builder is probably the best checking compiler available. It is very exact in the interpretation of Fortran standards and incorporates cutting-edge run-time checking features including: procedure interface checking across multiple files; undefined variable trapping; memory leak detection; and more. Many report that their use of NAG Fortran Builder for maintaining standards, debugging and verification of their Fortran programs is invaluable, even if they also use another compiler".
Trials versions of Fortran Builder are available here.


text:
Innovations in Graphene Sensors, Magnetostructive Sensors, Haptic Gloves, Ultrasonic Sensors, and RFID Sensing Tags
This issue of Sensor TechVision TOE highlights advancements in and applications for graphene sensors, haptic gloves, magnetostrictive sensors, ultrasonic sensors, and RFID temperature sensing tags. Sensor TechVision Opportunity Engine (TOE) captures global sensor-related innovations and developments on a weekly basis. Innovations are directed toward developing smart and intelligent sensors with functionalities beyond sensing. Research focus areas include: low power sensors (energy harvesting), industrial automation sensors (M2M, vision sensor), ubiquitous sensor (WSN, sensor fusion), smart sensors (wearables, quantified self), high sensitivity and smaller size (MEMS, nanosensors), and improved security (CBRNE, terahertz). The need for low power, smaller, lighter sensors with enhanced performance attributes and minimal false alarms is driving innovations in the sensors space. The Sensors and Instrumentation cluster covers innovations pertaining to technologies such as wireless sensors and networks, energy harvesting, haptics and touch, MEMS and nanosensors, Terahertz, ubiquitous/smart sensors, CBRNE, quantified-self, sensor fusion, M2M communications, and drones. Keywords: Graphene sensors, haptics, magnetostrictive sensors, ultrasonic sensors, RFID tags. temperature sensing, non-contact sensors, food monitoring
1. Innovations in Graphene Sensors, Magnetostructive Sensors, Haptic Gloves, Ultrasonic Sensors, and RFID Sensing Tags
Features of this research
- Total Technical Insights Alerts
- Technical Insights - Aerospace and Defense
- Technical Insights - Energy & Power Supply
- Technical Insights - Healthcare
- Technical Insights - Electronics & Security
- Technical Insights - Information and Communication Technology
- Technical Insights - Semiconductors
- Technical Insights - Automotive and Transportation
- Technical Insights - Sensors & Instruments
- Technical Insights - Environment & Building Technologies
- Technical Insights - Industrial Automation & Process Control
- Technical Insights- Building Management Technologies
- Technical Insights - Chemicals & Materials
- Technical Insights - Healthcare & Life science IT
- Technical Insights - Pharmaceuticals & Clinical Diagnostics
- Technical Insights - Industrial & Process Control
- Sensors and Instrumentation Technology Cluster
- Energy and Utilities Technology Cluster
- Information and Communication Technology Cluster
- Microelectronics Technology Cluster
- Environment and Sustainability Technology Cluster
- Medical Devices and Imaging Technology Cluster
- Advanced Manufacturing and Automation Technology Cluster
- Technical Insights - Test & Measurement
- Technical Insights - Measurement & Instrumentation
Help Desk
For more information and general enquiries, contact Frost & Sullivan near you.
Select a location near you..


text:
OMAHA, Neb. - You want your home to look perfect during the holidays, especially when you expect more visits from friends and relatives. You decorate with twinkling lights and greenery and spend more time cooking – and cleaning. And your schedule is busier than ever. The Maids, the only franchised residential cleaning service to clean for health using environmentally preferable products, offers these 12 days of holiday cleaning tips to make your home sparkle without adding extra stress to your life. Sing it to the tune of the famous song to make your chores more enjoyable.
First Day of Christmas: Clean the inside of the oven and the top of the stove. You don't want the smell of roast turkey, ham or chicken mixed with the smell of last Thursday's "meatloaf surprise."
Second Day of Christmas: Clean out your refrigerator to make room for leftovers. Make sure you have adequate storage containers and space for the extra food before the meals begin. Leave an open box of baking soda inside to absorb any odors your holiday goodies might leave behind.
Third Day of Christmas: Empty coat closets of extra outerwear like spring jackets and sweatshirts to make room for your guests' outerwear. Consider donating any outgrown apparel to a local charity organization.
Fourth Day of Christmas: Empty all trash containers. Clean and disinfect inside and out with warm, soapy water and a neutral disinfectant. Drop several extra trash liners inside each container before relining for a quick and easy way to remove future trash when it really starts to pile up.
Fifth Day of Christmas: Clean the tops of ceiling fan blades and inside ceiling lamp globes. This ensures no surprising plummeting dust bunnies!
Sixth Day of Christmas: Remove clutter from tops of kitchen counters as this gives a more open feel, plus family and friends tend to congregate in the kitchen during holiday gatherings. Find a home for mail, magazines, books and other items that tend to pile up on tables and in the home office.
Seventh Day of Christmas: Launder and press bed dressings for any overnight guests. Leave clean towels in each guest bedroom and top with a holiday candy piece or two to make your guests feel pampered.
Eighth Day of Christmas: Move furniture, like small end tables and large potted plants, to a spare room to allow for extra chairs and sitting space around the tree for opening gifts.
Ninth Day of Christmas: Dust all surfaces, including areas such as baseboards and windowsills. Pay attention to collectibles and picture frames — items you'll want to "show off" to your holiday guests.
Tenth Day of Christmas: Be sure your bathrooms meet the white-glove test. Remove personal items from countertops and clean the toilet, sink and mirror to a sparkling shine. Use window cleaner on fixtures for extra gleam!
Eleventh Day of Christmas: Vacuum home from top to bottom, paying attention to areas such as the dining room, living room and kitchen, where people will gather the most. Don't forget about your upholstery and hard-surface floors. They collect dust and dirt too!
Twelfth Day of Christmas: As your last task, set and style the table. You will be glad this is complete before the holiday becomes hectic with cooking and preparing final details for your guests' arrivals.
Source: The Maids
Have something to say? Share your thoughts with us in the comments below.


text:
A new study has shown seven in ten parents feel 'pressured' into paying hundreds of pounds every year for school trips.
According to new research, parents are feeling pressured into sending their children on school trips even if they cannot really afford them.
The study was carried out by Nationwide Building Society, and showed families across the south east are spending around £188 on trips.
Seven in ten polled (71 per cent) admitted they felt compelled to send youngsters on trips, despite the average cost being £222 a year for every child.
For a typical family with two children, this means the annual cost would be nearly £450.
According to the national survey, which polled 2,000 parents of school-aged children, the average parent spends £222 a year on sending a child on trips, of which £95 is for compulsory excursions.
The total spend rises to £338 for parents living in London (£118 of which is for compulsory trips) and parents of those aged 12-16 incur the highest costs, averaging around £279 per year.
Seven in ten parents said they felt under pressure to send their children on excursions – even if they do not have the money to spare, while nearly three quarters (72 per cent) didn't want their child to feel left out by not going.
Six in ten (60 per cent) wanted their child to have the best education and experiences in life.
More than a quarter (27 per cent) didn't want to be seen as a bad parent by not sending them.
Around a quarter (24 per cent) maintained they did not want to be perceived as struggling financially.
Just under a quarter of children (23 per cent) have enjoyed residential breaks outside the UK, while more than four in ten have gone away in the UK for one or more nights.
France is by far the most popular foreign destination, accounting for half (50 per cent) of children's trips abroad.
However, the poll also shows countries outside of Europe are popular, with one in 20 children having gone to the USA (5 per cent) and around one in 50 travelling to Central America (2 per cent).
The top five reasons why children attend voluntary school trips were (in order): languages, winter sports, geography, history and touring with a school sports club.
Don't miss out on all the latest breaking news where you live.
Here are four ways you can be sure you'll be amongst the first to know what's going on.
1) Make our website your homepage
2) Like our Facebook page
3) Follow us on Twitter
4) Register with us by clicking on 'sign in' (top right corner). You can then receive our daily newsletter AND add your point of view to stories that you read here.
And do share with your family and friends - so they don't miss out!
Always the first with your local news.
Be part of it.


text:
JACKSONVILLE � A Camp Lejeune Marine is being held without bond after a Friday night disturbance led to a fatal shooting.
JACKSONVILLE � A Camp Lejeune Marine is being held without bond after a Friday night disturbance led to a fatal shooting.
Lance Cpl. Marcus Bo Hunt, 19, of Carmen Avenue, was charged by the Jacksonville Police Department with an open count of murder in the shooting death of Randall Buford, 21.
Both men were Marines stationed aboard Camp Lejeune.
At approximately 9:45 p.m., officers were dispatched to the Liberty Crossing Apartments in reference to an unknown disturbance, according to information from the Jacksonville Police Department.
While officers were en route, it was reported that shots were fired at the disturbance. Upon arrival, one subject was found dead with an apparent gunshot wound to the head.
A joint investigation conducted by detectives of the Jacksonville Police Department and agents of the Naval Criminal Investigative Service led to Hunt�s arrest.
Liz Stumpf, 22, a resident of Liberty Crossing Apartments, said she and her boyfriend were eating dinner around 9:30 p.m. and heard a gunshot.
�At first I thought maybe it was someone drunk screwing around with a gun or fireworks or something like that. Then we heard another one within five minutes ... Within a couple minutes everyone was outside ... and they were rushing to an apartment,� she said, explaining that multiple law enforcement officers and ambulances were present.
Stumpf said she didn�t think anyone was hurt initially.
�We thought no one was hurt because the ambulances left and they weren�t in a hurry or anything. Then I read the article this morning or this afternoon and someone got shot,� she said.
Stumpf said law enforcement officials were present in the area until after she went to bed around 1:30 a.m.
�It�s pretty surreal though, to know that I heard someone get killed,� she said.
Ron Nicholson, a resident at the apartment complex, was watching TV when he heard two loud booms.
�At first I thought it was a firecracker, and when I looked outside my window I didn�t see anything,� Nicholson said.
Nicholson said that shortly after he heard the second gun shot fired, the parking lot was flooded with responding police vehicles and ambulances.
�The ambulances came and left pretty quickly,� he said. �I didn�t see anyone get carried out or anything so I thought that no one was hurt.�
Nicholson said he has only seen law enforcement in the complex a couple times while living there.
�I�ve lived here for seven years and I�ve never seen anything like this happen here,� he said.
Neighbors of Hunt�s said that Hunt and Buford appeared to be good friends and both were very friendly.
�They were both nice guys,� said a resident who asked not to be identified. �We heard them arguing when it took a turn for the worse. They were just friends who got into a bad dispute. It shocked us all.�
Hunt was a rifleman assigned to 1st Battalion, 8th Marine Regiment, 2nd Marine Division, according to 2nd Lt. Adam Flores, public affairs officer with 2nd Marine Division.
Further information on Buford was unavailable pending 24 hours next of kin notification of family, according to Flores.
The investigation remains open and active.