text:
Rhino Mocks' future
Well, it seems like Rhino Mocks has a new daddy . In particular, Mike Meisinger has kindly agreed to take the project as the project lead.
You can discuss all about this in the mailing list for Rhino Mocks, or hear more about Mike's plans, visit his blog.
RavenDB, Victory
Jeremy Miller's post about Would I use RavenDB again has been making the round. It is a good post, and I was asked to comment on it by multiple people.
I wanted to comment very briefly on some of the issues that were brought up:
- Memory consumption – this is probably mostly related to the long term session usage, which we expect to be much more short lived.
- The 2nd level cache is mostly there to speed things up when you have relatively small documents. If you have very large documents, or routinely have requests that return many documents, that can be a memory hog. That said, the 2nd level cache is limited to 2,048 items by default, so that shouldn't really be a big issue. And you can change that (or even turn it off) with ease.
- Don't abstract RavenDB too much – yeah, that is pretty much has been our recommendation for a while.
- I don't see this as a problem. You have just the same issue if you are using any OR/M against an RDBMS.
- Bulk Insert – the issue has already been fixed. In fact, IIRC, it was fixed within a day or two of the issue being brought up.
- Eventual Consistency – Yes, you need to decide how to handle that. As Jeremy said, there are several ways of handling that, from using natural keys with no query latency associated with them to calling WaitForNonStaleResultsAsOfNow();
Truthfully, the thing that really caught my eye wasn't Jeremy's post, but one of the comments:
Thanks you, we spend a lot of time on that!
Fixing up the build process
There is a big problem in the RavenDB build process. To be rather more exact, there is a… long problem in the RavenDB build process.
As you can imagine, when the build process run for that long, it doesn't' get run too often. We already had several runs of "let us optimize the build". But… the actual reason for the tests taking this long is a bit sneaky.
To save you from having to do the math, this means an average of 1.15 seconds per test.
In most tests, we actually have to create a RavenDB instance. That doesn't take too long, but it does take some time. And we have a lot of tests that uses the network, because we need to test how RavenDB works on the wire.
From that perspective, it means that we don't seem to have any real options. Even if we cut the average cost of running the tests by half, it would still be a 30 minutes build process.
Instead, we are going to create a layered approach. We are going to freeze all of our existing tests, move them to an Integration Tests project. We will create a small suite of tests that cover just core stuff with RavenDB, and use that. Over time, we will be adding tests to the new test project. When that becomes too slow, we will have another migration.
What about the integration tests? Well, those will be run solely by our build server, and we will setup things so we can automatically test when running from our own forks, not the main code line.
RavenDB Webinar: Aggregation just jump a grade or two…
In tomorrow's Webinar, we will discuss handle dynamic aggregation using RavenDB. A new feature in 2.5, this is meant to give you more options for reporting queries, including complex aggregation, dynamic selection, etc.
You can register here: https://www2.gotomeeting.com/register/789291530
The difference between Ordering & Boosting
This seems to be a pretty common issue with people getting the two of them confused. As an example, let us take the users in Stack Overflow:
Here, we want to get the users in order. We want to get all the users in descending order of reputation.
But what happens when we want to do an actual search, for example, we want to get users by tag. Perhaps we want to get someone that knows some ravendb.
Here is the data that we have to work with:
Now, when searching, we want to be able to do the following. Find users that match what the tags that we specified, that are relevant and have them show up in reputation order.
And that is where it kills us. Relevancy & order are pretty much exclusive. Before we can explain that, we need to understand that order is absolute, but relevancy is not. If I have 10,000 tags, there is very little meaning to me having a tag or not. But if I have 10 tags, me having a tag or not is a lot more important. You want to talk with an expert in a specific field, not just someone who is a jack of all trades.
Now, it might be that you want to apply some boost factor to users with high reputation, because there are people who are jack of all trades and master of most. That is the difference between boosting and ordering.
Ordering is absolute, while boosting is a factor applied against the relative relevancy of the current query.
How not to deal with Replication Lag
Because RavenDB replication is async in nature, there is a period of time between a write has been committed on the master and until it is visible to the clients.
A user has requested that we would provide a low latency way to provide a solution to that. The idea was that the master server would report to the secondaries that a write happened, and then they would mark all reads from them for those documents as dirty, until replication caught up.
Implementation wise, this is all ready to happen. We have the Changes API, which is an easy way to get changes from a db. We have the ability to return a 204 Non Authoritative response, so it looks easy.
In theory, it sounds reasonable, but this idea just doesn't hold water. Let us talk about normal operations. Even with the "low latency" notifications (and replication is about as low latency as it already get), we have to deal with a window of time between the write completing on the master and the notification arriving on the secondaries. In fact, it is the exact same window as with replication. Sure, if you have a high replication load, that might be different, but those tend to be rare (high write load, very big documents, etc).
But let us assume that this is really the case. What about failures?
Let us assume Server A & B and client C. Client C makes a write to A, A notifies B and when C reads from B, it would get 204 response until A replicates to B. All nice & dandy. But what happens when A can't talk to B ? Remember a server being down is the easiest scenario, the hard part is when both A & B are operational, but can't talk to one another. RavenDB is designed to gracefully handle network splits and merges, so what would happen in this case?
Client C writes to A, but A can't notify B or replicate to it. Client C reads from B, but since B got no notification about a change, it return 200 Ok response, which means that this is the latest version. Problem.
In this case, this is actually a bigger problem than you might consider. If we support the notifications under the standard scenario, user will make assumptions about this. They will have separate code paths for non authoritative responses, for example. But as we have seen, we have a window of time where the reply would say it is authoritative even though it isn't (a very short one, sure, but still) and under failure scenarios we will out right lie.
It is better not to have this "feature" at all, and let the user handle that on his own (and there are ways to handle that, reading from the master for important stuff, for example).
RavenDB Clusters & Write Assurances
RavenDB handles replication in an async manner. Let us say that you have 5 nodes in your cluster, set to use master/master replication.
That means that you call SaveChanges(), the value is saved to the a node, and then replicated to other nodes. But what happens when you have safety requirements? What happens if a node goes down after the call to SaveChanges() was completed, but before it replicate the information out?
In other systems, you have the ability to specify W factor, to how many nodes this value will be written before it is considered "safe". In RavenDB, we decided to go in a similar route. Here is the code:
1: await session.StoreAsync(user);
2: await session.SaveChangesAsyng(); // save to one of the nodes3:
4: var userEtag = session.Advanced.GetEtagFor(user);
6: var replicas = await store.Replication.WaitAsync(etag: userEtag, repliacs: 1);
As you can see, we now have a way to actually wait until replication is completed. We will ping all of the replicas, waiting to see that replication has matched or exceeded the etag that we just wrote. You can specify the number of replicas that are required for this to complete.
Practically speaking, you can specify a timeout, and if the nodes aren't reachable, you will get an error about that.
This gives you the ability to handle write assurances very easily. And you can choose how to handle this, on a case by case basis (you care to wait for users to be created, but not for new comments, for example) or globally.
RavenDB & Locking indexes
One of the things that we keep thinking about with RavenDB is how to make it easier for you to run in production.
To that end, we introduce a new feature in 2.5, Index Locking. This looks like this:
But what does this mean, to lock an index?
Well, let us consider a production system, in which you have the following index:
from u in docs.Users select new { Query = new[] { u.Name, u.Email, u.Email.Split('@') } }
After you go to production, you realize that you actually needed to also include the FullName in the search queries as well. You can, obviously, do a full deployment from scratch, but it is generally so much easier to just fix the index definition on the production server, update the index definition on the codebase, and wait for the next deploy for them to match.
This works, except that in many cases, RavenDB applications call IndexCreation.CreateIndexes() on start up. Which means that on the next startup of your application, the change you just did will be reverted. These options allows you to lock an index for changes, either in such a way that gives you the ability ignore changes to this index, or by raising an error when someone tries to modify the index
It is important to note that this is not a security feature, you can at any time unlock the index. This is there to make help operations, that is all.
Better patching API for RavenDB: Creating New Documents
A while ago we introduced the ability to send js scripts to RavenDB for server side execution. And we have just recently completed a nice improvement on that feature, the ability to create new documents from existing ones.
Here is how it works:
store.DatabaseCommands.UpdateByIndex("TestIndex", new IndexQuery {Query = "Exported:false"}, new ScriptedPatchRequest { Script = script } ).WaitForCompletion();
Where the script looks like this:
for(var i = 0; i < this.Comments.length; i++ ) { PutDocument('comments/', { Title: this.Comments[i].Title, User: this.Comments[i].User.Name, By: this.Comments[i].User.Id }); } this.Export = true;
This will create a set of documents for each of the embedded documents.
RavenDB Map/Reduce optimizations
So I was diagnosing a customer problem, which required me to write the following:
This is working on a data set of about half a million records.
I took a peek at the stats and I saw this:
You can ignore everything before 03:23, this is the previous index run. I reset it to make sure that I have a clean test.
What you can see is that we start out with a mapping & reducing values. And you can see that initially this is quite expensive. But very quickly we recognize that we are reducing a single value, and we switch strategies to a more efficient method, and we suddenly have very little cost involved in here. In fact, you can see that the entire process took about 3 minutes from start to finish, and very quickly we got to the point where are bottle neck was actually the maps pushing data our way.
That is pretty cool.
The state of Rhino Mocks
I was asked to comment on the current state of Rhino Mocks. The current codebase is located here: https://github.com/hibernating-rhinos/rhino-mocks
The last commit was 2 years ago. And I am no longer actively / passively monitoring the mailing list.
From my perspective, Rhino Mocks is done. Done in the sense that I don't have any interest in extending it, done in the sense that I don't really use mocking any longer.
If there is anyone in the community that wants to steps in and take charge as the Rhino Mocks project leader, I would love that. Failing that, the code it there, it works quite nicely, but that is all I am going to be doing with this for the time being and the foreseeable future.
RavenDB 2.5 Features: Import data to Excel
I wonder what it says about RavenDB that we spend time doing excel integration .
At any rate, we have the following documents inside RavenDB:
And we want to get this data into Excel. Not only that, but we want this to be something more than just a flat file. We want something that will auto update itself.
We start by defining the shape of the output, using a transformer.
Then we go an visit the following url:
- http://localhost:8080/databases/MusicBox – The server & database that we are querying.
- streams/query/Raven/DocumentsByEntityName?query=Tag:Albums – Stream the results of querying the index Raven/DocumentsByEntityName for all Tag:Albums (effectively, give me all the albums).
- resultsTransformer=Albums/ShapedForExcel – transform the results using the specified transformer.
- format=excel – output this in a format that excel will find easy to understand
The output looks like this:
Now, let us take this baby and push this to Excel. We create a new document, and then go to the Data tab, and then to From Text:
We have a File Open Dialog, and we paste the previous URL as the source, then hit enter.
We have to deal with the import wizard, just hit next on the first page.
We mark the input as comma delimited, and then hit finish.
We now need to select where it would go on the document:
And now we have the data inside Excel:
We aren't done yet, we have the data in, now we need to tell Excel to refresh it:
Click on the connections button, where you'll see something like this:
Go to Properties:
- Uncheck Prompt for file name on refresh
- Check Refresh data when opening the file
Close the file, go to your database and change something. Open the file again, and you can see the new values in there.
You have now create an Excel file that can automatically pull data from RavenDB and give your users immediate access to the data in a format that they are very comfortable with.
Raven's Storage: Memtables are tough
Memtables are conceptually a very simple thing. You have the list of values that you were provided, as well as a skip list for searches.
- Memtables are meant to be used concurrently.
- We are going to have to have to hold all of our values in memory. And I am really not sure that I want to be doing that.
- When we switch between mem tables (and under write conditions, we might be doing that a lot), I want to immediately clear the used memory, not wait for the GC to kick in.
The first thing to do was to port the actual SkipList from the leveldb codebase. That isn't really hard, but I had to make sure that assumptions made for the C++ memory model are valid for the CLR memory model. In particular, .NET doesn't have AtomicPointer, but Volatile.Read / Volatile.Write are a good replacement, it seems. I decided to port the one from leveldb because I don't know what assumptions other list implementations have made. That was the first step in order to create a memtable. The second was to decide where to actually store the data.
Here is the most important method for that part:
public void Add(ulong seq, ItemType type, Slice key, Stream val)
The problem is that we cannot just reference this. We have to copy those values into memory that we control. Why is that? Because the use is free to change the Stream contents or the Slice's array as soon as we return from this method. By the same token, we can't just batch this stuff in memory, again, because of the LOH. The way this is handled in leveldb never made much sense to me, so I am going to drastically change that behavior.
In my implementation, I decided to do the following:
- Copy the keys to our own buffer, and keep them inside the skip list. This is what we will use for actually doing searches.
- Change the SkipList to keep track of values, as well as the key.
- Keep the actual values in unmanaged memory, instead of managed memory. That avoid the whole LOH issue, and give me immediate control on when the memory is disposed.
This took some careful coding, because I want to explicitly give up on the GC for this. That means that I need to make damn sure that I don't have bugs that would generate memory leak.
Each memtable would allocate 4MB of unmanaged memory, and would write the values to it. Note that you can write over 4MB (for example, by writing a very large value, or by writing a value whose length exceed the 4MB limit. At that point, we would allocate more unmanaged memory, and hand over the memory table to compaction.
The whole thing is pretty neat, even if I say so myself .
Raven's Storage: Understanding the SST file format
This is an example of an SST that stores:
- tests/0000 –> values/0
- tests/0001 –> values/1
- tests/0002 –> values/2
- tests/0003 –> values/3
- tests/0004 –> values/4
As well as a bloom filter for rapid checks.
If you are wondering about the binary format, that is what this post is all about. We actually start from the end. We have the last 48 bytes of the file are dedicated to the footer.
The footer format is:
- Last 8 bytes of the file is a magic number: 0xdb4775248b80fb57ul – this means that we can quickly identify whatever this is an SST file or not.
Here is what this number looks like broken down to bytes: - The other 40 bytes are dedicated for the metadata handle and the index handle.
Those are two pair of longs, encoded using 7 bit encoding, in our case, here is what they look like:
Let us see if we can parse them properly:
- 100
- 38
- 143, 1 = 143
- 14
Note that in order to encode 143 properly, we needed two bytes, because it is higher than 127 (and we use the last bit to indicate if there are more items to read). The first two values are actually the metadata handle (position: 100, count: 38), the second are the index handle (position: 143, count: 14).
We will start by parsing the metadata block first:
You can see the relevant portions in the image.
The actual interesting bits here are the first three bytes. Here we have:
- 0 – the number of shared bytes with the previous key (there is no, which is why it is zero).
- 25 – the number of non shared bytes (in this case ,the full value, which is 25).
- 2 – the size of the value, in this case ,the value is the handle in the file of the data for the filter.
You can read the actual key name on the left ,"filter.BuiltinBloomFilter", and then we have the actual filter data:
You can probably guess that this is the filter handle (position: 82, count: 18).
The rest of the data are two 4 bytes integers. Those are the restart array (position 130 –133) and the restart count (position 134 – 137). Restarts are a very important concept for reducing the size of the SST, but I'll cover them in depth when talking about the actual data, not the metadata.
Next, we have the actual filter data itself, which looks like this:
This is actually a serialized bloom filter, which allows us to quickly decide if a specified key is here or not. There is a chance for errors, but errors can only be false positive, never false negative. This turn out to be quite useful down the road, when we have multiple SST files are need to work with them in tandem. Even so, we can break it apart into more detailed breakdown:
- The first 8 bytes are the actual serialized bloom filter bits.
- The 9th byte is the k value in the bloom filter algorithm. The default value is 6.
- The last value (11) is the lg value (also used in the bloom filter algo).
- The rest of the data is a bit more interesting. The 4 bytes preceding the 11 (those are 9,0,0,0) are the offset of valid data inside the filter data.
- The four zeros preceding that are the position of the relevant data in the file.
Honestly, you can think about this as a black box. Filter data is probably enough.
Now that we are done with the filter, we have to look at the actual index data. This is located on 143, but we know that the filter data is actually ended on 100 + 38, so why the gap? The answer is that after each block, we have a block type (compressed or not, basically) and the block CRC, which is used to determine if the file has been corrupted.
Back to the index block, is tarts at 143 and goes for 14 bytes, looking like this:
The last 4 bytes (32 bit int equal to 1) is the number of restarts that we have for this block. And the 4 bytes preceding them (32 bit int equal to 0) is the offset of the restarts in the index block.
In this case, we have just one restart, and the offset of that is 0. Hold on about restarts, I'll get there. Now let us move to the beginning of the index block. We have the following three bytes: 0,1,2.
Just like in the meta block case, those fall under (shared, non shared, value size) and are all 7 bit encoded ints. That means that there is no shared data with the previous key (because there isn't previous key), the non shared data is 1 and the data size is 2. If you memorized your ASCII table, 117 is lower case 'u'. The actual value is a block handle. This time, for the actual data associated with this index. In this case, a block with position: 0 and count: 70.
Let us start analyzing this data. 0,10, 8 tells us shared, non shared, value . Indeed, the next 10 bytes spell out 'tests/0000' and the 8 after that are 'values/0'. And what about the rest?
Now we have 9,1,8. Shared is 9, non shared 1 and value size is 8. We take the first 9 bytes of the previous key, giving us 'tests/000' and append to it the non shared data, in this case, byte with value 49 ('1' in ASCII), giving us a full key of 'tests/0001'. The next 8 bytes after that spell out 'values/1'. And the rest is pretty much just like it.
Now, I promised that I would talk about restarts. You see how we can use the shared/non shared data to effectively compress data. However, that has a major hidden cost. In order to figure out what the key is, we need to read all the previous keys.
In order to avoid this, we use the notion of restarts. Every N keys (by default, 16), we we will have a restart point and put the full key into the file. That means that we can skip ahead based on the position specified in the restart offset, and that in turn is governed by the number of restarts that we have in the index block.
And… that is pretty much it. This is the full and unvarnished binary dump of an SST. Obviously real ones are going to be more complex, but they all follow the same structure.
Raven's Storage: Reading a Sorted String Table
When reading a SST, we have to deal with values of potentially large sizes. I want to avoid loading anything into managed memory if I can possible avoid it. That, along with other considerations has led me to use memory mapped files as the underlying abstractions for reading from the table.
Along the way, I think that I made the following assumptions:
- Work in little endian only.
- Can work in 32 bits, but 64 bits are preferred.
- Doesn't put pressure on the .NET memory manager.
In particular, I am worried about users wanting to do store large values, or large number of keys.
As it turned out, .NET's memory mapped files are a pretty good answer for what I wanted to do. Sure, it is a bit of a pain with regards to how to handle things like WinRT / Silverlight, etc. But I am mostly focused on server side for now. And I got some ideas on how to provide the mmap illusion on top regular streams for platforms that don't support it.
The fact that SST is written by a single thread, and once it is written it is immutable has drastically simplified the codebase. Although I have to admit that looking at hex dump to figure out that I wrote to the wrong position is a bit of a bother, but more on that later. A lot of the code is basically the leveldb code, tweaked for .NET uses. One important difference that I made was with regards to the actual API.
- Keys are assumed to be small. Most of the time, less than 2KB in size, and there are optimizations in place to take advantage of that. (It will still work with keys bigger than that, but will consume more memory).
- In general, through the codebase I tried to put major emphasis on performance and memory use even at this early stage.
- Values are not assumed to be small.
What does the last one mean?
Well, to start with, we aren't going to map the entire file into our memory space, to start with, it might be big enough to start fragmenting our virtual address space, but mostly because there is no need. We always map just a single blokc at at time, and usually we never bother to read the values into managed memory, instead just accessing the data directly from the memory mapped file.
Here is an example of reading the key for an entry from the SST:
As you can see, we need to read just the key itself to memory, the value itself is not even touched. Also, there is some buffer management going on to make sure that we don't need to re-allocate buffers as we are scanning through the table.
When you want to get a value, you call CreateValueStream, which gives you a Stream that you can work with. Here is how you use the API:
This is actually part of the internal codebase, we are actually storing data inside the SST that will later help us optimize things, but that is something I'll touch on a later point in time.
Except for the slight worry that I am going to have to change the underlying approach from memory mapped files to streams if I need to run it outside the server/client, this is very cool.
Next on my list is to think on how to implement the memtable, again, without impacting too much on the managed memory.
This is debugging, old school
Raven.Storage just passed its first "test"
Take a look at the code below. This actually completed as expected, and was working beautifully. As I probably mentioned, the architecture of this is really nice, and I think I was able to translate this into .NET code in a way that is both idiomatic and useful. 4:30 AM now, and I think that this is bed time for me now. But I just couldn't leave this alone.
RavenDB Course Updates
I am updating the RavenDB Course for 2.5. It is now a 3 days affair that include quite a lot of stuff. It was quite cramp at 2 days, so moving to 3 days will allow us to do a lot more and do more interesting stuff.
I'll be giving the first 3 days RavenDB Course in about two weeks in London. Currently this is what I have:
Can you think of additional stuff that you'll like me to cover?
Raven's Storage: Building a Sorted String Table
Applying the lessons from the leveldb codebase isn't going to be a straightforward task. I already discussed why we can't just use leveldb directly, so I won't go into that.
I decided to see if I can implement a leveldb inspired storage for RavenDB. And the first thing that I wanted to try is to build an SST. That seems like an easy first step. SST are just sorted data in a file, and it require nothing much to write to them. As mentioned, we can't just do a line by line port of the code. As easy as that would be. The way leveldb manages memory is… not really suitable for what we can / should do in .NET.
- I want this to be an efficient .NET implementation.
- It is inspired, but not intended to be compatible with leveldb.
The leveldb API deals with byte arrays all over the place. This makes sense for a C++ codebase, but it is horrible for a .NET application, especially when we expect a lot of our values to be large enough to hit the LOH. That means fragmentation, and pain down the road. Instead, our API uses ArraySegment<byte> for keys, and Stream for values. Since keys are expected to be relatively small, I don't foresee this being a problem. And the values are streams, so they are easily handled without introducing any cost from the API.
Another thing that leveldb does quite a lot is batch things in memory for a while. It may be the current block, it may be the current data block, it may be the index block, but it does so quite often. That works nicely for C++ apps with expected small values, but not so much for our expected use case. So I want to avoid as much as possible holding items in managed memory. Here is the API for creating an SST:
1: var options = new StorageOptions();2: using (var file = File.Create("test.sst"))3: using(var temp = new FileStream(Path.GetTempFileName(),FileMode.CreateNew,FileAccess.ReadWrite,4: FileShare.None, 4096, FileOptions.DeleteOnClose | FileOptions.SequentialScan))
5: {
6: var tblBuilder = new TableBuilder(options, file, temp);7:
8: for (int i = 0; i < 100; i++)9: {
10: var key = "tests/" + i.ToString("0000");11: tblBuilder.Add(key, new MemoryStream(Encoding.UTF8.GetBytes(key)));12: }
14: tblBuilder.Finish();
15: }
As you can see, we uses two streams here, one to actually write to the table, the second is a temporary stream that we use to write the index block while we are working, then we merged it back to the actual sst file. Note that after building the table, the temp file can be deleted (indeed, we marked is as delete on close, so that would automatically happen).
That part was easy, all it required was simple I/O for generating the file. The more interesting part is going to be reading the values out.
State of the Raven - Operational & Maintenance tasks and features sneak peaks
Reviewing LevelDB: Part XVIII–Summary
Well, I am very happy at the conclusion of this blog post series. Beside being one of the longest that I have done, this actually stretched my ability to count using roman numerals.
In summary, I am quite happy that I spent the time reading all of this code. The LevelDB codebase is really simple, when you grok what it actually does. There is nothing there that would totally stun a person. What there is there, however, is a lot of accumulated experience in building those sort of things.
You see this all over the place, in the format of the SST, in the way compaction is working, in the ability to add filters, write merging, etc. The leveldb codebase is a really good codebase to read, and I am very happy to have done so. Especially since doing this in C++ is way out of m comfort zone. It was also interesting to read what I believe is idiomatic C++ code.
Another observation about leveldb is that it is a hard core C++ product. You can't really take that and use the same approach in a managed environment. In particular, efforts to port leveldb to java (https://github.com/dain/leveldb/) are going to run into hard issues with problems like managing the memory. Java, like .NET, has issues with allocating large byte arrays, and even from the brief look I took, working with leveldb on java using the codebase as it is would likely put a lot of pressure there.
Initially, I wanted to use leveldb as a storage engine for RavenDB. Since I couldn't get it compiling & working on Windows (and yes, that is a hard requirement. And yes, it has to be compiling on my machine to apply), I thought about just porting it. That isn't going to be possible. At least not in the trivial sense. Too much work is require to make it work properly.
Yes, I have an idea, no, you don't get to hear it at this time .
RavenDB's transaction merging
I like reading interesting code bases. And in this case, I have been reading through the leveldb codebase for a while. Most of the time, I am concentrating on grokking how other people are doing things. And the knowledge that I glean from those is only relevant a while later.
In this case, I was able to apply leveldb's knowledge in very short order. We got a complaint about the speed of RavenDB under high transactional writes. The customer complained that they were seeing about 100 – 200 writes/sec with multi threaded inserts, with a separate session per document. This simulate pretty well the behavior of a web application that does a write per request.
The problem was that we basically had many write requests all competing on the disk. Since all transactions need to call fsync, that meant that we were limited by the number of fsync that we could call on the physical medium (more or less, it is a bit more complex than that, but that works).
There really isn't much that I can do about it when the transactions are sequential. But there might be when we have parallel transactions. Instead of make them wait for one another, I took a leaf from the leveldb codebase and decided to merge them. I re-wrote the code so we would use the following approach:
pendingBatches.Enqueue(pending); while (currentTask.Completed() == false && pendingBatches.Peek() != pending) { batchCompletedEvent.Wait(); } if (currentTask.Completed()) return pending.Result; lock (putSerialLock) { try { batchCompletedEvent.Reset(); var sp = Stopwatch.StartNew(); TransactionalStorage.Batch(actions => { int totalCommands = 0; PendingBatch currentBatch; while (totalCommands < 1024 && // let us no overload the transaction buffer size too much pendingBatches.TryDequeue(out currentBatch)) { batches++; if (ProcessBatch(currentBatch) == false) // we only go on committing transactions as long as we are successful, if there is an error, // we abort and do the rest in another cycle break; actions.General.PulseTransaction(); totalCommands += currentBatch.Commands.Count; } }); } finally { batchCompletedEvent.Set(); } }
As you can see, this code is very similar to the leveldb one. We queue the transaction to be executed and then we check if we are the first in the queue. If so, we will execute that transaction and continue executing all available transactions.
The key here is that because we merge those transactions, we can benefit from only calling fsync once, at the end of the global operation.
This code is nice because it allows us to take advantage on load on our system. The more, the more efficient we can batch things. But at the same time, if there isn't any load, we don't care.
Note that I limited the amount of work that can be done in merged transactions, because we don't want the first transaction, the one that is actually doing the work for all of the others, to wait for too long. This is a really pretty way of doing this, especially since it doesn't even require a background thread, which is how I usually solved this issue.
Oh, and the results?
On my machine, without this change, we get about 400 writes / second. Afterward, with 25 threads, we get over 1,100 writes / second.
Reminder: RavenDB Webinar Tomorrow
We will cover:
- New features for JS Scripting
- Replication topologies
- How to handle maintenance tasks using RavenDB
- Sneak peek at reporting queries
You can register here: https://www2.gotomeeting.com/register/118743562
Searching for a lease in time & space
For some reason, there are a lot of real estate / rental people using RavenDB. I can tell you that I did not see that coming. However, that does bring us some interesting decisions.
In particular, at one client, we had the need to search for a lease. Searching for a lease can be done on one of many interesting properties. For example, the unit number, or internal code, or by the leaser name.
And here we got an interesting bug report.
Jane Smith leased an apartment from us at Dec 2012. At Feb 2013, she got married and changed her name to Jane Smith-Smyth. We need to allow searches on both names to find the appropriate lease.
Now, remember, you can't go and change the lease document. That is a legal document that is frozen. Any change to that would invalidate it. (To be rather more accurate, you can modify the document, but there are certain fields that are frozen after the lease is signed.)
Luckily, this was really easy to do, using RavenDB's referenced document feature:
1: from lease in docs.Leases2: select new3: {
4: Leasers = lease.Leasers.Select(x=>x.Name)
5: .Union(lease.Leasers.Select(x=>LoadDocument(x.Id).Name))
6: .Distinct()
7: }
And now we can support changes in the names, while maintaining the sanctity of the frozen fields.
Sadly, this is still not enough. And we actually need to keep track of all of the names that the leaser had during the leasing period.
Jane Smith-Smyth decided that it is a stupid name and changed her name to Jane Smite.
Now we need to support multiple names per leaser, while at the same time we have the current name for the lease. It looks like this:
1: from lease in docs.Leases2: select new3: {
4: Leasers = lease.Leasers.Select(x=>x.Name)
5: .Union(lease.Leasers.SelectMany(x=>LoadDocument(x.Id).Names))
6: .Distinct()
7: }
I highlighted the required changes .
Exporting Data from RavenDB, the new way
In RavenDB 2.5, we provide an easy way to grab all the data from the database, regardless of the usual paging limit.
I had the chance to experiment with that recently during a course. Here is the code we wrote. For fun, we made it use the async API:
I am pretty happy about that. We have stuff that streams all the way from the ravendb to the end client.


text:
Search results for : | people codegeass |
The Shack on the Corner.
This is a silly little forum located on the outskirts of the big, wide internet. It specializes in helping people procrastinate and making people post roleplay replies because some people out there ha
shack, corner, this, silly, little, forum, located, outskirts, wide, internet, specializes, helping, people, procrastinate, making, postThe Ice Mountain
A forum meant for mostly people of the Sonic fandom, however people of other fandoms are welcome! ( Even have the section for them!, D )
mountain, meant, mostly, people, sonic, fandom, however, other, fandoms, welcome!, even, have, section, them!Free forum : S.I.B.S.
free, forum, s.i.b.s, behavioral, siblings, advice, bestow, sanity-, autism, support, disabilities, people, with, crazy, lives, this, group, created, haveOver 45, Not Over the Hill
A place for people Over 45 years of age to discuss what's important in their lives
dating, middle-aged, seniors, single, humor, flirting, discussions, chatting, meeting, people, over, singles, worldwideILLUMINATI Order League
As we all know there are some that try to say the Illuminati are bad people but we all know that we are the good people.
illuminati, order, league, know, there, some, that, people, goodPeople's Revolutionary Soviet Forums
The Forums for members of The People's Revolutionary Soviet
people's, revolutionary, soviet, forums, membersBanglajug-তারুন্যের জয়গান
This is the forum for Bangladeshi / bangla speaking people
free, banglajug, this, bangladeshi, peopleWHY YOU SO FAST!!!
A place for people to be fast!
free, forum, fast!!!, place, people, track, star, tulsa, youtube, yusfThe New Temple of the Sith
This is the forum for The New Temple of the Sith. It is a place for people to speak their minds, and come together in a community of like minded individuals.
sith, temple, order, real, religion, people, darthOPPT Court Cases
Forum to share and help people fighting legal battles all over the world based on One People's Public Trust UCC Filings
oppt, court, cases, forum, share, help, people, fighting, legal, battles, over, world, based, people's, public, trust, filingsDarkGDK
This Forum will be for people who are getting started with DarkGDK or even people who are familier but need that extra help with programming games or even just need help with the understanding of c++
free, darkgdk, help, game, programming, tutorials, makingFriendly Car People
A place where friendly car people can gather online. 100% Drama free environment! show schedules, local car clubs, tech forums and even several non-automotive forums like fishing, camping. . ect
wvmotorsports, friendly, people, wvstreets, www.wvcarclub.com, www.wvstreets.co, cars, group, drama, west, virginia, forums, freeSt bernard sendboard
Here we have a forum dedicated to the st bernard!we want people to post who have an intrest in the breed from Breeders to pet owners from people who show there saints to people who admi
bernard, things, saint, ourfairview, breed, large, chat, breedersTMC
Free forum : Friendly forum for fancy mouse breeders, people with pet mice, or people who just love mice!
mouse, forum, mice, show, fancy, breeders, people, with, just, love, friendlyFor the people of Leighton Buzzard, by the people of Leighton Buzzard
For the people of Leighton Buzzard, by the people of Leighton Buzzard
lbtv, people, leighton, buzzardThe 2nd American Revolution Begins
The 2nd American Revolution Begins---This group is for people who want to stand up and protect The Constitution of the United States, and for people who realize that their are millions and millions of law abiding gun owning citizens who simply will N
american, revolution, begins, begins---this, group, people, want, stand, protect, constitution, united, states, realize, that, their, millionsFree forum : Sara's Roleplays (,
Free forum : This forum is a place for people to roleplay whatever they want, as long as it doesn't get too inappropriate. xD Have fun, meet new people, and roleplay! : D
free, forum, sara's, roleplays, roleplaying, characters, place, people, whatever, they, want, long, doesn't, inappropriate, have, meet, expressionFree forum : Lukodee's clubpenguin People
Free forum : This is my people!!!!!!!!!! we are raseing the bar here!!!!!!!!!!! clubpenguin just for u just for me! Zapper903 is my buddy Lukodee~!!!!!!!
free, lukodee's, clubpenguin, people, this, people!!!!!!!!!!, raseing, just, u just, me! zapper903Free forum : Self Salvation SS
This forum have been made to help people sharing their experiences to help each other to learn and grow as a better person.
self, salvation, help, experiences, people, better, meditation, astral, spiritualThe Grants Pass forum
Free forum : Message board and forum for people living in Grants Pass, OR
free, forum, grants, pass, messages, board, news, people, living, group, live, work, community, oregonUltimate DBZ Fans
Do you crave the decade-old classic? Want to share it with people but can't find anyone with the same interests? Here's the forum for all you diehard DBZ fans, and for people who are new to DBZ.
ultimate, fans, crave, decade-old, classic?, want, share, with, people, can't, find, anyone, same, interests?, here's, diehardRoleplaying For All: Dogs and More
Plenty of role playing with wolves, people, dogs, and shelters for everyone.
roleplaying, dogs, wolves, people, shelterRevenger
Capwey's Answers
This is a Q&A forum where people can ask questions and answer other people's questions about anything from dating, tech, politics, religon, and tv.
capwey's, answers, this, forum, where, people, questions, other, people's, about, anything, from, dating, tech, politics, religonCafeNikon
Camera People Making Friends
forum, cafenikon, camera, people, photo, friends

subset: commoncrawl


text:
Monday, June 11, 2007
I think it had a lot to do with the fact that I always found that they tasted like cardboard and that the pastry was quite dry. But, since I've started making my own, I changed my mind and really crave those little baked wonders!
Before I got to that The King Arthur Flour (see link) recipe, I never got very good results, because the other recipes had the tendancy to give sagging puffs that ressembled omelets. Now, my cream puffs are always perfect and keep their shape.
Those "Profiteroles" (see infos) are extremely delightful and highly satisfying. On the outside, the cream puffs are crispy and their center is smooth and elastic. Flavor-wise, the butter is very omnipresent and makes them all the more delicious. And that chocolate sauce smothered all over them is ever so gorgeous!
A real treat that is simple to make, yet very delicate, distinguished and effectful!
~ Profiteroles ~
Recipes by "The King Arthur Flour".
Makes about 16 cream puffs.
Ingredients for the cream puff pastry:
1 Cup (240g) Water
8 Tbs (125g) Unsalted butter
1/4 Tsp Salt
1 1/4 Cups (158g) Plain white flour
4 Eggs (~53g)
For the chocolate sauce:
1/2 Cup (105g) Castor sugar
1/4 Cup (23g) Unsweetened cocoa powder
1/2 Cup (165g) Light corn syrup
1/4 Cup (60g) Milk
2 Tbs (30g) Unsalted butter
1/2 Tsp Vanilla extract
1. Preheat the oven to 220° C (425° F).
2. Put the water, butter and salt in a saucepan and bring the mixture to a rolling boil.
3. Remove it from the heat and add the flour all at once.
4. Stir vigorously.
5. Return the pan to the burner and cook over medium heat, stirring all the while, until the mixture forms a ball (about a minute).
6. Remove the pan from the heat and let the mixture cool for 5 to 10 minute.
7. Transfer the dough to a mixer and beat in the eggs one at a time.
8. Beat at least two minutes after adding the last egg.
9. Form the choux paste into whatever shape you desire.
10. Bake for 15 minutes, then reduce the oven temperature to 190° C (375° F) and bake for an additional 15 minutes.
11. Turn off the oven, open the door a crack and leave the pastry inside to cool for 30 minutes.
12. Remove from the oven too cool completely.
For the chocolate sauce:
13. In a small saucepan, combine the sugar, cocoa powder, corn syrup and milk.
14. Stir to blend.
15. Cook over medium heat until the mixture comes to a full boil.
16. Reduce the heat to medium-low and simmer, stirring occasionally, for 3 minutes.
17. Remove the sauce from the heat and add the butter and vanilla extract.
18. Keep stirring until the butter has completely melted.
19. Drizzle this hot sauce over the cream puffs and eat straight away.
After the 5 to 10 minutes of cooling, the pastry will still feel hot, but you should be able to hold a finger in it for a few seconds.
After having incorporated the eggs and beaten the mixture, the paste will become quite fluffy.
To shape the choux, use either a spoon or a pastry bag (to pipe).
Instead of using corn syrup for the sauce, you can either replace it by golden syrup, honey or "mélasse à tartiner" (only in Switzerland).
The sauce can easily be kept in the refrigerator for up to a week and reheated before serving.
Serving suggestions:
You can slice the cream puffs in half and fill them with either whipped cream or or a scoop of your favorite ice cream (I recommend vanilla or walnut ice cream) and then drizzle the "Chocolate Sauce" over them.
38 comments:
humm! I'll try them pretty soon...
Nice to meet you yesterday at the blogs'party ! :)
Corinne - 9:58 AM, June 11, 2007
- Rosa's Yummy Yums said...
CORINNE: Thanks! They are really delicious!
It was also a real pleasure for me to get to know you and eat your fabulous food:-D! Bises.. - 10:02 AM, June 11, 2007
Mon dieu, c'est de la torture que tu nous fais dès le matin :)
Magnifique - 10:02 AM, June 11, 2007
- leonine194 said...
wow superbe!
- 10:36 AM, June 11, 2007
c'est vrai que les profiteroles ou les choux a la crème sont bien meilleurs fait maison
les tiens sont magnifiquement bien gonflés - 10:43 AM, June 11, 2007
- Mamina said...
j'adore ça... c'est un grand classique toujours boooon!
- 10:52 AM, June 11, 2007
- Marie Flo said...
Rosa, les profiteroles sont mon dessert préféré. Ta recette je la note et je vais tester. Tes photos sont toujours aussi parfaites, j'ai envie d'attraper ces petits choux.
- 11:00 AM, June 11, 2007
- Claude-Olivier said...
La tuerie oui, à une époque, je ne mangeais que ca comme dessert ! Et c'est vrai que c'est bien meilleur quand on les fait soit même !!!
Claude - 11:02 AM, June 11, 2007
- Hélène said...
oh qu'elles sont diaboliquement tentantes tes profiteroles... miam...!!
- 11:03 AM, June 11, 2007
- michette said...
elles sont magnifiques ! que j'aime ça !
je fais aussi ces petits choux de temps en temps. - 11:29 AM, June 11, 2007
- mingoumango said...
Pas fan des petits choux, je suis pourtant une grande adoratrice des profiteroles !
Tes photos sont démentes... - 11:53 AM, June 11, 2007
tu me donnes envie d'en faire...c'est si bon...
- 12:06 PM, June 11, 2007
- lolo Abracadabra said...
Oh my god !!
Les profiterolles, c'est vraiment mon péché mignon.
Avec de la glace vanille et de la crème chantilly, ce sera parfait pour moi! :o) - 12:40 PM, June 11, 2007
- awoz said...
Je suis d'accord avec ti une chou maison c,est tellement plus bon.Le tien a l'air délicieux.
- 12:48 PM, June 11, 2007
- Gracianne said...
Je n'en ai jamais fait moi-meme, mais tu me donne tres envie avec ta photo decadente.
- 12:48 PM, June 11, 2007
- eglantine said...
Slurp, je craque
- 1:00 PM, June 11, 2007
- Lisanka said...
Je suis définitivement conquise!
- 1:35 PM, June 11, 2007
- Bake your cake and eat it too said...
Those look amazing! I always get an arm work out stirring the dough, maybe i'm doing it wrong?
- 2:12 PM, June 11, 2007
Oh my God!! On dirait une fontaine à chocolat!!!!
- 2:17 PM, June 11, 2007
- Cynthia said...
Sinfully delicious! :)
- 5:59 PM, June 11, 2007
- Shionge said...
I really dont mind having some if you still have some leftovers ya :)
Er...bet not huh? I bet you finish off huh? Yep...I should have known better that you've baked and made it looks so good here :D - 6:35 PM, June 11, 2007
- Marie Cuisine said...
Irrésistibles tes profiterolles !!
Bisous, Marie - 6:36 PM, June 11, 2007
- Doria said...
Hummm !!!! c'est une tuerie ce dessert avec tout ce chocolat qui dégouline.
Bisous, Doria - 6:48 PM, June 11, 2007
- soumia said...
ah la la ce chocolat qui fond.. slurp slurp
- 9:03 PM, June 11, 2007
- Natalia said...
Amazing ! Seems really delicious !! Hummm...
- 9:06 PM, June 11, 2007
- Edith26 said...
Elles somt magnifiques !
- 10:25 PM, June 11, 2007
- Patricia said...
Splendides ! Et ce chocolat qui dégouline... mmmm
- 10:30 PM, June 11, 2007
- Lolotte said...
I don't like this dessert but I must say yours are so "choux"! I can't take my mind off the glossy melted chocolate!
- 10:35 PM, June 11, 2007
- Sylvie said...
J'adore les profiteroles, c'est mon dessert préféré !
- 8:53 AM, June 12, 2007
- Chris said...
Très belles ces profiteroles et ta photo avec le chocolat qui dégouline est trop tentante! C'est très bon, ce grand classique...
- 10:06 AM, June 12, 2007
- Kova said...
I have been looking for a Profiterole recipe for about a week - Et Voilà! I found it on your blog! I am thinking to try them this weekend - I will let you know how they turn out!
- 3:28 PM, June 12, 2007
- Eol said...
Comment ne pas craquer devant une telle profiterole?! Même avec cette chaleur j'en veux bien!
- 5:13 PM, June 12, 2007
humm elle me donne bien envie !
- 5:35 PM, June 12, 2007
- shinobi said...
sûre que fait maison ça n'a rien à voir!! superbe
- 8:59 PM, June 13, 2007
- Rosa's Yummy Yums said...
THANKS FOR ALL YOUR KIND COMMENTS! I was really happy to see that you liked my recipe... Cheerz!
MERCI POUR TOUS VOUS GENTILS COMMENTAIRES! Je suis très heureuse de savoir que ma recette vous plaît. Bises... - 2:55 PM, June 15, 2007
- benisou said...
je les aimes et ca l air trop bon
- 10:29 PM, June 15, 2007
- Rosa's Yummy Yums said...
BENISOU: Merci beaucoup!
- 5:34 PM, June 18, 2007
- Deeps @ Naughty Curry said...
These look perfect. cant believe they are this easy to make, now i have no excuse not to try them! :)
- 6:23 AM, December 26, 2011


text:
Like BCNN1 on Facebook
"Let no corrupt communication proceed out of your mouth, but that which is good to the use of edifying, that it may minister grace unto the hearers." --Ephesians 4:29
"Scripture presents spiritual warfare not as the violent, bizarre end of the Christian life, but as what the Christian life is!" --Paul David Tripp
Prayer Motivator
"The posture in which we pray is immaterial. God will listen whether we kneel, or stand, or sit, or walk, or work." --Author Unknown
"And call upon me in the day of trouble: I will deliver thee, and thou shalt glorify me." --Psalm 50:15
Soul-winning Motivator
"Too many Christians are stuffing themselves with gospel blessings while millions have never had a taste." -Vance Havner
"For I am not ashamed of the gospel of Christ: for it is the power of God unto salvation to every one that believeth; to the Jew first, and also to the Greek." --Romans 1:16
Top Posts & Pages
- Porn Star Aurora Snow says the 'Porn Business Is Not as Pleasurable as Some Think; It's Very Painful'
- James Robison Loses Daughter to Cancer
- Pastor Delman Coates Should be Fired from the Mount Ennon Baptist Church for Promoting Homosexual Marriage
- Miss Black USA, Founded by Karen Arrington, Focuses on More than Just Beauty
- 48 Hours Mystery to Investigate Joyce Meyer's Former Bodyguard Chris Coleman's Murder Case
- RNC Hires Former Real Estate Agent Amani L. Council as Director of African American Communications
- Taliban Threaten Beheadings as U.S. Wrestles with Aftermath of Massacre
- At Some Banks, Once Closed Accounts Can Re-Open
- Thomas Kinkade Had a Beautiful Family; Girlfriend Is Being Classified as a Gold-digger
- WATCH: Jack Van Impe Calls President Obama An "Enemy of the Cross"


text:
Lending Club is an online financial community that brings together creditworthy borrowers and savvy investors so that both can benefit financially. We replace the high cost and complexity of bank lending with a faster, smarter way to borrow and invest.
The Lending Club experience is truly liberating:
* You can join in minutes.
* If you're borrowing, you can apply for a loan and get an instant rate quote.
* If you're investing, you can open an account instantly and get started building a portfolio that earns more than other investments with comparable risk.
* Everything is done online, so the whole process is fast, confidential, private, and rock-solid secure.
Date | Type | Amount | Investors | Valuation |
05/01/07 | Seed | 2M | Unknown | |
08/01/07 | Series A | 10.26M | Robertson Stephens, CSFB Private Equity | Unknown |
03/19/09 | Series B | 12M | Unknown | |
View more financial info about Lending Club |
Rob Garcia (Sr Director, Product Strategy)
Dan Ciporin (Advisor)
Joaquin Delgado (VP, Electro and Communications Business)
Patrick Gannon (SVP)
Peter Petras (VP Business Development)
IOU Central:
OU Central's mission is to help build small businesses by providing them with the necessary capital… See Company Profile »
Lendesk is an online marketplace for micro loan lending in Indian states. The concept is to… See Company Profile »
Loanio is an auction based, peer lending platform where individuals can borrow or lend money to… See Company Profile »
Pertuity Direct is a financial services company bringing the next generation of social lending to the… See Company Profile »
Zopa is the world's first social finance company. Zopa is a platform for person to person… See Company Profile »
CircleUp raises $7.5M to feed hungry consumer-products startups with capital
May 7, 2013 11:30 am
For anyone who has ever gone into a tizzy over granola or kale chips, CircleUp is using crowdfunding to get… Continue reading 〉
Funding Daily: Survival of the fittest
May 3, 2013 1:16 am
Surviving in the tech world and surviving in the wild share some interesting similarities and differences. There are predators in… Continue reading 〉
Lending Club shuffles around shareholders to make room for Google
May 2, 2013 10:00 am
Google has taken a minority stake worth in Lending Club. The deal was part of a $125 million secondary transaction… Continue reading 〉


text:
Something's gotta give
18 Aug 2011
JON CARDINELLI finds out whether it's the players, the referees or the impractical laws that are to blame for the profound mess at the scrum.
The loosehead prop paws the turf, the whistle blows and the crowd groans. The commentators take aim at the referee, the prop wears a look of disbelief and his captain shakes his head bitterly as his opposite number gestures towards the goal posts.
Moments later, the two packs set for another scrum. 'Crouch, touch, pause …' begins the referee before signalling a free kick for early engagement. This time the captain is livid with the official for a laboured delivery of the four-word credo, but all complaints are given short shrift. The referee is, after all, just fulfilling the IRB's mandate.
Rugby's governing body will claim to have the game's best interests at heart, and that the current law set ensures scrums are safe as well as competitive. There are many coaches and players, however, who believe the laws and the application thereof are de-powering this set piece as well as spoiling the spectacle.
The 'crouch, touch, pause, engage' calling system has been widely criticised, while penalties against the loosehead for placing his hand on the ground have sparked an outrage in the front-row fraternity. These are the two sanctions that have generated the most confusion and frustration, and few teams have been able to adapt completely.
When players are penalised for putting their hand down after the hit, they are technically guilty of dropping their bind. Former Springbok prop Ollie le Roux says it's a pedantic penalty that doesn't consider the physics of two 900kg packs slamming into each other at an incredible force. Le Roux argues that if a player uses a hand to steady himself after the hit and then rebinds, play should continue.
'It's a diabolical call,' he seethes. 'It's difficult for props to bind these days because players wear thin shirts instead of jerseys, and when these shirts become saturated with sweat, it's even tougher. It seems that lawmakers and referees just don't appreciate the difficulty of making the hit and getting the bind when there's not a lot to hang on to. There should be allowances for a player who's able to recover after dropping his hand to the ground.'
A high percentage of the total number of penalties (13%) were awarded at the scrum during Super Rugby, while the statistics also confirmed that as many as 10% of all scrums ended in sanction. Some referees were stricter than others, but the numbers suggest that most officials targeted the loosehead prop.
Former Saracens director of rugby Brendan Venter believes the absence of a balanced approach to refereeing is robbing the game of a contest at the scrum.
'The defending loosehead is getting murdered,' Venter says. 'I'd like to see a change to ensure there isn't such an overwhelming focus on one side of the scrum. It seems the law is there for the benefit of the refs, they're looking for what we call "pointers", which are illegal things worthy of a penalty.'
Another former Bok prop, Robbie Kempson, is even less enthused with the way the game is being managed, and says the referees need to make more of an effort to understand the intricacies of the scrum.
'They are reverting to the laws instead of doing their homework. The laws are up for revision at the end of the year, and whoever rewrites them should do so with the aid of a prop. At the moment, they are designed to absolve referees of responsibility, and the net result is that we're not seeing a contest. The way the game is going the IRB may as well get rid of the scrum altogether and complete the move from rugby union to rugby league.
'We didn't see many scrum contests in Super Rugby and the referees and laws were to blame. Cheetahs loosehead Coenie Oosthuizen was blown to pieces in the first part of the competition because he wasn't getting his bind up. These are the penalties that can cost teams momentum, and if the penalty is within kicking range, it can cost them points and possibly matches.'
Balie Swart was at the scrumming coalface when the Boks won the 1995 World Cup, and is employed by Saru as a scrum consultant. His job entails training referees and in some cases travelling to the five South African Super Rugby franchises when there is a major scrum issue that needs to be addressed.
After Oosthuizen was nailed by officials at the beginning of the season, Swart flew to Bloemfontein to work with the player and ensure that his coaches at the Cheetahs understood the law.
'If a loosehead is putting his hand on the ground, it's because the tighthead is winning the hit and the loosehead is not strong enough to stay up,' says Swart. 'If you can't take the pressure, you usually take a step back, but because every player wants to dominate, they don't want to take a step back to relieve the pressure. They want to put their hand down to steady themselves before having another crack at the tighthead.
'There was an issue earlier in the season when Coenie was penalised repeatedly. I never get involved from a technical perspective, but I do help players understand what the law requires. I discussed the problem with Coenie and his coaches, and they obviously made the necessary adjustments because, as we saw, Coenie improved as the season progressed.
'Players have to get it right or they are going to cost their teams points and games. It's the responsibility of the coaches to coach their teams to the letter of the law, and the responsibility of the players to ensure they don't transgress. There is no place for bad habits or tactics in today's game.'
Swart also challenges Kempson's assertion that referees don't appreciate the machinations of scrummaging.
'It's easy to assume that refs are ignorant. Most people think that because referees haven't played in the front row, they don't understand what's happening, but I know for a fact that they do understand because I'm the one who's trained the South African officials. I've made them pack down against each other and explained the different pressures that are applied and how teams will sometimes use illegal tactics to get the upper hand.
'Having said that, it's not the job of referees to coach players during a game. Referees need to blow according to the law.'
Venter believes the better teams are adapting to the four-part call, but Le Roux and Kempson are for a simpler and quicker engage. Again Le Roux suggests that referees underestimate what it takes to hold back nearly a ton of weight for a period of five laboured seconds.
'Most of the problems stem from the fact that there is too much emphasis on the hit, and players are still too far away,' says Le Roux. 'The front rows must get closer and the emphasis should be on the scrumming after the engage. That's when the better scrummagers got the upper hand in the old days. These days it's too technical and complicated.
'The players have done well to adapt in spite of this ridiculous law, but that doesn't mean it should continue. It's a cop out to automatically free-kick a team when they engage early. We see a lot of false starts before a 100m sprint, but imagine when a group of eight big men is trying to get it right. The margin for error is higher, and while I'm not saying that you can't penalise players for repeatedly jumping the gun, there has to be an appreciation for the fact that it's extremely difficult to get that engagement right.'
Swart says that professional players shouldn't hide behind this excuse. He also believes that if a referee takes control of the situation, the timing won't be an issue and fewer infringements will occur.
'There are very few problems when the referees make it clear that they won't stand for any nonsense. Craig Joubert handled the Super Rugby game between the Waratahs and Brumbies, and when he stated that they wouldn't get away with illegal tactics, there were no hands on the floor. There were also very few resets because players knew that they had to get their timing of the engage right. The Australians aren't the strongest scrummagers, so if a referee can manage them to the point where there are minimal resets and infringements, it shows the system can work.'
An IRB study has revealed that the average time taken to complete a scrum in a tier-one international has increased from 43 seconds in 2009 to 53 seconds in 2010. The study also confirmed that 60% of all scrums collapsed while 40% needed to be reset.
A full-scale investigation incorporating scrum clinics in England and South Africa will be conducted after the 2011 World Cup, but until then the current laws will remain in place. Whether the laws are altered or the referees and players are held more accountable, the reality is that something's got to give.
'I really hope the IRB sorts this out, because scrumming is one of the purest forms of the game,' says Kempson. 'We don't want it to disappear.'
Le Roux agrees wholeheartedly. 'The northern hemisphere players and fans still enjoy a scrum, and unfortunately it's the people down south who are obsessed with the spectacle. While we all want to see running rugby, it mustn't come at the cost of the forward contests. You can't have rugby without the scrum.
'The lawmakers need to keep it simple when formulating the actual laws, and perhaps there also needs to be an experiment with two referees. Most front rowers tire towards the end of a game, and that's when mistakes occur. It could be the same for referees, and perhaps the game nowadays is just too fast and intense for one referee to maintain the expected high standards.'
Venter is all for the experiment of two officials, but would like to see two referees working in tandem at the scrum.
'The ref can only stand on one side, and often it's the props on the opposite side who resort to illegal tactics. Some refs will ask for a touch judge's assistance, but in most cases the touch judge is too far away to make an informed call. Many arguments have been made for a second referee, and I believe it would help to have an extra official at the scrum. It would cut down the illegal play.'
Swart concedes that the system could do with a tweak, and believes the four-part call prior to engagement should be reduced with the word 'pause' falling away. He also says the punishment for an early engagement should be more severe, as this would force teams to perfect their timing. This would also result in a decrease in the number of resets as well as the time spent at this scrum in a game situation.
'A free kick is not a harsh enough punishment, because the worst-case scenario is that you concede 10m. For teams that are stronger on defence and at the breakdown than they are at the scrum, they won't be too worried about conceding a free kick.
'If there was a full-arm penalty for this transgression, you would see more teams getting the timing right. Teams would work harder, because they wouldn't be willing to risk conceding the three points.'
– This article first appeared in the August issue of SA Rugby magazine. The September issue – a 260-page World Cup special – will be on sale from 24 August.
13 Comments
18 Aug 2011, 06:46 amwell with boks its clear….plod at 3 we to blame….
18 Aug 2011, 07:05 amwatched the 1996 Series again recently. 2 teams going hammer'n'tongs.
Can barely remember more than 5 re-starts over the whole Series. There was probably more, but it just seemed infinitely less.
The Touch-Pause-Engage was engineered to be safer and less interruption. There is now CONSIDERABLY more interruption (due to ridiculous disparities in the timing by refs) and it has created these massive HITS at the engage (non-existent in '96) that must have a far greater rate of injury.
The Laws are a mess.
18 Aug 2011, 08:19 amit is simply the ridiculous timing of the calls by the refs…
crouch… touch… … … pause… engage… is plain stupid…
it should be crouch… touch… pause… …. engage. with the pause actually coming AFTER the word pause…
18 Aug 2011, 09:15 amWhat do the powers that be think the two sets of forwards are doing between the words "touch" and "engage"?
I believe they are pausing.
So what is the point in drawling out the word "pause" when they are all pausing anyway?
Bleeding ridiculous.
18 Aug 2011, 09:23 amThe scrum is far from perfect but I think bringing the two teams closer together before the hit has improved matters to a degree, it is much better than it was a year or two ago. Still room for more improvement mind.
18 Aug 2011, 09:46 amSomeone told me that the 'crouch-touch-pause-engage' was put in for school kids and juniors to not start going into dangerous scrums. If they see the top players going through the motions they'll do so themselves.
18 Aug 2011, 11:19 amSurely a sensible approach would be to allow the loosehead to recover if he drops his bind if the bind is dropped before the scrum feed takes place, if the bind is dropped afterwards then by all means award a penalty.
19 Aug 2011, 07:47 am@Auntie Mavis(Auntie Mavis)-4: Totally agree with you . There is no benefit, perceived or otherwise, that the pause does any good.
Simply put, it should be 'Crouch – Engage" and the halfback has to put the ball in straight – haha – never.
19 Aug 2011, 09:21 amthe call for scrum should be crouch engage ffs!
to get rid of offside bring back rucking, nothing like a couple of studs in the back to get players to move from an offsides position. If some IRB pu$$ies want to change rugby to soccer let them fk off. -
20 Aug 2011, 04:03 amThe culprits are the refs who give EQUAL time to the four commands: crouch, touch, pause, engage.
That's absurd.
CROUCH.. then wait a decent while — about 15-20 seconds for the opposing scrums to form and bind up properly. When you're satisfied they've done so you call TOUCH.
This is to confirm they are properly settled and close enough. It takes only half a second to confirm this.
The PAUSE command is merely to get them to brace up, ready for the next command and — if they're properly bound and near enough — there's no reason to delay the ENGAGE command by more than a second.
Instead of four commands with equally-timed pauses between them, a ref should be calling:
CROUCH… waiting………waiting….. TOUCH…PAUSE……..ENGAGE
Touch and Pause ought both to be over in about one second. The only time the ref calls for a longer pause before shouting "engage" would be if either pack is fidgeting because they are still not yet properly bound in the crouch.
20 Aug 2011, 04:08 amAnd jersey-makers are deliberately making fabrics which are skin-tight and slippery, so opposing props really CANNOT get a proper bind on, as they could in days gone by where you grabbed a fistful of grainy, baggy, stretch cotton from the prop's Size 3xl super-baggy jersey. Maybe prop's jerseys ought to be made with a grab-handle down below the outside armpit?
21 Aug 2011, 18:12 pmFOREVERRUGGA: You hit the nail on the head. They are trying to make this game softer, soon we will also have to wear pads and helmets. These are grown well trained athletes who "trained" to be props, not some wannabe flanker trying to be a prop.
Referees and administrators stay out of the scrum, let the men sort it out by themselves, stick to meddling with school boy rugby where you need to be careful till they're ready.
Leave it like it was. Loosehead scrums up, tighthead down, that should even it out, UNLESS, you are the weakest link, then you are gonna get *** given to you! -
25 Oct 2011, 14:10 pmForget this crouch touch pause engage nonsense . Watching the old RWC replays the ref blew the whistle , the players got ready and then set the scrum . I dont recall many injuries at the top level . If lifting in the lineout is now ok , then let the loosie put his hand on the ground. Also the feed should be down the middle of the scrum – as is the lineout .YEs – and ruck out the offside palyers at the rucks .
Have your say
You must be logged in to post a comment.


text:
Appliance Parts CategoriesExperience the AP Wagner Advantage "I received my Lint Filter the next day! You people add a whole new meaning to great service, thank you. I certainly will be spreading the word." Dorothy Kelley |
Water that is unfiltered can contain many contaminants that could harm you and your family such as:
For the healthiest water, experts recommend changing your water filter every 6 months. To Order Call Us 1-888-279-2463 Mon-Fri 8am-9pm, Sat-Sun 8am-7pm EST |
All prices are shown in U.S. dollars. Copyright © 2013 by AP Wagner, Inc. All rights reserved.


text:
Healthy Living Market and Café to open Thursday in Wilton Mall
SARATOGA SPRINGS — After eight months of renovation in Wilton Mall's former J.C. Penney location, Healthy Living Market and Café will be ready to open its doors Thursday, March 21.
Lyndsay Meilleur, general manager of the new Saratoga store, moved here from South Burlington, Vt., where the Lesser-Goldsmith family has run its flagship Healthy Living Market since 1986.
Katy Lesser and her children, Eli and Nina Lesser-Goldsmith, created a natural foods market that emphasizes fresh and locally grown and produced foods, including vegetarian, vegan, raw and gluten-free options.
Meilleur's job has been to re-create the Vermont grocery store's success in New York, directing some 150 new employees and contractors as the store's construction nears completion.
"I've been with the company four years," she said. "I'm in love with it. The store is so conceptually different."
Meilleur moved to Saratoga Springs last August, the week the business broke ground and at the beginning of track season. Living on Broadway, she felt right in the middle of the action.
"I call Caroline Street 'Cancun,' " she said, laughing.
Meilleur said the support of officials, businesses and the community at large has been wonderful for her and the company.
"Everyone from the mall to the chamber of commerce has been great," she said. "We have received such a welcome."
Overseeing the design and execution of this unique grocery store has been exhilarating, Meilleur said. She is excited by the public's expectations, seeing them as an opportunity to go above and beyond. Continued...
Up might be the first direction Healthy Market shoppers look as they step into the store — the ceiling light fixture is a collection of large pots, lids and colanders, their shapes making a unique sculpture.
Inside the grocery, the theme of healthy cooking continues. Nina Lesser-Goldsmith, a trained chef, will direct a learning center that will host hands-on cooking and wellness demonstrations and classes. An interactive demonstration center will let shoppers sample the store's wares.
"People will be able to shop and eat and shop and eat," Meilleur said.
Also, the Divine Wines section of the market will include a tasting table, she said. People will be able to shop and sip.
So much delicious-looking food fills the shelves that it might indeed be difficult not to stop and eat. The store features artisan breads and cheeses, locally sourced meats and poultry and local produce. Organic frozen entrees and ice cream — some made from rice or coconut milk instead of cream — are among the other offerings. The bakery will produce fresh goods every day, and the butcher's shop will feature humanely raised and butchered meat.
In the bulk section, customers may bring their own containers and fill up with flours, dried beans, coffee beans and spices. Many obscure ingredients for healthy or exotic cooking are stocked.
"People who shop here love to cook," Meilleur said. "So we have what their recipes call for. We're about conscious eating, thoughtful choices."
In-store dining will be available all day, with a deli menu, a make-your-own salad bar and an antipasto bar. Twelve entrees will be available daily. At the barista station, espresso drinks, organic juice and smoothies are available. Seating for approximately 50 people, including a lounge area with couches, will be arranged at the market's inside entrance across from Old Navy.
Even the landscaping will be edible: herb gardens will flank the main entrance.
Healthy Living Market expects to attract regulars who have long hailed nutritious food, mall walkers and window shoppers and Planet Fitness members looking for a post-workout protein shake. Continued...
Meilleur doesn't want even the smallest thing out of place for the opening.
"It's been exciting and nerve-wracking all at once. It's been a wild ride these six months," she said. "I'm anxious to see the public's response."
Although the company is planning a more formal celebration this summer, the new store will open at 8 a.m. Thursday, March 21. The store will be open daily from 8 a.m. to 9 p.m.
See inaccurate information in a story? Other feedback and/or ideas for us to consider? Tell us here.
What should we investigate? Have a tip you want us to look into? Tell us here.
Local Guide
Business Name
Location, ST | website.com
Social Wire
National News Videos
- Saratoga Springs police charge pair with burglary after brief chase through woods (24)
- NYRA names Christopher Kay CEO to $300K-plus post (23)
- Mark O'Brien, the real person behind Hollywood's 'The Sessions' (20)
- City Council rejects salary proposals submitted by Saratoga Springs Housing Authority (19)
- Saratoga County Jail inmate charged with assaulting fellow inmate (17)
- Sound Off June 19, 2013 (16)
- Saratoga County listed among most fiscally stressed (16)
- Creating jobs a goal for Wilton town board in 2010 (87)
- Police: Drunken man tried to enter a Stewart's Shop before it opened, then climbed into employee's car (5)
- Presbyterian-New England Congregational Church pastor Rev. Jay Ekman retires after 40 years (with photos) (4)
- The Restaurant at 62 Beekman is off the beaten path (4)
- NYRA expected to name CEO Tuesday (3)
Recent Activity on Facebook
Blog Center
Saratoga County Observer
Reporter Caitlin Morris offers insights into the issues affecting Saratoga County residents.


text:
Sigma-Aldrich Corporation (NASDAQ: SIAL) today announced that SAFC® Commercial (www.safcglobal.com), its custom manufacturing services business unit, has won commercial sales and licensing contracts with two leading Asian biopharmaceutical companies for the purchase of CHOZN®, their off-the-shelf cell line production platform. The contracts feature the CHOZN® Platform system as a key component of each customer's global biotherapeutic commercialization strategy.
Sigma-Aldrich Corporation (NASDAQ: SIAL) today announced the launch of a novel scientific search engine designed to give researchers easier access to peer-reviewed articles and abstract information on the Company's website, sigma-aldrich.com. The new search engine allows scientists to immediately read the full text of millions of peer-reviewed papers without extra clicks or logins, discover applications for specific Sigma-Aldrich products in peer-reviewed literature, and provides free access to the Ingenuity gene and biological pathway database.
Sigma-Aldrich Corporation (NASDAQ: SIAL) announced today that Sigma Life Science, its innovative biological products and services business, has signed an agreement with the Culture Collections of Public Health England, curators for the European Collection of Cell Cultures (ECACC®). In the agreement, the ECACC collection of unique, expertly preserved, authenticated human and animal cell cultures will be offered through the powerful Sigma-Aldrich website www.sigma.com/ecacc.
Sigma-Aldrich Corporation (NASDAQ: SIAL), a leading Life Science and High Technology Company, today announced its Aldrich Materials Science initiative led the signing of a global marketing and distribution agreement with Applied Minerals, Inc. (OTCQB: AMNL) (OTC.BB: AMNL), the leading global producer of Dragonite™ Halloysite Clay. Dragonite™ Halloysite Clay is a natural ingredient whose characteristics can enhance product formulation, and is used in the development of plastics, flame retardant materials, environmental remediation products, paints and coatings, agriculture and other applications. Through the agreement, Dragonite™ Halloysite Clay is available to researchers, material scientists and engineers through Sigma-Aldrich and can be ordered at www.sigmaaldrich.com/matsci.


text:
Connect with Us
Now Playing
Loading streams...
Podcasts & RSS Feeds
All Content |
View all podcasts & RSS feeds |
The Two-Way
9:20 am
Tue September 27, 2011
Happening Now: Rappelling At Washington Monument
By Mark Memmott
There's live video now from CNN and Washington's NBC-4 as work begins to have engineers rappel down the sides of the Washington Monument to inspect for damage from the Aug. 23 earthquake that shook much of the eastern U.S.
As we reported earlier, the monument suffered considerable damage — and scared the wits out of the vistors and staff who were inside — when the 5.8 magnitude temblor struck. You can see videos of the dramatic moments inside the observation area at the top of the monument here.
It's expected to take several days for engineers to complete the inspection. Bad weather may interfere: Rain and possibly thunderstorms are in the forecasts through Thursday.
The monument remains closed.
Copyright 2011 National Public Radio. To see more, visit http://www.npr.org/.


text:
29.Nov.11 Indoor track and field team events announced
England Athletics are pleased to announce the events that athletes will be selected for 3 European teams (Linz, Bratislava and Vienna) and an U20 team (Celtic Cup) for the Indoor season.
26.Nov.11 England Athletics and UKA are moving offices
England Athletics and UKA are both to move offices to new premises at Alexander Stadium, Birmingham, from 25-28 November. Email and telephone communication will be affected during the move. We apologise for any disruption this causes.
24.Nov.11 SYAN Coaches support action for blind people event
15 Actionnaires clubs from the North of England attended an action packed day of athletics at the EIS, Sheffield. This event was open to visually impaired children between the ages 4-16 registered within the 15 clubs.
22.Nov.11 Road Race Adjudicators needed
To support the important work of race organisers, to help them to improve the standard of road races across England and ensure that they are being held in compliance of licensing conditions from 1 April 2012 Event Adjudicators will be needed for all licensed road and multi-terrain races.
18.Nov.11 Black Country Sportshall League a sustainable success
The second season of the BCAN Sportshall League saw the ever growing U11 and U13 participants' contest a keenly fought competition with athletes acquitting themselves extremely well and really enjoying the experience.
18.Nov.11 Indoor champs online registration now live
Registration for the three England Athletics indoor championships is now online. You can now also view the dates and venues for all 2012 championships as well as register for the indoor series.


text:
Presented by
WI Web Staff
Over the years, Seat Pleasant Mayor Eugene W. Grant has worked diligently to bring partners such as the University of Maryland's Prevention Research Center and School of Public Health into the community and better the lives of residents with free health based events.
Mayor Grant has already hosted the Life's Simple 7 event at Faith Temple #2 Baptist Church, first annual Autism Awareness Conference at Seat Pleasant Elementary School, and the third annual Seat Pleasant Health Summit at the University of Maryland School of Public Health where he brought 50 local area seniors and about 100 students from Fairmont Heights and Central High Schools to a day of health learning activities to educate and improve their quality of life.
"The overall health of my community, and access to health information and services is of the utmost importance in my administration," said Grant. "I am honored to be recognized by our partners at Prince George?s Hospital Center for this prestigious award, and will continue to fight for more health resources and a better quality of life for my community and residents."
Grant is currently serving his 8th year as mayor. During his tenure, he has successfully tripled the size of the police Department, reduced crime by 33 percent, improved the infrastructure of the city, ended each year with a surplus and raised thousands of dollars for the local elementary school.
Grant serves as Chairman of the Board for Health Empowerment Network of Maryland,pof the Maryland Black Mayor's Community Development Corporation, Chief Executive Officer for Global Development Services for Youth, and a member of numerous other organizations both domestically and internationally. Grant can be followed on Twitter and Facebook.
Jerry Sandusky, the former head coach at Penn State who was convicted this weekend on 45 counts of child molestation, has been placed under a suicide watch, according to reports.
The 68-year-old Sandusky, who was revered as a pillar of the Penn State community, was jailed immediately after the jury delivered its verdict on June 22. He was found guilty of molesting at least eight boys over a 15-yer period, and could spend the rest of his life behind bars.
"It's hard to judge character on the stand, because you don't know these kids," one of the jurors said in an interview. "But most were very credible – I would say all. I looked at him during the reading of the verdict and just the look on his face. No real emotion," the juror continued, "because he knew it was true."
Among the boys who accused Sandusky of sexual abuse was his adopted son, Matt Sandusky.
"During the trial, Matt Sandusky contacted us and requested our advice and assistance in arranging a meeting with prosecutors to disclose for the first time in this case that he is a victim of Jerry Sandusky's abuse," Andrew Shubin and Justine Andronici wrote in the statement. "At Matt's request, we immediately arranged a meeting between him and the prosecutors and investigators."
Sandusky is scheduled to be sentenced in about three months. But his attorneys plan on appealing the convictions, saying they didn't have adequate time to prepare their case.
For the second consecutive year, the Human Rights Campaign has cited Howard University Hospital -- one of the nation's leading teaching medical institutions -- a leader in the treatment of lesbian, gay, bisexual and transgender (LGBT) patients and their families.
Human Rights Campaign President Chad Griffin, who was joined at a press conference earlier this week by U.S. Health and Human Services Secretary Kathleen Sebelius, made announced on Howard's campus, where other local health care organizations were also lauded.
"I commend the LGBT and healthcare communities for the progress made, and I am proud to be part of an administration that has a historic record of accomplishment for the LGBT community," Sebelius said.
The other area health care leaders include George Washington Hospital, Sibley Hospital, National Rehabilitation Hospital, The Specialty Hospital of Washington, Adventist Healthcare and Bon Secours Health System.
Howard was among 234 hospitals named as leaders from the nearly 5,000 hospitals nationwide. The number of leaders with perfect scores increased from the previous year, but not one hospital in 18 states responded at all to the survey.
The index rated the hospitals in four areas.
The hospital's patient non-discrimination policy is publicly available and includes the terms "sexual orientation" and "gender identity."
The hospital's visitation policy explicitly grants same sex couples, partners, spouses and significant others the same access as different-sex couples and grants their minor children the same access as children of different-sex couples.
The hospital's employment non-discrimination policy includes the term" sexual orientation" and "gender identity."
The hospital provides training for key staff members in LGBT patient-centered care.
Dr. Wayne Frederick, provost and chief academic officer for Howard University and formerly senior vice president for Health Sciences, accepted the honor on behalf of the university and said the hospital is proud to be designated as a leader.
"Howard University Health Sciences is committed to improving patient-centered care by removing all barriers to care, whether they involve ensuring patients' rights to determine their health care decision-maker, or training the health care workforce to provide equitable treatment and service to all patients," Frederick said.
To help combat the heat that's expected to continue over the weekend, the District of Columbia Homeland Security and Emergency Management Agency has opened four cooling centers. Located across the city, the centers will be open from noon until 6 p.m. People who are going to be out in the heat and will need to cool off, can find more comfortable temperatures at:
The Reeves Building at 2000 14th St. NW
Judiciary Square at 441 4th St. NW
The King Building at 3720 MLK Jr. Ave. SE
The Williams Center at 920 Rhode Island Ave. NE
Indiana Fever leading scorer Tamika Catching [15 points] challenges Washington leading scorer Crystal Langhorne [22 points] on Friday, June 15 at the Verizon Center in Northwest. The 67-66 win was the second at home for the Mystics this season. /Photo by John E. De Freitas
Plans to move forward with the design and construction of the street car project along H Street and Benning Road in Northeast have been put on hold over concerns expressed by Ward 8 Council member Marion Barry.
The veteran councilman, who once opposed the project, is reportedly challenging the $50 million contract to build the system and has filed a disapproval claim against Dean-Facchina LLC. As a result, the project faces a six-week stall. In addition to delaying the project, Barry's action could add more costs to the project for which tracks have already been laid on H Street.
"I'm not opposed to the H Street line if it can be shown there are cost benefits," Barry, 76, was quoted as saying. "For $50 million I could get at least three or four recreation centers built in Ward 8."
Meanwhile, Ward 6 Council member Tommy Wells -- in whose district part of the 37-mile track would be built -- is poised to file emergency legislation next week in hopes of circumventing Barry's opposition.
Ward 3 Council member Mary Cheh is also reportedly skeptical about Barry's disapproval, having indicated that he should have raised his concerns earlier rather than at the "eleventh hour."
Event to Include Birthday Bash, Appearances by Al Sharpton, Jesse Jackson Sr., Others
In celebration of the 10th anniversary of the Perennial family of businesses, special events are taking place this weekend in D.C. with appearances by Rev. Al Sharpton, Martin Luther King III, Rev. Jesse Jackson, hip-hop impresario MC Lyte, and others.
On Friday, June 22, an exclusive birthday party will take place for lifelong advocate and entrepreneur Lamell McMorris, founder and CEO of the Perennial brand of businesses. The party will featue guest DJ MC Lyte, the legendary lyricist and iconic hip-hop pioneer.
On Saturday, June 23, the Perennial 10th Anniversary Dinner will take place at The Madison Hotel where winner of the Perennial Small Business Competition will be honored.
Lamell McMorris launched his business a decade ago after moving to D.C. with little more than an idea, a Rolodex, a lot of determination, and a high school intern as his only employee.
Today, he's CEO of Perennial Strategy Group, a thriving government and public relations firm; Perennial Law Group, which focuses on the entertainment, sports and media industries, and Perennial Sports and Entertainment, a full service operation with agents representing some of the nation's top athletes.
HIV Testing events 3 p.m. to 7 p.m., June 27-29
Beginning on National HIV Testing Day on June 27 and continuing through June 29, Whitman-Walker Health will provide free rapid HIV testing at one Walgreens store in D.C. daily. The rapid HIV test takes approximately 20 to 40 minutes to administer and process. Test results will be delivered by the local AIDS service organization providing the testing on site.
HIV testing is being provided by health departments and local AIDS service organizations at select Walgreens stores in 20 markets across the nation as part of an ongoing collaboration between Walgreens, the nation's largest drugstore chain, and Greater Than AIDS, a coalition of public and private sector partners united in response to the domestic epidemic.
The U.S. Centers for Disease Control and Prevention's (CDC) Act Against AIDS initiative and the National Association of People Living with HIV/AIDS, the official sponsor of National HIV Testing Day, also are supporting the effort.
Whitman-Walker Health will provide free HIV testing at the following Walgreens store in Washington, DC:
• Walgreens 4225 Connecticut Ave, NW
Free, walk in HIV testing will also be available at both Whitman-Walker Health facilities:
• Elizabeth Taylor Medical Center, 1701 14th St., NW, 9:00 am-6:00 pm, June 27
• Max Robinson Center, 2301 Martin Luther King Jr. Ave, SE, 9:00 am-4:30 pm, June 27
Of the more than 1.2 million people living with HIV in the U.S. today, an estimated one in five, or nearly a quarter of a million people, do not know it. One-third of those who are positive are diagnosed so late in the course of their infection they develop AIDS within one year. Early diagnosis and treatment helps save lives and is known to reduce the spread of HIV. The CDC encourages everyone to know their status.
"One in 20 adults in DC has HIV," said Whitman-Walker Health Executive Director Don Blanchon. "Nine out of every 10 cases of HIV/AIDS in DC is among African-Americans. One in seven gay or bisexual men in DC has HIV and that number drops to one in every three Black gay or bisexual men in DC. With numbers like these, the importance of getting everyone in the District of Columbia tested is evident. This partnership with Walgreens and Greater Than AIDS will allow us to inform new audiences of the importance of getting tested, knowing your HIV status, and taking care of your health."
All totalled, 47 Walgreens stores in 20 markets across the nation are participating, including stores in the following cities: Atlanta, Baltimore, Chicago, Dallas, Denver, Detroit, Ft. Lauderdale, Fla., Houston, Indianapolis, Los Angeles, Miami, New Orleans, New York, Oakland, Calif., Philadelphia, San Francisco, St. Louis, Washington, D.C. and West Palm Beach, Fla.
An additional 138 Walgreens stores in the participating communities will help publicize the free testing provided by local health departments or AIDS service organizations through in-store messaging, including posters, post cards and in-store audio. Walgreens also will promote National HIV Testing Day with special messages on June 27 on its Times Square digital display, the largest billboard of its kind in the country.
"These testing events provide valuable and vital opportunities to help the communities we serve," said Glen Pietrandoni, Walgreens senior manager of HIV/AIDS and Hepatitis. "Walgreens has supported people living with HIV/AIDS since the beginning of the epidemic through its ability to offer accessible pharmacy, health and wellness guidance to patients, wherever they live. Our pharmacists are developing relationships, listening to concerns and providing education and support."
This marks the second year in a row that Walgreens and Greater Than AIDS have coordinated with local health departments and AIDS service organizations to allow them to provide free HIV testing at select Walgreens stores. This year, more than twice the number of Walgreens stores and markets will participate. More than 50 participating health departments and AIDS service organizations are providing the testing and delivering results on site, as well as supporting outreach.
For more information, including participating Walgreens stores in each city, visit:
Mayor Vincent C. Gray has submitted a bill to the D.C. Council that pays homage to late Go-Go music icon Chuck Brown.
The Chuck Brown Park Designation Act of 2012 would designate the western portion of Langdon Park, between 18th and 20th streets in Ward 5 Chuck Brown Park.
"Chuck Brown, Go-Go music and the District of Columbia are inextricably linked to each other, and it's appropriate that the Godfather of Go-Go should be honored by the city that embraced him and his music," Gray said in a statement. "I promised at his memorial service that we would name a park in his honor, and that it would symbolize Chuck, a place where there is action, people, traffic; the sounds of a city. A park where Chuck's music can be played and where people can enjoy themselves as they always did while listening to Chuck Brown perform."
Brown's responded, saying:
"We would like to thank Mayor Gray for this great honor and encourage the D.C. Council to pass this legislation. We pray the park will be a place where all people can come together to celebrate the things that were most important to Chuck and his fans: family, life, peace and love."
Brown passed away on May 16 at age 75, following a lengthy illness.
As former Ward 5 Council member Harry Thomas Jr. prepared over the weekend to settle into a new home and identity at a federal compound in Alabama, the 51-year-old married father of a teenage son, acknowledged in an interview that he has been in prayer over fear of the unknown.
"God helps you conquer all obstacles," he was quoted as saying. "I talked about fear on Friday [during a gathering]. "If you don't acknowledge fear you'll be paralyzed."
Thomas, who fell from grace after admitting that he diverted $$353,000 of taxpayer money, meant for youth sports programs to his personal use, was scheduled to begin a 38-month incarceration this week at the Federal Prison Camp at Maxwell AFB in Montgomery, where he will be known as inmate No. 31866-016.
During the brief interview, Thomas talked about visiting his father's grave at Fort Lincoln Cemetery, roasting marshmallows with his daughters and being surprised with a visit from an uncle. He also managed to infused bits of optimism and humor while reflecting on any job prospects that might await him after his sentence is served.
In doing so, he noted his role helping to bring the first Costco to D.C.
"It'll be open by the time I get home, when I'll be looking for a job," said Thomas.