text:
Business Management
Going Green
Sustainability Emerges as a Business Model
These two entrepreneurs have learned the cost savings and competitive advantages of going green. Learn how you can be a green entrepreneur in your industry.
Business Management
Are Holiday Parties in Season?
Before you let your inner Scrooge take over, listen to what these experts have to say about keeping costs down and spirits high.
Management & Operations
Can Silicon Valley Avoid a Wall Street-Like Meltdown?
In the U.S. technology hub, it's become survival of the leanest.
Business Management
Test Your PC With 10 (Mostly) Free Sites and Tools
Is your PC healthy? Don't be too sure. Think back to when you heard a kerklunk sound coming from the hard drive. Or maybe you remember the last time your Internet connection was down (and I don't mean just a little depressed).
Going Green
The World Awaits Your Green Business
Learn which industries the West Coast Green Conference recommends are ready for your green idea.
Winning Management Lessons From the NFL
You can more learn much more than you thought by watching a day of football.
Management & Operations
Know Your Return on Innovation
Endless ideas and prototypes don't mean anything if they're sitting on shelves. Get your innovations out there, and then get tracking.
Business Management How-To Guides
Lessons in Recruiting
How to get the best people on your team--and keep them there.
Legal Center
Avoid Legal Time Bombs
Learn whether your business is vulnerable to getting sued. Find the holes in your business, and stop lawsuits before they start.
Legal Center
Can I Operate my Business as a Non-Profit?
Probably not, but it's important to understand exactly what one is.
Business Management
5 Steps to Customer Loyalty Surveys That Work
It's a great way to keep your business moving forward in any economy.
Business Management
Survive the Small-to-Big Transition
No man's land is territory many growing businesses encounter--too small to be big, too big to be small. What you do when you're there could determine whether your business will succeed or fail.
Business Travel
A Concierge in the Palm of Your Hand
New mobile applications can help business travelers with everything from tippling to traffic.
Business Management
Not Just Any Partner
You like marketing; he likes accounting. You enjoy designing new products; she's a sales guru. Finding a business partner with complementary skills can be the best thing you do for your business--and yourself.
Going Green
It Pays to Go Green in a Down Economy
Learn why even in this economy you can't afford not to implement green practices in your business.
Business Management
Risky Business
Is your business ready to deal with the unexpected?
Business Management
3 Tips for Green Building
Now's the time for contractors to get their piece of the environmental action.
Legal Center
Fraud Rattles SBA Program
An investigation of HUBZone revealed millions in loans to ineligible and even fake businesses.
Management & Operations
Business Mentoring
Years of managing and running businesses inspired one man to help others do the same.
To The Rescue
Your education is good for more than just your own success. Learn how you can help others, too.
Legal Center
16 Lies of Lawyers
Listen for these all-too-common phrases--and then take them for what they really mean.
Business Management
Time-Management Tips for Mobile Professionals
The late Randy Pausch offered valuable lessons for managing our most precious commodity.
Management & Operations
Virtual Help for Real Entrepreneurs
Learn the many roles a virtual staff can fill to help grow your business.
Speak Like the President
If you watched, you know what they said (or didn't say). But do you know why they were effective? How well did they say what they said?
Business Travel
Casual Friday: High-Tech Travel Tips
Practical--and impractical--advice for the casual traveler.
Legal Center
Patenting Your Invention
Patent attorney Patrick Roche of Fay Sharpe LLP talks about the history of the patent and when an entrepreneur who has an invention idea should apply and file for a patent.
Ads by Google
Most Shared Stories
Connect with Entrepreneur
From the Entrepreneur Bookstore
Ads by Google


text:
Tapahtumat & festivaalit Mae Hong Son
In addition to the regularly celebrated national events and festivals, Mae Hong Son has the following annual events:
Highlight Events & Festivals
It's the beginning of the adventure trip in Mae Hong Son. Each range has beautiful natural scenery which has the difficulty from level 3 to level 5. A total distance of 50 kilometers which visitors ca...Lisätietoja
venue : Phra That Doi Kong Mu, Mueang district, Mae Hong Son province This is the festival that indicates the beginning of tourism season of Mae Hong Son. You will see the Bua Tong Blossom in the fi...Lisätietoja

subset: commoncrawl


text:
Register now for free, or sign in with any of these services:
Status: Closes in 50 minutes
Know more about this business than we do? Cool! Please submit any corrections or missing details you may have.Help us make it right
Better parts... better prices, everyday on auto parts and accessories. Plus find a store, check out our current ad, get information on racing events, contact us, and more.
We are Professional Parts People.
Wix Filters
K & N Filters
Be the first AL.com user to add photos or videos of O'reilly Auto Parts
The manager of this store isn't capable of managing anything or anybody! Thank God for good help, cause this dude needs to be home managing his family life instead of bringing his abbreviation to work and taking it out on the customers. Maybe once he can get that teen boy under control, he may could return to the efficient employee he once was.....until then, I will be shopping elsewhere for my...
best custome services ive had in that store, and a very helpful young man he was hispanic, he provided all the information and new alot about cars. gave me some tips about my car. i sure do greatly appricate that young men.


text:
Judge Denies Kelli Stapleton's Request
- Published in LOCAL NEWS
- Be the first to comment!
The Benzie County woman who tried to kill herself and her daughter, is denied request to wear civilian clothing.
The Benzie County woman who tried to kill herself and her daughter, is denied request to wear civilian clothing.
Representatives from over 40 colleges, universities and military organizations are coming to help college-bound students plan their futures during the annual "College Night" in the West Shore Community College Recreation Center.
Ludington Area Arts Council regrets to announce that the Fiber Maker Faire, originally scheduled for Saturday, October 12, has been canceled. The current installation in the Arts Center's Main Gallery, Fiber Invitational '13, will remain on exhibit through November 3. Fifteen artists representing some of the finest in fiber art are represented in this unique exhibition. The Silk Painting workshop scheduled for September 28 and the Recycle-Repurpose workshop scheduled for October 13 will be held as scheduled. Please visit www.ludingtonartscenter.org for a complete calendar of upcoming events.
While it isn't a remarkable day otherwise--September 26th--is special to us. 14 years ago, today, WMOM signed on the air for the first time. We didn't know exactly what the impact would be. Just before our start up, we put up a sign at the original location that said "Always Listen to Your Mom". The building at 907 East Ludington Avenue has long since been. We later found out that all sorts of rumors has been told about the new occupant in the 100 old year building. But, Almost immediately people tuned into our unique blend of contemporary music. Nine years ago we moved into our present location. Several of WMOM's employees were in high school when first started broadcasting, including Sales Manager Esther Johnson and morning show host, Erik Etchinson. We're proud to say that today we're alive and well. As Mark Twain once said "the rumors of my demise have been greatly exaggerated".


text:
Judge: Dr. Arnold Klein Has No Say Over MJ's Kidsby Free Britney at . Comments
Michael Jackson's friend and dermatologist, Dr. Arnold Klein, was shut down in court by a judge ruled he has no legal right to raise concerns the late star's kids.
Klein's lawyer, Mark Vincent Kaplan, showed up in probate court and said his client had concerns about the kids and how they were raised - per MJ's request.
He did not object to Katherine Jackson being named their guardian.
Arnold Klein is rumored to be the biological father of Paris Jackson and Michael Jr., the singer's older two kids. This has not been factually established, however.
Court documents show the judge ruled Klein had "no legal standing" because there's a "conclusive presumption" Jackson and Debbie Rowe are the parents.
Michael Jackson and his close friend Dr. Arnold Klein.
Klein admitted he gave sperm to Jackson at some point but says that to the best of his knowledge, he's not the dad. Nor will he take a test. Unless asked.
In any case, he has no standing to say how they are raised unless he is an actual parent, which as far as the court is concerned, Dr. Arnold Klein is not.
On a side note, the court also found there is "no legal mother" of Prince Michael Jackson II, a.k.a. Blanket. He has many rumored moms, like Pia Bhatti.
Do you think Dr. Arnold Klein is Paris and Michael Jr.'s father?
Can anyone cite a legal case where a person with no blood or legal ties - a stranger - was given a voice in how a child is raised? Arnold Klein is disgusting! He knows damn well that MJ never asked him for his ugly sperm, and that he is NOT the father of those children. And the lawyer should be censured for representing Klein in this naked grab for money from the Jackson estate.
he is totally not the father, all this speculation needs to stop
Oh my goodness, I just wish they would leave him to be! He is in a happier place now...
RIP MJ, our thoughts and prayers are with your family.
i just feel so bad for the children i hope the grandpa stays away look what he did to michael i hope he doesn't do it to the children!!
r.i.p. michael what happened to you is tragic and your fans will always keep you alive
r.i.p michael jacksn ,
is it true he raped kids?
even if it is dont you think it would be hard enough for the child without everyone following it? i dont think it is.
he has nothing to do with the kids. They are michael jackson kids
Make the potential parents sign agreements stating they will collect no money from MJ or any other outside fund. The one who agrees is the father. They should really hire me to fix the world's problems. I'd rock at that job.


text:
Managing a table as multiple ordered blocks of entries. Each block has a local index value for each entry, and each entry has an associated element value. The entries in the table are monotonically ordered, and the table is searchable by element value and entry index value. Each block has an offset based on the number of entries in the blocks preceding it in order. The global index of an entry in a block is the offset combined with the local offset value, such as by adding the two values together.
1. A computer-implemented method for managing table data, comprising:
a processor;
managing, by a computing device, a table having sequentially ordered entries as multiple ordered groups of entries, where each entry has an associated entry identifier and index value, and the table is searchable for entries by entry identifier or index value;
indexing the entries of each of the groups with local index values relative to each group indicating a position within the group rather than indicating a position within the table as a whole, where the local index values start at a least-significant value in each group;
assigning one offset to one group of the multiple ordered groups, the offset defining a value to combine with the local index values to produce a global index value indicating a position within the table as a whole; and
assigning a different offset to the next-ordered group after the one group, the offset derived from the one offset and the number of entries in the one group.
2. The method of
managing the table as multiple ordered blocks each having a similar number of spaces for entries.
3. The method of
automatically splitting existing groups into sub-groups when one or more of the groups reaches a threshold number of entries.
4. The method of
deleting an entry in the one group;
reordering the entries within the one group in response to deleting the entry; and
decrementing the different offset of the next-ordered group without affecting local index values of entries of the next-ordered group.
5. The method of
inserting an entry in the one group;
reordering the entries within the one group in response to inserting the entry; and
incrementing the different offset of the next-ordered group without affecting local index values of entries of the next-ordered group.
6. The method of
moving an entry within the one group; and
reordering the entries within the one group in response to moving the entry, without affecting an order of entries in the next-ordered group.
7. The method of
storing the one offset within the one group; and
storing the different offset within the next-ordered group.
8. The method of
generating a root block;
generating pointers in the root block to indicate an address to point to each of the data blocks; and
storing an offset for each of the data blocks in the root block and not in the data blocks.
9. The method of
generating a pointer in each of the data blocks to point to the root block.
10. The method of
generating a root block;
generating multiple indirection blocks;
generating pointers in the root block to indicate an address to point to the indirection blocks;
generating pointers in the indirection blocks to indicate an address to point to a portion of the data blocks;
storing an offset in the indirection blocks for each of the data blocks to which the indirection block has a pointer; and
storing an offset in the root block for each of the indirection blocks to which the root block has a pointer, where the offset for the indirection blocks is derived from a combined number of entries in all data blocks to which each indirection block directly and indirectly points.
11. An article of manufacture comprising a machine-readable storage medium having content stored thereon to provide instructions to cause a machine to perform operations including:
managing a table having sequentially ordered entries as multiple ordered groups of entries, where each entry has an associated entry identifier and index value, and the table is searchable for entries by entry identifier or index value;
indexing the entries of each of the groups with local index values relative to each group indicating a position within the group rather than indicating a position within the table as a whole, where the local index values start at a least-significant value in each group;
assigning one offset to one group of the multiple ordered groups, the offset defining a value to combine with the local index values to produce a global index value indicating a position within the table as a whole; and
assigning a different offset to the next-ordered group after the one group, the offset derived from the one offset and the number of entries in the one group.
12. The article of manufacture of
generating a root block;
generating multiple indirection blocks;
managing the table as a tree of nodes, where the root block is the root node, and each data block is a leaf node in the tree with one or more layers of indirection blocks separating the leaf nodes from the root block, wherein the layers of nodes are connected with pointers between the layers of nodes and each node is a parent node for a child node that exists one more layer removed from the root node;
storing an offset for each child node in the parent node, where the offset is derived from a combined number of entries in all leaf nodes pointed to by a parent node and its children nodes.
13. The article of manufacture of
inserting an entry in an affected data block;
reordering the entries within the affected data block in response to inserting the entry; and
incrementing offsets stored within the parent node of the affected data block for all data blocks having the same parent node and ordered subsequent to the affected data block without affecting local index values of entries of the subsequently-ordered data blocks; and
incrementing offsets stored within a parent of the parent node for all indirection blocks ordered subsequent to the parent node without affecting any values within child nodes of the subsequently-ordered indirection blocks.
14. The article of manufacture of
deleting an entry in an affected data block;
reordering the entries within the affected data block in response to deleting the entry; and
decrementing offsets stored within the parent node of the affected data block for all data blocks having the same parent node and ordered subsequent to the affected data block without affecting local index values of entries of the subsequently-ordered data blocks; and
decrementing offsets stored within a parent of the parent node for all indirection blocks ordered subsequent to the parent node without affecting any values within child nodes of the subsequently-ordered indirection blocks.
15. The article of manufacture of
moving an entry within an affected data block; and
reordering the entries within the affected data block in response to moving the entry without affecting any values in any parent nodes or other leaf nodes other than the affected data block.
16. The article of manufacture of
17. The article of manufacture of
automatically splitting each data block into multiple data blocks when one or more of the data blocks reaches a threshold number of entries; and
automatically splitting each indirection block into multiple indirection blocks when one or more of the indirection blocks reaches a threshold number of pointers;
wherein splitting the data blocks and splitting the indirection blocks are not directly dependent upon each other.
18. An apparatus comprising:
a memory having a table having sequentially ordered entries as multiple ordered groups of entries, where each entry has an associated entry identifier and index value, and the table is searchable for entries by entry identifier or index value;
a table manager to manage the table, including index the entries of each of the groups with local index values relative to each group indicating a position within the group rather than indicating a position within the table as a whole, assign a first offset to a first group of the multiple ordered groups, the first offset defining a value to combine with the local index values to produce a global index value indicating a position within the table as a whole, and assign a second offset to the next-ordered group after the first group, the second offset derived from the first offset and the number of entries in the first group; and
a processor to execute operations from the table manager to operate on the table in the memory.
19. The apparatus of
20. The apparatus of
The invention is generally related to data management, and more particularly to managing dynamic ordered tables that are searchable by entry value and index.
A portion of the disclosure of this patent document contains material that is subject to copyright protection. The copyright owner has no objection to the reproduction by anyone of the patent document or the patent disclosure as it appears in the Patent and Trademark Office patent file or records, but otherwise reserves all copyright rights whatsoever. The copyright notice applies to all data as described below, and in the accompanying drawings hereto, as well as to any software described below: Copyright � 2008, Red Hat, Inc., All Rights Reserved.
Electronic system commonly generate and use data. When a system generates significant amounts of data, the data can be managed with a data table. A table provides an organized way to store, locate, and access data. There are many methods available for data management of data in tables. One type of table management is an ordered table, which may have a monotonically incrementing index value throughout the entire table. Such tables are useful for data that needs to be accessible by both entry value and index value. The entry value refers to the value of the data element, meaning if the data element is known, the table should be searchable by the data element to find its location within the table. The index value refers to the identifier indicating what place in the table is occupied by the data element, and the table should be accessible by index value (e.g., access the 42nd element in the table).
Consider an implementation of a user program or system that allows a table to evolve dynamically and has the potential of generating very large tables that evolve over time. The information in such a table is dynamic in a random fashion. In current table management, every operation on a data element in such a table could potentially require updating a significant fraction of the elements of the table. On average, nearly half of the elements in the table would need to be updated for every insert, move, or remove operation on data elements of the table. More particularly, every insert required updating (incrementing) the index value of every data element subsequent to the inserted data element. Every remove similarly required updating (decrementing) the index value of every data element subsequent to the removed data element. A move (also referred to as a reorder) required updating (either incrementing or decrementing) a group of data elements between the location where the data element was being removed from to the location where the data element was being moved to. As a result, any algorithm that used such large tables suffered poor performance due to the amount of updating required for each operation. The performance of the algorithms reduced the practical use of the large dynamic tables.
The following description includes discussion of figures having illustrations given by way of example of implementations of embodiments of the invention. The drawings should be understood by way of example, and not by way of limitation.
Mechanisms described herein allow for managing a table as multiple ordered blocks of entries. Instead of a monolithic table with monotonically increasing index values over the entire table, the table is separated into blocks that has a portion of the entries of the table as a whole. Each block has a local index value for each entry of its portion of table entries. The table as a whole is searchable by element value and entry index value, which can be accomplished by having each block searchable by element value and entry index value. Each block has an offset based on the number of entries in the preceding blocks (i.e., the blocks that precede it in order), which can be combined with the local index value to generate a global index value. When entries are added, removed, or simply reordered, the updating of index values is limited to the block where the affected entry is located. Other than the entries in the block, only the offsets of subsequent blocks need to be changed. The result is much less processing when a change is implemented in the entries of the table.
In the following description, numerous details are set forth. It will be apparent, however, to one skilled in the art, that the present invention may be practiced without these specific details. In some instances, well-known structures and devices are shown in block diagram form, rather than in detail, in order to avoid obscuring the present invention.
Some portions of the detailed descriptions which follow are presented in terms of algorithms and symbolic representations of operations on data bits within a computer memory. These algorithmic descriptions and representations are the means used by those skilled in the data processing arts to most effectively convey the substance of their work to others skilled in the art. An algorithm is here, and generally, conceived to be a self-consistent sequence of steps leading to a desired result. The steps are those requiring physical manipulations of physical quantities. Usually, though not necessarily, these quantities take the form of electrical or magnetic signals capable of being stored, transferred, combined, compared, and otherwise manipulated. It has proven convenient at times, principally for reasons of common usage, to refer to these signals as bits, values, elements, symbols, characters, terms, numbers, or the like.
It should be borne in mind, however, that all of these and similar terms are to be associated with the appropriate physical quantities and are merely convenient labels applied to these quantities. Unless specifically stated otherwise, as apparent from the following discussion, it is appreciated that throughout the description, discussions utilizing terms such as �sending�, �receiving�, �comparing�, �hashing�, �maintaining�, or the like, refer to the action and processes of a computer system, or similar electronic computing device, that manipulates and transforms data represented as physical (electronic) quantities within the computer system's registers and memories into other data similarly represented as physical quantities within the computer system memories or registers or other such information storage, transmission or display devices.
The present invention also relates to an apparatus for performing the operations herein. This apparatus may be specially constructed for the required purposes, or it may comprise a general purpose computer selectively activated or reconfigured by a computer program stored in the computer. Such a computer program may be stored in a computer readable storage medium, such as, but not limited to, any type of disk including floppy disks, optical disks, CD-ROMs, and magnetic-optical disks, read-only memories (ROMs), random access memories (RAMs), EPROMs, EEPROMs, magnetic or optical cards, or any type of media suitable for storing electronic instructions, each coupled to a computer system bus.
The algorithms and displays presented herein are not inherently related to any particular computer or other apparatus. Various general purpose systems may be used with programs in accordance with the teachings herein, or it may prove convenient to construct more a specialized apparatus to perform the required operations of the method. Structure for a variety of these systems will appear as set forth in the description below. In addition, the present invention is not described with reference to any particular programming language. It will be appreciated that a variety of programming languages may be used to implement the teachings of the invention as described herein.
Computing device 110 includes table manager 130, which can include hardware, software, or a combination. Table manager 130 may be software components executed by a processor of computing device 110. Table manager 130 represents table management as referred to herein to manage table data 124 of memory 120. Table management is not necessarily a unitary entity, but could include functions, mechanisms, calls, operations, etc., by any of a number of components from user-level software to OS kernels, etc. Thus, the components shown as part of table manager 130 represent the management functions provided by table manager 130, whether as hardware, software, or some combination.
Table manager 130 may include some or all of the illustrated components. The various components provide functionality to operate on table data 124. Local index generator 132 generates local index values relative to subtables or blocks of elements. Local index generator 132 orders the entries of the subtable within the subtable, and assigns local index values beginning with a least-significant value (e.g., zero). The entries are increased in order to the last entry in the subtable. Block offset generator 134 generates an offset value for subtables based on a number of entries in all preceding subtables. Indirection generator 136 generates indirection subtables and/or pointers. The indirection subtables point to subtables that hold data, or point to subtable that point to subtables that hold data (and so on, depending on the number of levels or layers of indirection in the system). Indirection generator 136 generates the pointers to the subtables, and in one embodiment, generates pointers from child subtables (i.e., subtables being pointed to from an indirection subtable one level closer to the root) to their parent subtables. Entry locator 138 resolves global index values to local index values to access an entry from its subtable as discussed above, or enables searching the table for an entry value as known in the art. Entry updater 139 reorders subtables that have an entry added or removed, and updates the offset values of all subsequent subtables (including indirection subtables) that are affected by the change in the number of entries in the table. Preceding subtables are not affected by the change in the number of entries in the table, and thus their offset values need not be adjusted.
Block 210 holds entries 0 to (N−1), block 220 holds entries N to (N+P−1), and block 230 holds entries (N+P) to (N+P+Q−1). Note that N, P, and Q could be equivalent in value (i.e., N=P=Q), but there is no requirement that they are equivalent. Such a requirement could be enforced in one embodiment. In one embodiment, there is a requirement that N, P, and Q be similar in size, such as within an order of magnitude. The choice to make the values different sizes increases the complexity of the logic required for the table management, as would be understood by those skilled in the art.
Each block 210, 220, and 230 includes an offset. Considering the simple case, offset 212 of block 210 would be zero, offset 222 of block 220 would be N, and offset 232 of block 230 would be N+M. More complex cases can be considered where the offsets based on the number of entries in the blocks, but do not necessarily match the number of entries in the preceding blocks. While such implementations could be created, they would increase the processing logic of the table management. Such implementations are discussed below with respect to the general case, but will otherwise not be further discussed in reference to the figures.
Block 210 has index values 214 for each entry 0 to N−1. Index values 214 may be referred to as �local� index values, referring to the fact that the index starts at zero (or some other least significant value as described below), and increments monotonically to N−1 within block 210. Index values 224 of block 220, rather than starting at N, also start at the least significant value of zero and increase monotonically within block 220 to the most-significant local value of P−1 (i.e., the total number of entries or spaces within the block). Similarly, local index values 234 of block 230 start at zero and increase through Q−1. For simplicity in description, each element of each block is shown having a value that corresponds with the value of its global index in table 200. Thus, in block 210, the element having index 0 has a value of entry 0, index 1 has a value of entry 1, and so forth. In practice, the element in block 210 with index 0 will have some arbitrary value, and the global index value or global entry value may not be stored anywhere in table 200, but can be derived as discussed below.
To obtain the global index for a table entry, the block offset can be added or otherwise combined (in the complex case where the offset is not simply the number of preceding table elements, or in the complex case where the least-significant value in the blocks is not zero). Thus, consider that offset 222 is N, given there are N elements stored in block 210. The element in block 220 having index 1 will have a global index value of N (the block offset) plus 1 (the local index value) to total N+1, which is the expected value as shown in the figure. Similarly, offset 232 is N+P to reflect the fact that there are a total of N+P elements in all blocks preceding block 230. The element with index 0 has a global offset of N+P, and the element with the local index 1 has a global index of N+P+1.
Managing the table as blocks with offsets and local index values provides many advantages over a traditional management of a monolithic table. For example, any set of elements within a single block can be reordered without affecting the contents of any other block. Additionally, an element within a block can be deleted by reordering the single block, and then simply decrementing the index of each successive block, rather than renumbering the index value of every successive element. Additionally, an element can be added to a block by reordering the one block, and incrementing the index of each successive block, rather than incrementing every successive element in the table.
There is no requirement that any particular block contain the same number of elements as another. Indeed, there is no requirement that the blocks are all the same size or have the same number of spaces to hold elements. In one embodiment, managing the table as separate blocks or separate groups is done with blocks of different sizes, having differing numbers of available spaces to hold entries within the block. In an alternate embodiment, managing the table as separate blocks is done with blocks of the same size, or at least a similar size (e.g., they are within an order-of-magnitude in size). In one embodiment, the tables are maintained with the same number of elements per table (with a �remainder algorithm� used to determine how to allocate a remainder (e.g., the result of (total number of elements)mod(number of blocks)). Although similarity and/or equivalence in size is not required, enforcing a similarity in size on the blocks would simplify the implementation of the system, requiring less logic to account for offsets
In one embodiment, the number of blocks grows automatically and dynamically with the increase of the global table itself. Thus, the table may begin with a single block, which is automatically split when the single block reaches a threshold number of entries. As used herein, a block reaching a threshold number of entries or elements refers to a number of elements in the block becoming equal to a defined value. The threshold may be the size of the block, referring to the number of spaces in the block. Thus, when the block becomes �full,� the block is split into multiple blocks. For simplicity, splitting a block into multiple blocks or sub-blocks can be splitting the block into two sub-blocks, where half of the entries can be placed in each of the new (sub-) blocks. Note that some apportionment other than half of the entries into each new block is possible (including simply adding a new sub-block without separating any of the entries into it initially), but the management of the system would be slower, and the new block would eventually be expected to hold entries also. The table as a whole grows as each block receives more entries and the blocks are split again.
In one embodiment, a hierarchical or tree structure for table management is used to employ the same techniques described above. Instead of simply splitting the table into various blocks each containing entries of data elements, the table is split into data blocks that are similar to the blocks or groups described above, and indirection blocks. The indirection blocks do not contain data elements, but pointers to other blocks. In one embodiment, a simple root block as an indirection block with data blocks could be implemented. Alternatively, a deeper tree structure can be implemented with a number of indirection layers in the tree. In such an implementation, the root block is the root node, and there are one or more layers of indirection block layers separating the root node from the data blocks, which are the leaf nodes. In the tree structure, a node is considered a parent node if it has pointers to another node. Every node that is not the root node is a child node, with the parent of the child node being the root node for the first layer of indirection nodes (or the leaf nodes if only two layers are employed), and the parent being the node that is one layer closer to the root node for all other nodes. Consider the examples at
In one embodiment, the tree structure is dynamically generated. The table can start with a single block. When the single block reaches a threshold number of entries (e.g., all entries are filled), the table management creates two new blocks: one hold a portion of the entries, and/or receives new entries, and the other (a root node in the first instance) contains pointers to the blocks holding entries, together with base offsets for the data blocks. In a tree structure as described, sub-blocks no longer need to track their own base offset. Instead, they may contain a pointer to their parent block. Once a root node indirection block exists, data blocks can continue to be split and pointers generated and added/stored in the root node to point to the new data blocks until the root node holds a threshold number of pointers. Note that there is no requirement for the indirection blocks to be the same size as the data blocks, and may be at least an order of magnitude smaller in size or hold a number of items (pointers) an order of magnitude or more smaller than the number of items (data elements) held by the data blocks. When the root node at first, or one or more indirection nodes as the tree grows, holds the threshold number of items, the table management can generate additional indirection blocks that are pointed to by the root node, and each points to a number of data blocks. When one layer of indirection blocks is full, another layer of indirection blocks can be added as the number of data elements in the data blocks continues to grow. By maintaining the table in this kind of tree structure, maintaining the indexes of individual elements of the data blocks takes a fraction of the time it would in a flat (monolithic) table.
Block 320 includes offset 322 of value �3� indicating the three entries in the preceding block 310. Recall that not only are the entries within each block ordered, but the blocks themselves are also ordered to achieve global ordering of the entries in table 300. Block 320 includes local index values 324, entries 326, and global index values 328. Block 330 has offset 332 of value �7� indicating the seven entries in the preceding ordered blocks 310 and 320. Block 330 includes local index values 334, entries 336, and global index values 338.
For purposes of simplicity in description, observe that each entry 316, 326, 336 has a different value, the value being two times the value of the corresponding global index value. In an actual implementation, there is no reason to assume that the value of an entry has any relation to its position in the table, although it may. Entries can be strings or numeric values.
Table 300 is searchable by entry value and by entry (global) index. Thus, a program or function could indicate a request related to an entry of value 12. A table manager (not shown) would search the entries in table 300 to locate the entry, as is known in the art. The entry found is located in block 320 with a local index 324 of �3�. Observe that global index 328 of �6� is derived by adding local index 324 of �3� to offset 322 of �3� to obtain �6�, which corresponds to the expected value as shown in the figure. A similar process will hold true for all other entries shown. To find an entry by index, a program or function can request an operation on the entry with index of �8�. Note that in one embodiment, the programs or functions need not have any knowledge how the table is managed. Thus, requesting the entry with index �8� would refer to the entry having a global index value of �8�. The program need not know that separate blocks of data elements are used, or know where in a block the entry is located. The table manager can take the requested index of �8� and compare it against the offset values of the blocks. The value of �8� is greater than offset 332 of value �7�, and would be less than an offset of value �10� that would correspond to the next-ordered block, assuming one existed. Thus, the table manager would search within block 330, subtracting the offset �7� from the requested index �8� to obtain local index value �1�, which indicates the entry having a value of 16. The entry having value �16� indeed corresponds with global index 338 of value �8�, confirming the process. A similar process could be used to find other values within table 300.
Table management (e.g., table manager 130 of
The entries within each block or subtable are ordered within the subtable. The table management indexes entries in each subtable with local index values, 406. The local index values indicate a position relative to the subtable rather than to the table as a whole. The table management assigns an offset to each subtable, based on the number of entries in the subtables that are prior to the subtable in order, 408.
A system having the table could generate a search for a particular entry using a global index value, 410. The subtable determines or identifies based on the global index value what subtable stores the particular entry being sought. The table management converts the global index value to a local index value, 412, by adjusting the global index value by the offset of the identified subtable. An example of converting a global index value to a local index value is provided above with reference to
The system could remove or add (or move) an entry in a subtable, 416. Moving the entry within a subtable causes a reordering of the elements of the subtable, but leaves unaffected any other subtable. Removing or adding an entry in a subtable causes a reordering within the subtable, but does not require reordering of entries in other subtables. Rather, the table management adjusts the index values of all entries within the local subtable in which the entry was added or removed, 418, and adjusts (decrements or increments, respectively) the offset values for all subsequent subtables, 420. Note that the offset of the subtable in which the entry was added or removed does not need to be adjusted, because the number of entries in the subtables prior to it in order are not affected on that operation. Only the offsets of subsequent subtables need to be adjusted to account for the change in number of entries in the global table.
Pointer block 520 includes a pointer (root 510 ptr) back to its parent, root block 510. Pointer block 520 can be said to be a child node of root block 510. Pointer block 520 also has children nodes, data blocks 530 and 540. Pointer block 520 includes pointers to data block 530 (blk 530 ptr) and data block 540 (blk 540 ptr), as well as offset values for the two data blocks (blk 530 offset and blk 540 offset, respectively). Note that a table or a block �having� or �including� a value can both be understood as references to the table or block storing the value. A table is generally implemented in a memory or a storage, and each block is a logical segment of the memory or storage where values are stored.
Data block 530 and data block 540 store the actual data element entries of table 500. The root and other indirection blocks simply hold pointers, handles, or some other addressing or indirection mechanism to locate another segment of memory (i.e., another block). The data blocks are considered the leaf nodes of a tree structure. Each data block 530, 540 includes index values 536, 546, respectively, to locally index the entries stored within the data blocks. Data block 530 includes a pointer (parent ptr 534) to its parent, pointer block 520. Similarly, data block 540 includes a pointer (parent ptr 544) to its parent, also pointer block 520. Each data block 530, 540 also has an associated offset 532, 542. In
Pointer block 620 in turn has block pointers 622 referencing data block (d-blk) 640 and data block 650, and offsets 624. Pointer block 620 includes a parent pointer, pointer to root 610. Pointer block 630 has block pointers 632 referencing data blocks 660 and 670, and offsets 634 corresponding to those data blocks. Pointer block 630 also includes pointer to root 610.
Data block 640 includes local index values (lcl idx) 642, and entries 644. Global index values (glb idx) 646 are also shown for convenience, but would likely not be stored in data block 640. Data block 640 has a parent pointer, pointer to block 620. Data block 650 similarly includes local index values 652, entries 654, and pointer to block 620. Data block 650 also shows global index values 656 for illustration. Data blocks 660 and 670 likewise have local indexes, entries, parent pointers, and global indexes (as shown in the Figure). Note the parent pointer is pointers to block 630, seeing that data blocks 660 and 670 are pointed to by pointer block 630 rather than pointer block 620 that points to data blocks 640 and 650.
The offsets are determined as follows. Pointer block 620 has an offset of �0� because there are no preceding ordered blocks. Similarly, data block 640 stores the first values in table 600, and so has an offset 624 of �0�. Data block 650 has an offset 624 of 2, accounting for the two entries in preceding data block 640. Thus, in the generic sense, data block 640 has N=2 entries, which are indexed as local entries 0 and 1 (N−1). Pointer block 630 has an offset 614 of �5�, because pointer block 620 points, either directly or indirectly to a total of five entries. Data block 660 has an offset 634 of �5�, and data block 670 has an offset 634 of �8�.
Similar to the previous example above, the values of all entries are artificially selected to be two times the value of the global index for the entry. There is no global index of �0�, instead starting with value �1�. Observe that because the global index value was selected to start with �1� instead of �0�, the data management logic will need to adjust for the least-significant value when locating entries based on the global index. Consider a program or function requesting an operation related to the entry having the global index �4�, element value of �8�. To find the entry corresponding to global index �4�, the data management can first adjust the global index by subtracting 1 to normalize the least-significant value (one) of the global index values to the least-significant value (zero) of the local indexes. The data management can then compare the value �3� to the offsets of the pointer blocks. The value �3� is greater than the offset (�0�) of pointer block 620, and less than the offset (�5�) of pointer block 630, as indicated by offset 614 of root block 610. Thus, the data management can traverse the tree by selecting the branch pointing to pointer block 620. Within pointer block 620, the data management can determine from offset 624 that the value �3� is greater than the offset of the last data block, indicating the entry should be found in data block 650. The offset of data block 650 (�2�) is subtracted from the value (�3�) to normalize the sought-for value to the local index value (�1�) of data block 650. Within data block 650, index �1� corresponds to the entry having value of �8�, as expected, and as shown by global index 656 of value �4�.
If a program or function sought for the entry having value �16�, the data management could search table 600 to find the entry with value �16� within entries 664 of data block 660. The global index can be determined by taking the local index value (�2�), adding it to the local offset value (�5�, as shown in offset 634 of pointer block 630), and adjusting the value by adding �1� to normalize the local index least-significant value (zero) to the least-significant value (one) of the global index values. The result is 5+2+1=8, which is the value sought, as confirmed by global index 666, and cross-checked by the 16/2=8 check artificially built into the entry values for this example.
Similar processes could be used to find any other entry by index value and/or by entry value.
Data block 740 has entries of value V0 through V(N−1), indexed 0 through N−1, respectively. Because the data elements are artificially assigned a generic value corresponding to a monotonically increasing number, the global index values (not shown) of these elements in this example would be the portion of the value shown for the element that does not include the V. Thus, in data block 740, the element of value V0 has a global index of �0�, the element of value V1 has a global index of �1�, and so forth to the element having the value V(N−1), which has a global index of �N−1�. Data block 750 has entries of value VN through V(N+P−1), with similarly corresponding global index values (not shown).
Pointer block 760 has block pointers 762, which points to data blocks 772 and 774, which are not shown in detail. Pointer block 780 has block pointers 782 to additional blocks 792, 794, and 796. Each of these blocks may be data blocks, or be additional pointer blocks that will in turn point to data blocks, which is shown generically rather than in detail in
The offsets are determined as follows. As the first pointer block, or as a pointer block that points indirectly to the first data block having the first ordered entries (i.e., the entry having the lowest global index value of table 700), pointer block 720 has an offset 714 of �0�. Pointer block 730 is the pointer block that directly points to the data block having the first entry of table 700, data block 740, and so pointer block 730 also has an offset 734 of �0�. Data block 750 has an offset 734 of �N�, corresponding to the N values stored in data block 740. Pointer block 760 has an offset 724 of �N+P�, corresponding to N values stored in data block 740, and the P values stored in data block 750. These are the total number of entries preceding the entries of the first ordered data block (772) pointed to (indirectly, in this example) by pointer block 760, and so the combination of their values determines the offset of the pointer block. Data block 772 similarly has an offset 764 of �N+M�. The offsets of all subsequent blocks, both data blocks and indirection blocks, are indeterminate from the information provided in
Note that although
For example, consider a tree structure with indexes 0-19, and values of 1-39 (where the value is twice the index plus one). The following tables illustrate various blocks of the tree.
Note that in simpler cases described above, the ordering of the entries was inherent in the ordering of the blocks, and the calculation of the offset could be calculated based on the ordering and the size of the blocks (i.e., the number of entries in the blocks). In one embodiment, the offset of a hybrid-block tree structure is based on the location of the block, whether by order or by reference. The order of the blocks may be considered to be based on reference. Thus, to calculate the offset of any entry that occurs in the table after a pointer, the system determines the size of the subtree (block) referenced by the pointer. One implication of such an approach is that changing an item in a subtree would have to be propagated back up to the root, to prevent being required to traverse every subtree encountered when searching for an offset value. For example, consider tables 1, 2 and 3. To find the offset of the data entry 15, the base offset is the offset of block 1 in which entry 15 is located, which would be adjusted by the size of block 3, which is pointed to within block 1 prior to entry 15. Adjusting the offset of entry 15 by the size of block 3 prevents the need to access block 3 to determine its offset when traversing the tree. Thus, in one embodiment, a pointer is associated with a subtree size, as illustrated in Tables 1, 2, and 3.
Also, each block either needs to know its own global offset, or the system implementing the table would be required to search a lot of entries in each block encountered while traversing back up to the root to find an offset. Note that the same issue exists in a data or pointers block model also, but the logic for traversing is simpler if the pointer is constant size (e.g., pointers always take up 4 bytes or 8 bytes). When such an assumption of constant pointer size can be made, the examination would be as simple as iterating through an array. However, allowing pointers to be mixed with data, where the data is not necessarily the same size as the pointer structure, increases the complexity of the address arithmetic, as well as the arithmetic to calculate an offset.
Mixing data and pointers in the same block would also complicate the placement of new entries in the table. For example, adding an entry at offset 10 (just before entry 19 in block 0 of Table 1), can actually be added to either block 0 or block 1. Assume that system configuration would determine where to add the entry (e.g., always add to the block with the lowest offset, always add to the block with the highest offset, add to the block having the fewest entries, etc.). If the determination was to add the entry to block 0, the table management would: 1) move everything down from offset 3 in block 0 (corresponds to global offset 10) by enough to insert the data; 2) insert the data in block 0; 3) increment the size of block 0; and, 4) iterate over the blocks referenced past the insertion point and adjust offsets, which would include: 4a) update the offset of block 2 to 11; and, 4b) iterate over block 2 and update child blocks, including: i) updating the offset of block 4 to 14. The iteration would end there because there are no pointers in block 4, and so no additional offsets would be changed.
If, alternatively, the table management determined to insert the data in block 1, the table management would: 1) add the data to block 1, which would not require moving anything since it could be added to the end of block 1; 2) increment the size of block 1 in the block 1 header; 3) increment the size of block 1 in the reference to block 1 in block 0, which would need to be iteratively repeated back to the root, in the case of a deeper insertion; and, continue from #3 as explained above for inserting the data into block 0.
Removing entries would also be more complex, since the table management would be required to traverse the tree back to the root, and then adjust any subsequent subtrees. Contrast the complexity of traversing back to the root to what is described above for the non-hybrid-block case, where it is sufficient simply to traverse back to the root without needing to adjust subsequent subtrees (unless global offsets are stored in blocks, rather than just size information).
Additional complexity would be added in that data and pointer references would need to be indicated or flagged. One simple way to indicate the block element type would be to have a field that either indicates the size of a data item, or the number of items in a referenced subtree, with one of the bits repurposed to be a type indicator. For example, on a 32 bit system, where sizes are restricted to a multiple of 4 bytes, a single 32 bit field, with the high-order bit used to indicate type, would suffice. For example, setting the high order bit could indicate a pointer reference, where the next 32 bit (4 byte) field in the block would be the actual pointer, while the low-order 31 bits of the field would be the subtree size count. Following such an example, if the high-order bit were clear, it could indicate a data item, and the low order 31 bits would be the size of the data item.
In addition, the blocks themselves would need some metadata, such as to indicate their own size and a pointer back to their parent block. Additionally, an indication of the global offset could be provided. Another possible piece of metadata would be a pointer to the reference to this block in the parent block, which would make it a little faster to traverse back up the tree and adjust sizes.
Thus, the complexity of the system could increase substantially. However, it should be understood that it is possible to implement the system where hybrid blocks are used.
The table manager generates a root table, 808. The table manager may either immediately or eventually also generate additional indirection subtables, 810. Each root and other indirection subtables include pointers to other subtables. The last layer of indirection subtables points directly to data subtables that hold data elements. In one embodiment, the table manager assigns offset values in the root for each indirection subtable, and assigns offset values in each indirection subtable for each additional indirection subtable pointed to for indirection subtables pointing to other indirection subtables, or assigns offset values in each indirection subtable for each data table pointed to for indirection subtables that point to data subtables, 812. In essence, each parent subtable can store offset values for its immediate (directly pointed to rather than indirectly pointed to) subtables. The offsets could alternatively be stored in a global location within the table and not in the parent subtables. The offsets could also alternatively be stored in the child subtables. Either such alternative would require additional and/or more complex logic for managing the table. In one embodiment, the table manager generates pointers in each subtable to its parent subtable, 814.
The system having the table can search (e.g., via end-user or system software, such as programs or functions) for a particular entry with an entry value or a global index value, 816. When searching with a global index value, the global index value is converted or normalized to a local index value of the subtable in which the entry will be found, 818. The subtable can be found by use of the offsets. The system can then access the entry from the subtable using the local index value, 820.
The system could also remove or add an entry in a subtable, 822. When an entry is removed or added, the offsets of subsequent subtables should be adjusted to account for the change in entries in the preceding blocks. Note that a move within a subtable does not require any changes to any subtables other than reordering the entries within the subtable. A move of an entry to a different subtable can be considered to be a remove for all subtables up to and including the subtable to which the entry is moved. The subtables subsequent to the one into which the entry is moved will not be affected, as the total number of entries in all preceding subtables will not have changed.
Thus, when an entry is removed or added, the table manager adjusts the index values of all subsequent entries within the same subtable, 824. The table manager adjusts the offset values in the parent subtable of the changed subtable, 826. The table manager further adjusts the offset values for all subsequent subtables in all subsequent parent tables that are affected by the change to the changed subtable, 828.
The exemplary computer system 900 includes a processor 902, a main memory 904 (e.g., read-only memory (ROM), flash memory, dynamic random access memory (DRAM) such as synchronous DRAM (SDRAM) or Rambus DRAM (RDRAM), etc.), a static memory 906 (e.g., flash memory, static random access memory (SRAM), etc.), and a secondary memory 918 (e.g., a data storage device), which communicate with each other via a bus 908.
Processor 902 represents one or more general-purpose processing devices such as a microprocessor, central processing unit, or the like. More particularly, the processor 902 may be a complex instruction set computing (CISC) microprocessor, reduced instruction set computing (RISC) microprocessor, very long instruction word (VLIW) microprocessor, processor implementing other instruction sets, or processors implementing a combination of instruction sets. Processor 902 may also be one or more special-purpose processing devices such as an application specific integrated circuit (ASIC), a field programmable gate array (FPGA), a digital signal processor (DSP), network processor, or the like. Processor 902 is configured to execute the processing logic 926 for performing the operations and steps discussed herein.
The computer system 900 may further include a network interface device 908. The computer system 900 also may include a video display unit 910 (e.g., a liquid crystal display (LCD) or a cathode ray tube (CRT)), an alphanumeric input device 912 (e.g., a keyboard), a cursor control device 914 (e.g., a mouse), and a signal generation device 916 (e.g., a speaker).
The secondary memory 918 may include a machine-readable storage medium (or more specifically a computer-readable storage medium) 924 on which is stored one or more sets of instructions (e.g., software 922) embodying any one or more of the methodologies or functions described herein. The software 922 may also reside, completely or at least partially, within the main memory 904 and/or within the processing device 902 during execution thereof by the computer system 900, the main memory 904 and the processing device 902 also constituting machine-readable storage media. The software 922 may further be transmitted or received over a network 920 via the network interface device 908.
While the machine-readable storage medium 924 is shown in an exemplary embodiment to be a single medium, the term �machine-readable storage medium� should be taken to include a single medium or multiple media (e.g., a centralized or distributed database, and/or associated caches and servers) that store the one or more sets of instructions. The term �machine-readable storage medium� shall also be taken to include any medium that is capable of storing or encoding a set of instructions for execution by the machine and that cause the machine to perform any one or more of the methodologies of the present invention. The term �machine-readable storage medium� shall accordingly be taken to include, but not be limited to, solid-state memories, and optical and magnetic media.
Various operations or functions are described herein, which may be described or defined as software code, instructions, configuration, and/or data. The content may be directly executable (�object� or �executable� form), source code, or difference code (�delta� or �patch� code). The software content of the embodiments described herein may be provided via an article of manufacture with the content stored thereon, or via a method of operating a communication interface to send data via the communication interface. A machine or computer readable storage medium may cause a machine to perform the functions or operations described, and includes any mechanism that stores information in a form accessible by a machine (e.g., computing device, electronic system, etc.), such as recordable/non-recordable media (e.g., read only memory (ROM), random access memory (RAM), magnetic disk storage media, optical storage media, flash memory devices, etc.). A communication interface includes any mechanism that interfaces to any of a hardwired, wireless, optical, etc., medium to communicate to another device, such as a memory bus interface, a processor bus interface, an Internet connection, a disk controller, etc. The communication interface can be configured by providing configuration parameters and/or sending signals to prepare the communication interface to provide a data signal describing the software content. The communication interface can be accessed via one or more commands or signals sent to the communication interface.
Various components described herein may be a means for performing the operations or functions described. Each component described herein includes software, hardware, or a combination of these. The components can be implemented as software modules, hardware modules, special-purpose hardware (e.g., application specific hardware, application specific integrated circuits (ASICs), digital signal processors (DSPs), etc.), embedded controllers, hardwired circuitry, etc.
Besides what is described herein, various modifications may be made to the disclosed embodiments and implementations of the invention without departing from their scope. Therefore, the illustrations and examples herein should be construed in an illustrative, and not a restrictive sense. The scope of the invention should be measured solely by reference to the claims that follow.
Patent Citations
Referenced by
Legal Events
Original Image


text:
There is a good restaurant, "Hostinec Rychtar". Good and cheap foods and excellent (and cheap) beers.
Comfortable beds. - Anonymous
I like the position of the hotel, everything is fine, like it is described.Hotel staff very friendly and helpful. Breakfast is good - Daniell
I could reach direct to the station by tram. It was very nice! - Anonymous
Good location and quiet space.
Breakfast is very good. - Anonymous


text:
More Reports of Shallow Water and a Grounding in Jekyll Creek, AICW Problem Stretch, Statute Mile 683
Jekyll Creek is a perennial trouble spot and SSECN recommends mid to high tide only for this passage. See http://cruisersnet.net/?p=144628. Markers 19 and 20A are on the north side of the Hwy 520 fixed bridge immediately north of Jekyll Harbor Marina, A SALTY SOUTHEAST CRUISERS' NET SPONSOR! Our thanks to Skipper Reeves who keeps us posted on all things Jekyll!
Hi Larry, I have an update on the infamous Green 19 of Jekyll Creek. See pics
We went to the markers and slowly went back and forth. Sadly we found 4 ft at low tide where last year was 6 ft at low tide. The channel is very narrow. Tow Boat US advises to stay 40 ft from marker. Sailboat in picture was about 80-90 ft off the marker and turned wide running aground. This was at 2.5 hours until low tide. Here is a suggestion going South stay centered on Red 16 and Green 17 then as you turn to South West line up 40 ft off of Green 19, put Green 19 to port going South. Call the Marina or Tow Boat US for local knowledge. Wait for rising tide that may run 7-9 ft in this part of the ICW near MM 685. Hope this helps.
A barge dropped a fuel hose and dumped 500+ gals of Diesel a few hours ago right at the Bridge. Clean up in on the way but the current flow here rips and now diesel is everywhere.
Sonny Reeves
And this report from Skipper Poovey:
Hey, Larry.
Came through here this morning at 10:15 AM ( 1 Hr., 45 Min. past High tide) from the North. Stayed within 25 ft. to the west of marker G-19 and read 5.8 feet on both sounders.
Bob Poovey
m/v Threadbare
October 15, 2014
Sonny Reeves reports that another cruiser has run aground at Marker #19.
Click Here To View the Cruisers' Net's "AICW Problem Stretches" Listing For Jekyll Creek
Click Here To Open A Chart View Window, Zoomed To This AICW Problem Stretch
Click Here To View the Cruisers' Net's Georgia Marina Directory Listing For Jekyll Harbor Marina
Click Here To Open A Chart View Window, Zoomed To the Location of Jekyll Harbor Marina


text:
Originally published November 4, 2013 at 6:38 AM | Page modified November 5, 2013 at 6:28 AM
Weyerhaeuser selling homebuilding unit in $2.7B deal
Tri Pointe Homes agreed to buy Weyerhaeuser's residential real-estate unit, which includes Quadrant Homes
Bloomberg News
Tri Pointe Homes agreed to buy Weyerhaeuser's residential real-estate unit in a transaction valued at about $2.7 billion.
The deal will be structured as a tax-free Reverse Morris Trust, Weyerhaeuser said Monday in a statement. Weyerhaeuser shareholders will receive 130 million shares, which is 80.5 percent of the combined company, while Irvine, Calif.-based Tri Pointe, a residential-property developer backed by investor Barry Sternlicht, will get 19.5 percent.
Federal Way-based Weyerhaeuser will also receive about $700 million in cash.
"The combined company will be a strong stand-alone homebuilder, and the separation of our homebuilding division allows us to focus on driving performance in our forest-products businesses to deliver further value to our shareholders," Weyerhaeuser Chief Executive Doyle Simons said in the statement.
Weyerhaeuser, a real estate investment trust that owns more than 6 million acres of timberland, said in June it would explore alternatives for the unit, which is called Weyerhaeuser Real Estate.
The subsidiary includes five Weyerhaeuser brands: Pardee Homes, Trendmaker Homes, Maracay Homes, Winchester Homes and Quadrant Homes. Pardee has operations in Southern California, but it also will give Tri Pointe access to the Las Vegas market.
Trendmaker Homes has operations in Texas, while Maracay Homes is in Arizona. Winchester Homes provides entry to the Washington, D.C., metro area and Quadrant Homes to the Puget Sound region.
Weyerhaeuser spokesman Anthony Chavez said Quadrant has 72 workers and that there are no immediate plans to change the company.
"Right now everything will stay the same, but in the long term there is potential for growth," Chavez said.
"They're getting a good homebuilder," said Craig Sterling, global head of equity research at EVA Dimensions in New York, who estimates Tri Pointe is paying about a 38 percent premium to the current value of Weyerhaeuser's real-estate operation.
Tri Pointe, 38 percent owned by Sternlicht's Starwood Capital Group, in January became the first U.S. homebuilder to go public since 2004. Sternlicht will remain Tri Pointe's chairman, according to Monday's statement.
Tri Pointe said it will expand its board from seven to nine members. Weyerhaeuser will choose four directors for appointment, with Tri Pointe selecting five members.
The Weyerhaeuser deal will add about 27,000 lots to Tri Pointe's assets and make it one of the 10 largest homebuilders in the U.S., according to a separate statement from Tri Pointe. The transaction is expected to close by the end of June.
"We get to go there in one fell swoop," Sternlicht said on a conference call with analysts. "We expect this to be accretive in year one and every year after that."
Tri Pointe gained 5 percent to $16.15 a share at the close of trading Monday. It earlier rose as much as 16 percent, the most since the shares began trading in January. Weyerhaeuser was little changed at $30.37 a share.
Trending with Readers
On seattletimes.comMore Trending
- Thanksgiving: What can and can't be prepped ahead
- Richard Sherman and cutout Doug Baldwin criticize NFL policies
- Sally Clark says she quickly informed city of collision with cyclist
- Theater of the absurd: Richard Sherman, Doug Baldwin stand up for Marshawn Lynch | Larry Stone
- How Kam Chancellor fired up the Seahawks with his pregame speech, physical game
- Grand jury faced a tangle of eyewitness accounts
- We're no better than Ferguson; maybe worse | Danny Westneat
- Best Thanksgiving movies? Here are 6 favorites to savor
- 'Exotic' orcas visit inland waters in unprecedented numbers
- Schools chief sorry for breaking district policy and signing off early on Gates grant
Entertainment events
Help us bring you more relevant information and advertising by telling us what neighborhood you live in. If your neighborhood isn't listed, select the neighborhood closest to you.
City of Seattle
Central District – Madison Park


text:
Ovinte', our wine partner will have more than 200 wines available for tasting and purchase. Sample delicious food from some of Jacksonville's best restaurants. Live music by the Chris Thomas Band.
Tickets are $75 for regular patrons and $50 for those ages 21 to 35.
CLICK HERE to purchase your tickets online.
Call (904) 224-0062 for more information.
Fidelity Information Services
Black Knight Financial Services
Fidelity National Financial, Inc.
Florida Times Union
PricewaterhouseCoopers, LLP
Wire Mesh Corp.
Diocese of St. Augustine
Florida Blue
Mr. and Mrs. Michael Kelly
Morgan Stanley
St. Joseph's Catholic Church
St. Vincent's Healthcare
Lori and John Anderson
Christ the King Vietnamese Community
Jim Denkler Consulting
Dr. and Mrs. Daniel Lestage
Lincoln Financial Group
Laura and Jeff Mouhalis
Our Lady Star of the Sea Catholic Church
Regions Bank
Sacred Heart Catholic Church
Mr. and Mrs. Robert Shircliff
Sissine's Office Systems
The Donna Foundation
The Bailey Group
Ameris Bank
Assumption Catholic Church
George Z. Bateh
Jan and Gene Bebeau
Grace and Chuck Brasington
Catholic Charities Bureau, Inc.
Mr. and Mrs. Ivan Colao
Mamie Davis
Elkins Constructors
Deacon George and Missy Good
Harris, Guidi, Rosner, Dunlap, Rudolph, P.A.
Paola and Robert Harris
Melissa and Tony Hartman
Lisa and Michael Hayes
Maryanne Helffrich
Holy Spirit Catholic Church
Kramarich Family
James Knutzen & Associates, CPA's
Katherine LeMaster
Mary Queen of Heaven Catholic Church
Nancy and Joe McTighe
Amy and David Meyer
Chip and Debbie Moore
Jill and Josh Nason
NatureForm Hatchery Tech, LLC
Mr. and Mrs. Patrick Patangan
Lisa and Michael Obringer
Ruth Owen
Paragon Wealth Strategies
Julie and Dan Rice
San Juan Del Rio Catholic Church
Sleiman Enterprises
Marie and Kent Smith
Southern PC
TD Bank
In Kind Sponsors
Victoria Bagtas
Champion Brands
Kuhn Flowers
Anthony's Gourmet Catering
All Spiced Up
Bistro Aix
Brio Tuscan Grille
Burrito Gallery
Café Freda
Casa Dora
Chef's Garden
Eleven South
European Street
Havana Jax
Juliette's Bistro @The Omni Hotel
Matthew's Restaurant
Fionn MacCools
Mojo BBQ
Moxie Kitchen and Cocktails
M Shack
Sweet Pete's
Sivada's Cupcakery
Stonewood Tavern
The Candy Apple
The Wine Cellar


text:
LET US PROVE IT TO YOU with a FREE Trial Class in our Beginner Kids Martial Arts class.
Simply fill out the form and we will contact you within 12 hours to set up your Free Class and Get your child started on Listening Better at home, Focusing more on School and Walking Tall with Confidence to attract good friends and keep the bullies away.
After we book your 1st FREE Martial Arts Class in our Mantua location we will show you how easy and affordable it is to get Started!
Martial Arts Built specifically for your Kids!
To better support positive growth, we provide classes that work specically with each age group. This allows for an approach of Fun to Focus while providing a clear structure of learning and development specific to each age group. Basically our classes build confidence and focus through Fun and Exciting age appropriate drills and skills!
Click On Your Child's Age Group and GET STARTED!
PLEASE NOTE! We will be updating our schedules and age grouping in the Fall of 2014 to 4-6yr olds, 7-12yr olds, Teens & Adults.
Budo's Adult MMA program: Train like an MMA fighter while slimming your waistline and improving your confidence in your ability for managing conflict.


text:
Yahoo Partners With 3rd Party Click Fraud Company, Click Forensics
Yahoo and Click Forensics have partnered to combat click fraud together. The partnership was announced on the Auditing Paid Listings and Click Fraud Issues panel at SES NY today. Yahoo said:
- Click Forensics will allow advertisers to securely share relevant account information, such as site-side click behavioral data, with Yahoo!. Industry analysts like Dr. Tuzhilin have said that data such as this is helpful in identifying poor quality traffic, including click fraud.
- With this deal, Yahoo! is the first search engine to cooperate with a third-party, such as Click Forensics, to obtain additional feedback and promote its goal of advertiser satisfaction and return on investment.
- Click Forensics is the first 3rd party click auditor to work with Yahoo! in an effort to help advertisers better understand their click data.
Honestly, I am a bit surprised by the announcement but overall, I am happy. In hindsight, this partnership makes a lot of sense and I am interested in seeing where this takes both Yahoo, Click Forensics, and the search ad industry in the future.
DON'T MISS OUT! The agenda for Search Engine Land's SMX West search marketing show is now up. Search marketing is the biggest area of digital marketing. You can't afford to get it wrong! SMX has practical tips & techniques for those experienced with SEO & SEM plus a welcoming environment for beginners. Learn more!
(Some images used under license from Shutterstock.com.)
No fluff - just the best news in paid search marketing every week.


text:
Oh man! So many places to go with a title like that… Last night we had two virtually 100%-owned big men step back on the hardwood in Derrick Favors and Andrew Bogut. Let's start first with Aussie Aussie Aussie who had his typical Oi Oi Oi multi-cat line for 4/7/4/1/1. Played 29 minutes which is very encouraging, but did foul out. The big man fouls were rough in this one! Both starting 4/5s combined for 10 fouls in Golden State at Detroit. Mark Jackson pre-game must've been like, "pretend you're all Artest and the Pistons just threw a beer on you!" I remain high on Bogut for his multi-cat walkabouts. Then to Favors – who had been doing fantasy owners no Favors with his bum hip – but lit it up in his return last night for 8-9 FG (4-4 FT) 20/4/1/0/3 in 29 you-couldn't-ask-for-better minutes. Hopefully his hip can hold up the rest of the season! And hopefully he doesn't Favor too much on the other one. Womp womp. Worst joke of the year! Here's what else I saw last night in fantasy hoops:Please, blog, may I have some more?
Klay Thompson
And you thought that the trade deadline was gonna be a dud. And to that, sir or madam, I give you two words: Byron Freakin' Mullens. Bam! The Sixers have just dropped the mic on the NBA stage, a la Chris Rock.
Actually, all joking aside, Lord Byron might be worth watching in deeper leagues – if the Sixers stick with the free flowing offence they've been playing thus far, there's a long shot he might actually produce. He started for the Bobcats for half a season, and wasn't all that bad. Yeesh!, that's a limp di*k endorsement if I've ever given one.Please, blog, may I have some more?
Oh man, a busy day yesterday in hoops! The obvious first mention is GO HEELS! Oh man, I feel like storming the court today. I think Chapel Hill fans everywhere this morning should storm their office/classroom/crowded area in a flash mob at some point. Then we have LeBron James getting his nose broken by Serge A Broke-a! The mayor of Cleveland has already issued Serge Ibaka a key to the city. Fine LeBron $5,000 for flopping! Man, the next round of internet videos of "LeBroning" are going to be a lot more like "The Knockout Game". Seriously, even LeBron haters have to love he got it broke a step or two out before throwing it down. Word still to come if the nose is indeed broken, but my money is on yes. Regardless, we've seen a few players come back from a broken nose in the same game donning the Hannibal mask, so I doubt he misses any time after passing concussion tests last night. MaskBron! And then we had the trade deadline come and go, with nothing too major albeit a few surprises. I'm starting a bit off the reservation with a guy I'm going to pump hard and is a pickup now in 12-teamers. Lord Byron Mullens! After trading their former starting 5 which we'll get in below, it's Mullens and Arnett Moultrie manning down the C fort in the abandon ship Sixers front line, with Mullens picked up for draft picks. I know Mullens is boring, but he was usable while with the Bobcats posting a 10.6/6.4/1.5/0.6/0.6 line with 1.2 treys in 27 minutes a game in 12-13. His sub-40 FG% blew, sure, but he's a perimeter shooter who can play decent D so I think he will get run. He's a lot better than Moultire in my opinion and I think will get big minutes. And I don't know why, maybe it's because he looks so goofy or maybe because he's been in the league 5 years, but Mullens is actually only 25 when I thought he might be 30. For a team tanking, he's a perfect acquisition to help rack up points to try and fill maybe 2 more seats a night in Philly. "Thanks for coming Mr. and Mrs. Mullens!" Here's what else went down yesterday, starting with NBA deadline deals:Please, blog, may I have some more?
One team. Two broken noses. Four bloody nostrils. One protective face-mask company that has lost a client.
In case you missed it, in the battle of the oldest teams ever in NBA history (yeah, no stat to back that up, but pretty sure George Gervin played a few minutes in the third… [Ok, ok, the Spurs benched all their old guys, whatever!]), both Nando De Colo and Matt Bonner broke their noses and got all bloody. Bonner with his mask still on! On both (De Colo, Bonner) you got some really good in your face camerawork. I feel like both of those could become UFC moves. The "Russian wrister"! The "Livingston shoulder slam"! De Colo gets mad props for coming back in the game in the second half. Bonner gets mad props too for trying to come back in, but Pop wouldn't have it. Pop hates props! Plus Bonner's quote, "By tomorrow, I'll either have a new mask or a new face" is friggin' awesome. Kinda have a boner for Bonner. While De Colo is not a standard league option, with Tony Parker an elf on the shelf with a bad back, De Colo got 27 minutes 11/3/2/2/1. Near rainbow! It's actually a pretty light slate of games looking ahead on Saturday, so De Colo could be a nice streamer for you in deeper leagues if Parker stays on that shelf. But as Slim pointed out to me earlier in the week, they're against Charlotte – a top-5 PPG NBA D, but his defense and boarding should be fine if you need a lil-a-dat from a PG over the weekend. Here's what else I saw last night in fantasy hoops:Please, blog, may I have some more?
Breaking news! Kobe Bryant is injured. No one has been talking about this. And in a further Razzball exclusive – he's old. Not exactly the best combo coming back from a major injury, followed by another pretty bad one just a few games back. After a re-examination, apparently the knee bone still isn't connected to the leg bone, so let's call the whole thing off! Will be examined yet again in three weeks, and that's just another knee rub-rub. Who knows how much longer it will be after that. Good news is! Jodie Meeks is still gonna kill it, Kendall Marshall is still going to hand out dimebags like a Colorado bakery, and with the Lakers still atrocious, we can make a pretty educated guess that Kobe is going to be out A – until he is 100%, no questions asked, no way he could get hurt again healthy or B – the season. Leaning B. And even if A happens, it would be so late and in such limited minutes that I don't think the value is worth it. Cut him in 10 or 12-teamers. Just do it. I know some people will keep holding him, if you're in 1st or 2nd and fine for the playoffs and wanna stash, I can't argue much with you, but I think the time is now to use that spot for others. Tough year for Lakers fans, but hey, you're not the Bucks… Here's what else went down across the NBA-o-sphere:Please, blog, may I have some more?
Ross can! Rosssssss can! Ross can get me the tickets! Somebody call the Police, because Terrence Ross is on fire! Or, ummm, do we call the Mounties? I plain just don't know… But if anyone (aherm, me) had to feel the Sting of that 51-point outburst against them – out of so left field from Ross that it was out of the Pacific Ocean – then you're certainly sending a message in a bottle to the fantasy gods asking "Whyyyyyy?!" 51/9/1/1/0 shooting 16-29 and hitting 10 Harvey's Trays. "What's with the sit-com references today JB?!" Yeah, no one will get that last one… Sit-coms are always fun, light, and don't end on Sunday nights with me throwing things. "Enough about you, JB!" Damn, commenters are angry this morning! DeMar DeRozan sprained his foot in that game, and while Ross was already hot, no DeRozan helped him get hotter. "Hansel is so hot right now." DeRozan looks like he'll miss at least a few games – already not traveling tonight – making Ross a must-own for this week and the immediate future. The Raptors are all the sudden with 18 less shots a game (no, that's not me throwing out an arbitrary number, that's really DeRozan's FGA a game!) so this is a great opportunity for Jonas Valaciunas as well to go on a solid run. Will be an interesting game tonight at Brooklyn to see how the two younguns perform. Here's what else I saw over the weekend in NBA action:Please, blog, may I have some more?
The Bulls are a lot like the Tanner children. Whatever the hell the name of the youngest the Olsen Twins played is Derrick Rose – all sorts of famous but now all sorts of a mess. The middle one is Kirk Hinrich. Because as soon as he's not on the Bulls anymore, he's gonna become so irrelevant that even Tom Thibodeau will forget who he was the next season. Which leaves us with D.J. who is obviously – D.J. Augustin. I mean, Bob Saget should've just stopped at the first kid! Well I guess there's still upside with the youngest one. This metaphor is tanking JB! I feel as if you readers are starting profanity-laced rants thus far. Just like Bob Saget's stand-up "act"! Hey-oh! So Hinrich got hurt yet again last night, doing something to his hammy. It's almost as if you can predict injuries! Part of my gravitation to D.J. was not only how well he was fitting with the team, but how brittle Captain Kirk is. I would make a Star Trek parallel, but it's TNG or nothing, son! Besides, the TV show metaphors are a strong 0/1 this morning… Augustin is in line for huge run and in 37 minutes last night went 27/4/4 with 5 threes. I expect pretty high-teen scoring and 6-8 dimes a night with a couple of treys while Hinrich is out, then maintaining the starting role when Hinrich is back with minimal dropoff. More-or-less a must own in all leagues, and I've been Bull[hah!]ish on him all along. Hopefully you've scooped him up and held on to him. Here's what else I saw in fantasy hoops on a busy day of MLK action:Please, blog, may I have some more?
Merry Christmas to all! And to all a good night! Well, except for the Hawks, who lost both DeMarre Carroll and Al Horford in last night's double overtime win against the Cavs. Carroll's Christmas carol was about hoping his hand and/or thumb didn't break, as he was in bad pain exiting the game. Diagnosis came out that he has a sprained thumb, and while a non-break is a good news, remember Larry Sanders "just" had a sprained thumb and had to have surgery. Just shatter the champagne bottle you got sprayed with and use it like a weapon like a normal bar fight, Sanders! And to make matters worse, Horford then lost all his Christmas cheer when he hurt his shoulder later in the game and is set for an MRI. It's his right shoulder vs. a left pectoral tear that ended his year in 2012, but neither of these injuries look too good. Big men waiting in the wings for the Hawks (womp womp) Elton Brand, Pero Antic, Gustavo Ayon, and Mike Scott would all stand to get increased roles, especially if both injuries turn out to be serious. I've talked about Scott more than a few times as a guy to keep an eye on should there be injuries, and I think he has the most upside by far to emerge. His per 36 of 18.7/7.7/2.0/0.6 with 1.3 treys while shooting 55% from the field gives him a glimmer of hope to be the fantasy contributor I thought he could be. Here's what else I spotted through the Holidays while opening all of my Brandon Knight basketball cards on Christmas morning:Please, blog, may I have some more?
Man! I was loving that game! Through three contests (the inaugural one in the comments then when adopted into the piece), I didn't get a single win! For shame… At least now with Kobe Bryant missing 6 weeks, we'll be brimming with excitement to relaunch the game! I never ended up with Kobe anywhere, so I'm downplaying the real fantasy impact here… Kobe owners are asking should I hold or should I let go? I think he is probably a hold in almost all leagues if you can, but man, these top-end injuries are killin' out there! Plus we have to remember it's a fractured knee and a re-sewn up Achilles. And he wasn't setting the world on fire anyway. Kobe is turning into Jeter from last year! Bryant is a medical marvel though, he can jump over cars going 40 MPH and come back after bone spurs a game later. So he's worth the stash unless it's a very shallow 10-teamer or smaller, or you're just a triage of injuries. Here's what else went down last night across fantasy hoops:Please, blog, may I have some more?
I hate you Larry Drew. First you go and make your son Larry Drew II feel like he's some sort of special talent and have him quit UNC, then you take over a Bucks team that all want to leave too. Why do I have so much invested in the Bucks?! I hate the Bucks! In a game where the Spurs doubled Milwaukee's points in the first quarter (32 to 16), then went up by 23 at halftime, then after 3 were up 38, Drew decided to kill fantasy teams by playing their F-team virtually the whole second half. As in, a D-League team could beat those guys. Brandon Knight got 18 minutes after an impressive game two nights ago. John Henson got 21 after the huge breakout. O.J. Mayo, yes that terrible, horrible, not gelling on this awful team O.J. Mayo led the starters with 22 minutes on a 3/0/0/0/0 line with a TO. Ok, ok, so Drew let his scrubs play in the blowout, good to see Giannis Antetokounmpo get some development time at just over 33 minutes, but the icing on the cake was Drew gave Ersan Ilyasova, a guy that looks like a humanoid Turkey, 39 minutes?! How is that developing young talent?! Ersan goes out and shoots 3-16 for an 8/6/2 game. The Bucks are the worst. You're holding Henson obviously and Knight I think you stick with, but I don't want any of these other guys on a 12-teamer. I know I like Khris Middleton, but he was part of the starting mess and I just dropped Mayo in some sort of RCL travesty I should probably take my name off of. I still think Knight, Mayo, Middleton and Henson are locked in as starters for now, but man, I really hope they look good facing the even worse Bulls again on Friday. Enough ranting from me! Here's what else I saw last night in fantasy hoops:Please, blog, may I have some more?


text: ESPN Feed: reed williams http://assets.espn.go.com/i/tvlistings/tv_espn_original.gif ESPN en-us 10 ESPN Inc. http://espn.go.com/ Copyright 2010 ESPN Inc. ASHBURN, Va. -- Washington Redskins tight end Jordan Reed was unable to practice again and will visit more specialists Thursday because of his concuss...]]> December 18, 2013 15:45:19 PST SANTA CLARA, Calif. -- The Washington Redskins will be without four starters for Sunday's game versus San Francisco, with one unexpected player being ...]]> November 23, 2014 12:30:41 PST ASHBURN, Va. -- Washington Redskins tight end Jordan Reed and nose tackle Chris Baker won't play Sunday at San Francisco, but tackle Trent Williams st...]]> November 21, 2014 13:00:26 PST ASHBURN, Va. -- Left tackle Trent Williams returned to practice, albeit in a limited role, but the Washington Redskins still had three starters who co...]]> October 09, 2014 13:20:09 PDT ASHBURN, Va. -- Tight end Jordan Reed returned to practice, albeit in a limited role, but it at least provided a glimmer of hope that he might return ...]]> September 30, 2014 12:00:04 PDT Linebacker Derrick Brooks opened the Pro Football Hall of Fame induction ceremony with a 24-minute speech which he called a "Thank you letter."]]> August 02, 2014 14:56:52 PDT The Baltimore Ravens and New York Jets each will receive four compensatory picks in this year's draft for free agents they lost in 2013.]]> March 24, 2014 14:00:04 PDT Linebacker Derrick Brooks, left tackle Walter Jones, wide receiver Andre Reed, defensive end Michael Strahan, defensive back Aeneas Williams, punter Ray Guy and defensive end Claude Humphrey were chosen for induction into the Pro Football Hall of Fame.]]> February 01, 2014 09:22:25 PST First-year nominees Derrick Brooks, Tony Dungy, Marvin Harrison and Walter Jones were among the 15 modern-era Pro Football Hall of Fame finalists in voting announced Thursday night.]]> January 09, 2014 15:58:55 PST IRVING, Texas -- Considering the Dallas Cowboys' woes at safety, Ed Reed would seem to make sense to join a defense in crisis mode. But he's not the E...]]> November 12, 2013 13:00:39 PST Clayton's mailbag: The Ed Reed signing and the Cowboys' defensive change have turned out to be among the biggest mistakes of the offseason.]]> November 12, 2013 16:02:06 PST ESPN.com NFL Player Rankings, Defense: 50-41]]> July 19, 2013 06:54:36 PDT Brian Gramling looks at the biggest defensive difference-makers to change teams in the offseason, as well as scheme changes that impact players on many teams.]]> July 24, 2013 10:51:49 PDT It's unusual for a Super Bowl champion to retool its roster, but the Ravens' strategy makes sense in this era, writes John Clayton.]]> July 03, 2013 16:36:29 PDT Insider NFL analysts Mel Kiper, Gary Horton, Matt Williamson, Field Yates and Herm Edwards break down every NFL team in five key categories to see how the league might stack up three years from now entering the 2016 season.]]> June 14, 2013 09:22:22 PDT


text:
|Mid Atlantic Fanatics Serving the Delaware, Maryland, New Jersey, Pennsylvania, West Virginia, Virginia, and Washington DC regions.
|Topic Review (Newest First)
|Today 05:04 PM
|You got a motor for 600 with 16k on it? Sign me up my foci just hit 177777
|Today 01:27 PM
|wv rider
|Hey Corey, hows that supercharger coming?
|Today 01:26 PM
|What's wrong with Matt's car?
|Today 01:26 PM
|Damn dude.. Trying to compete with Matt lol.
|Today 12:31 PM
|I would love to have my car back... This is the 3rd week without it...
|Today 11:56 AM
|wv rider
|Today 11:50 AM
Bought the replacement on ebay, they sent us a motor from a flooded car left over from Katrina. It was a total accident but it's wasted another week. So to make up for it, they're sending that 16k motor over.
Since the motor with rod knock has no windows in it, I am keeping it, and building that over time. So should I ever need another motor, I'll have something much stronger. Keyed crank, forged pistons and rod, upgraded valves and springs, but I will keep the stock cams.
|Today 11:48 AM
|wv rider
|After the second, I think I would look at building an engine and be done with it. So, whats the story?
|Today 11:43 AM
I didn't do a thing, I swear. I dropped it off at our trusted family mechanic (he's my grandfather's best friend's son). He's fixed many a car for us and does top-notch work (and discounts us on labor).
Went in to fix an oil leak I thought was my rear main, turns out it was the oil pan. Wasn't sealed properly with RTV when it was removed prior to me purchasing it. He dropped my pan, resealed it, and on the test drive later that day, he felt and heard rod knock from the bottom end. I trust his diagnosis, he's done this for over 30+ years. Cheaper to get a new motor then to machine this one. $600 vs $2,500 is a no brainer.
So I have a new motor with 16k coming hopefully today or tomorrow. (And there's another story about that too).
|Today 11:38 AM
|wv rider
|This thread has more than 10 replies. Click here to review the whole thread.
|Posting Rules
You may post new threads
You may post replies
You may not post attachments
You may not edit your posts
BB code is On
Smilies are On
[IMG] code is On
HTML code is Off