text:
Persistent data structure

In computing, a persistent data structure or not ephemeral data structure is a data structure that always preserves the previous version of itself when it is modified. Such data structures are effectively immutable, as their operations do not (visibly) update the structure in-place, but instead always yield a new updated structure. The term was introduced in Driscoll, Sarnak, Sleator, and Tarjan's 1986 article.

A data structure is partially persistent if all versions can be accessed but only the newest version can be modified. The data structure is fully persistent if every version can be both accessed and modified. If there is also a meld or merge operation that can create a new version from two previous versions, the data structure is called confluently persistent. Structures that are not persistent are called ephemeral.

These types of data structures are particularly common in logical and functional programming, as languages in those paradigms discourage (or fully forbid) the use of mutable data.

Partial versus full persistence
In the partial persistence model, a programmer may query any previous version of a data structure, but may only update the latest version. This implies a linear ordering among each version of the data structure. In the fully persistent model, both updates and queries are allowed on any version of the data structure. In some cases the performance characteristics of querying or updating older versions of a data structure may be allowed to degrade, as is true with the rope data structure. In addition, a data structure can be referred to as confluently persistent if, in addition to being fully persistent, two versions of the same data structure can be combined to form a new version which is still fully persistent.

Partially persistent data structure
A type of data structure where user may query any version of the structure but may only update the latest version.

An ephemeral data structure can be converted to partially persistent data structure using a few techniques.

One of the technique is by using randomized version of Van Emde Boas Tree which is created using dynamic perfect hashing. This data structure is created as follows:

 * A stratified tree with m elements is implemented using dynamic perfect hashing.
 * The tree is pruned by dividing the m elements into buckets of size log(log n) such that the elements of bucket 1 is smaller than the elements of bucket 2 and so on.
 * The maximal element in each bucket is stored in the stratified tree and each bucket is stored in the structure as an unordered linked list.

The size of this data structure is bounded by the number of elements stored in the structure that is O(m). The insertion of a new maximal element is done in constant O(1) expected and amortized time. Finally query to find an element can be done in this structure in O(log(log n)) worst-case time.

Copy-on-write
One method for creating a persistent data structure is to use a platform provided ephemeral data structure such as an array to store the data in the data structure and copy the entirety of that data structure using copy-on-write semantics for any updates to the data structure. This is an inefficient technique because the entire backing data structure must be copied for each write, leading to worst case O(n·m) performance characteristics for m modifications of an array of size n.

Fat node
The fat node method is to record all changes made to node fields in the nodes themselves, without erasing old values of the fields. This requires that nodes be allowed to become arbitrarily “fat”. In other words, each fat node contains the same information and pointer fields as an ephemeral node, along with space for an arbitrary number of extra field values. Each extra field value has an associated field name and a version stamp which indicates the version in which the named field was changed to have the specified value. Besides, each fat node has its own version stamp, indicating the version in which the node was created. The only purpose of nodes having version stamps is to make sure that each node only contains one value per field name per version. In order to navigate through the structure, each original field value in a node has a version stamp of zero.

Complexity of fat node
With using fat node method, it requires O(1) space for every modification: just store the new data. Each modification takes O(1) additional time to store the modification at the end of the modification history. This is an amortized time bound, assuming modification history is stored in a growable array. At access time, the right version at each node must be found as the structure is traversed. If "m" modifications were to be made, then each access operation would have O(log m) slowdown resulting from the cost of finding the nearest modification in the array.

Path copying
With the path copying method a copy of all nodes is made on the path to any node which is about to be modified. These changes must then be cascaded back through the data structure: all nodes that pointed to the old node must be modified to point to the new node instead. These modifications cause more cascading changes, and so on, until the root node is reached.

Complexity of path copying
With m modifications, this costs O(log m) additive lookup time. Modification time and space are bounded by the size of the longest path in the data structure and the cost of the update in the ephemeral data structure. In a Balanced Binary Search Tree without parent pointers the worst case modification time complexity is O(log n + update cost). However, in a linked list the worst case modification time complexity is O(n + update cost).

A combination
Driscoll, Sarnak, Sleator, Tarjan came up with a way to combine the techniques of fat nodes and path copying, achieving O(1) access slowdown and O(1) modification space and time complexity.

In each node, one modification box is stored. This box can hold one modification to the node—either a modification to one of the pointers, or to the node's key, or to some other piece of node-specific data—and a timestamp for when that modification was applied. Initially, every node's modification box is empty.

Whenever a node is accessed, the modification box is checked, and its timestamp is compared against the access time. (The access time specifies the version of the data structure being considered.) If the modification box is empty, or the access time is before the modification time, then the modification box is ignored and only the normal part of the node is considered. On the other hand, if the access time is after the modification time, then the value in the modification box is used, overriding that value in the node.

Modifying a node works like this. (It is assumed that each modification touches one pointer or similar field.) If the node's modification box is empty, then it is filled with the modification. Otherwise, the modification box is full. A copy of the node is made, but using only the latest values. The modification is performed directly on the new node, without using the modification box. (One of the new node's fields is overwritten and its modification box stays empty.) Finally, this change is cascaded to the node's parent, just like path copying. (This may involve filling the parent's modification box, or making a copy of the parent recursively. If the node has no parent—it's the root—it is added the new root to a sorted array of roots.)

With this algorithm, given any time t, at most one modification box exists in the data structure with time t. Thus, a modification at time t splits the tree into three parts: one part contains the data from before time t, one part contains the data from after time t, and one part was unaffected by the modification.

Complexity of the combination
Time and space for modifications require amortized analysis. A modification takes O(1) amortized space, and O(1) amortized time. To see why, use a potential function ϕ, where ϕ(T) is the number of full live nodes in T. The live nodes of T are just the nodes that are reachable from the current root at the current time (that is, after the last modification). The full live nodes are the live nodes whose modification boxes are full.

Each modification involves some number of copies, say k, followed by 1 change to a modification box. Consider each of the k copies. Each costs O(1) space and time, but decreases the potential function by one. (First, the node to be copied must be full and live, so it contributes to the potential function. The potential function will only drop, however, if the old node isn't reachable in the new tree. But it is known that it isn't reachable in the new tree—the next step in the algorithm will be to modify the node's parent to point at the copy. Finally, it is known that the copy's modification box is empty. Thus, replaced a full live node has been replaced with an empty live node, and ϕ goes down by one.) The final step fills a modification box, which costs O(1) time and increases ϕ by one.

Putting it all together, the change in ϕ is Δϕ =1− k. Thus, the algorithm takes O(k +Δϕ)= O(1) space and O(k +Δϕ +1) = O(1) time

Generalized form of persistence
Path copying is one of the simple methods to achieve persistency in a certain data structure such as binary search trees. It is nice to have a general strategy for implementing persistence that works with any given data structure. In order to achieve that, we consider a directed graph $G$. We assume that each vertex $v$ in $G$ has a constant number $c$ of outgoing edges that are represented by pointers. Each vertex has a label representing the data. We consider that a vertex has a bounded number $d$ of edges leading into it which we define as inedges($v$). We allow the following different operations on $G$. Any of the above operations is performed at a specific time and the purpose of the persistent graph representation is to be able to access any version of $v$ at any given time. For this purpose we define a table for each vertex $i$ in $u$. The table contains $i$ columns and $$d+1$$ rows. Each row contains in addition to the pointers for the outgoing edges, a label which represents the data at the vertex and a time $v$ at which the operation was performed. In addition to that there is an array inedges($u$) that keeps track of all the incoming edges to $v$. When a table is full, a new table with $$d+1$$ rows can be created. The old table becomes inactive and the new table becomes the active table.
 * CREATE-NODE: Creates a new vertex with no incoming or outgoing edges.
 * CHANGE-EDGE($x$, $v$, $x$): Changes the edge of $G$ to point to $v$
 * CHANGE-LABEL($G$, $c$): Changes the value of the data stored at $t$ to $v$

CREATE-NODE
A call to CREATE-NODE creates a new table and set all the references to null

CHANGE-EDGE
If we assume that CHANGE-EDGE($v$, $v$, $i$) is called, then there are two cases to consider.
 * There is an empty row in the table of the vertex $u$: In this case we copy the last row in the table and we change the edge of vertex $v$ to point to the new vertex $i$
 * Table of the vertex $v$ is full: In this case we need to create a new table. We copy the last row of the old table into the new table. We need to loop in the array inedges($u$) in order to let each vertex in the array point to the new table created. In addition to that, we need to change the entry $v$ in the inedges(w) for every vertex $v$ such that edge $v$ exists in the graph $w$.

CHANGE-LABEL
It works exactly the same as CHANGE-EDGE except that instead of changing the edge of the vertex, we change the  label.

Efficiency of the generalized persistent data structure
In order to find the efficiency of the scheme proposed above, we use an argument defined as a credit scheme. The credit represents a currency. For example, the credit can be used to pay for a table. The argument states the following: The credit scheme should always satisfy the following invariant: Each row of each active table stores one credit and the table has the same number of credits as the number of rows. Let us confirm that the invariant applies to all the three operations CREATE-NODE, CHANGE-EDGE and CHANGE-LABEL. As a summary, we conclude that having $$n_{1}$$ calls to CREATE_NODE and $$n_{2}$$ calls to CHANGE_EDGE will result in the creation of $$2\cdot n_{1}+n_{2}$$ tables. Since each table has size $$O(d)$$ without taking into account the recursive calls, then filling in a table requires $$O(d^{2})$$ where the additional d factor comes from updating the inedges at other nodes. Therefore, the amount of work required to complete a sequence of operations is bounded by the number of tables created multiplied by $$O(d^{2})$$. Each access operation can be done in $$O(Log(d))$$ and there are $$m$$ edge and label operations, thus it requires $$m\cdot O(Log(d))$$. We conclude that There exists a data structure that can complete any $$n$$ sequence of CREATE-NODE, CHANGE-EDGE and CHANGE-LABEL in $$O(n\cdot d^{2})+m\cdot O(Log(d))$$.
 * The creation of one table requires one credit
 * Each call to CREATE-NODE comes with two credits
 * Each call to CHANGE-EDGE comes with one credit
 * CREATE-NODE: It acquires two credits, one is used to create the table and the other is given to the one row that is added to the table. Thus the invariant is maintained.
 * CHANGE-EDGE: There are two cases to consider. The first case occurs when there is still at least one empty row in the table. In this case one credit is used to the newly inserted row. The second case occurs when the table is full. In this case the old table becomes inactive and the $$d+1$$ credits are transformed to the new table in addition to the one credit acquired from calling the CHANGE-EDGE. So in total we have $$d+2$$ credits. One credit will be used for the creation of the new table. Another credit will be used for the new row added to the table and the $v,w$ credits left are used for updating the tables of the other vertices that need to point to the new table. We conclude that the invariant is maintained.
 * CHANGE-LABEL: It works exactly the same as CHANGE-EDGE.

Next element search or point location
One of the useful applications that can be solved efficiently using persistence is the Next Element Search. Assume that there are $$n$$ non intersecting line segments that don't cross each other that are parallel to the x-axis. We want to build a data structure that can query a point $$p$$ and return the segment above $$p$$ (if any). We will start by solving the Next Element Search using the naïve method then we will show how to solve it using the persistent data structure method.

Naïve method
We start with a vertical line segment that starts off at infinity and we sweep the line segments from the left to the right. We take a pause every time we encounter an end point of these segments. The vertical lines split the plane into vertical strips. If there are $$n$$ line segments then we can get $$2\cdot n+1$$ vertical strips since each segment has $$2$$ end points. No segment begins and ends in the strip. Every segment either it doesn't touch the strip or it completely crosses it. We can think of the segments as some objects that are in some sorted order from top to bottom. What we care about is where the point that we are looking at fits in this order. We sort the endpoints of the segments by their $$x$$ coordinate. For each strip $$s_{i}$$, we store the subset segments that cross $$s_{i}$$ in a dictionary. When the vertical line sweeps the line segments, whenever it passes over the left endpoint of a segment then we add it to the dictionary. When it passes through the right endpoint of the segment, we remove it from the dictionary. At every endpoint, we save a copy of the dictionary and we store all the copies sorted by the $$x$$ coordinates. Thus we have a data structure that can answer any query. In order to find the segment above a point $$p$$, we can look at the $$x$$ coordinate of $$p$$ to know which copy or strip it belongs to. Then we can look at the $$y$$ coordinate to find the segment above it. Thus we need two binary searches, one for the $$x$$ coordinate to find the strip or the copy, and another for the $$y$$ coordinate to find the segment above it. Thus the query time takes $$O(Log(n))$$. In this data structure, the space is the issue since if we assume that we have the segments structured in a way such that every segment starts before the end of any other segment, then the space required for the structure to be built using the naïve method would be $$O(n^{2})$$. Let us see how we can build another persistent data structure with the same query time but with a better space.

Persistent data structure method
We can notice that what really takes time in the data structure used in the naïve method is that whenever we move from a strip to the next, we need to take a snap shot of whatever data structure we are using to keep things in sorted order. We can notice that once we get the segments that intersect $$s_{i}$$, when we move to $$s_{i+1}$$ either one thing leaves or one thing enters. If the difference between what is in $$s_{i}$$ and what is in $$s_{i+1}$$ is only one insertion or deletion then it is not a good idea to copy everything from $$s_{i}$$ to $$s_{i+1}$$. The trick is that since each copy differs from the previous one by only one insertion or deletion, then we need to copy only the parts that change. Let us assume that we have a tree rooted at $$T$$. When we insert a key $$k$$ into the tree, we create a new leaf containing $$k$$. Performing rotations to rebalance the tree will only modify the nodes of the path from $$k$$ to $$T$$. Before inserting the key $$k$$ into the tree, we copy all the nodes on the path from $$k$$ to $$T$$. Now we have 2 versions of the tree, the original one which doesn't contain $$k$$ and the new tree that contains $$k$$ and whose root is a copy of the root of $$T$$. Since copying the path from $$k$$ to $$T$$ doesn't increase the insertion time by more than a constant factor then the insertion in the persistent data structure takes $$O(Log(n))$$ time. For the deletion, we need to find which nodes will be affected by the deletion. For each node $$v$$ affected by the deletion, we copy the path from the root to $$v$$. This will provide a new tree whose root is a copy of the root of the original tree. Then we perform the deletion on the new tree. We will end up with 2 versions of the tree. The original one which contains $$k$$ and the new one which doesn't contain $$k$$. Since any deletion only modifies the path from the root to $$v$$ and any appropriate deletion algorithm runs in $$O(Log(n))$$, thus the deletion in the persistent data structure takes $$O(Log(n))$$. Every sequence of insertion and deletion will cause the creation of a sequence of dictionaries or versions or trees $$S_{1}, S_{2}, \dots S_{i}$$ where each $$S_{i}$$ is the result of operations $$S_{1}, S_{2}, \dots S_{i}$$. If each $$S_{i}$$ contains $$m$$ elements, then the search in each $$S_{i}$$ takes $$O(Log(m))$$. Using this persistent data structure we can solve the next element search problem in $$O(Log(n))$$ query time and $$O(n\cdot Log(n))$$ space instead of $$O(n^{2})$$. Please find below the source code for an example related to the next search problem.

Examples of persistent data structures
Perhaps the simplest persistent data structure is the singly linked list or cons-based list, a simple list of objects formed by each carrying a reference to the next in the list. This is persistent because the tail of the list can be taken, meaning the last k items for some k, and new nodes can be added in front of it. The tail will not be duplicated, instead becoming shared between both the old list and the new list. So long as the contents of the tail are immutable, this sharing will be invisible to the program.

Many common reference-based data structures, such as red–black trees, stacks, and treaps, can easily be adapted to create a persistent version. Some others need slightly more effort, for example: queues, dequeues, and extensions including min-deques (which have an additional O(1) operation min returning the minimal element) and random access deques (which have an additional operation of random access with sub-linear, most often logarithmic, complexity).

There also exist persistent data structures which use destructive operations, making them impossible to implement efficiently in purely functional languages (like Haskell outside specialized monads like state or IO), but possible in languages like C or Java. These types of data structures can often be avoided with a different design. One primary advantage to using purely persistent data structures is that they often behave better in multi-threaded environments.

Linked lists
Singly linked lists are the bread-and-butter data structure in functional languages. Some ML-derived languages, like Haskell, are purely functional because once a node in the list has been allocated, it cannot be modified, only copied, referenced or destroyed by the garbage collector when nothing refers to it. (Note that ML itself is not purely functional, but supports non-destructive list operations subset, that is also true in the Lisp (LISt Processing) functional language dialects like Scheme and Racket.)

Consider the two lists: xs = [0, 1, 2] ys = [3, 4, 5] These would be represented in memory by:

where a circle indicates a node in the list (the arrow out representing the second element of the node which is a pointer to another node).

Now concatenating the two lists: zs = xs ++ ys results in the following memory structure:

Notice that the nodes in list  have been copied, but the nodes in   are shared. As a result, the original lists ( and  ) persist and have not been modified.

The reason for the copy is that the last node in  (the node containing the original value  ) cannot be modified to point to the start of , because that would change the value of.

Trees
Consider a binary search tree, where every node in the tree has the recursive invariant that all subnodes contained in the left subtree have a value that is less than or equal to the value stored in the node, and subnodes contained in the right subtree have a value that is greater than the value stored in the node.

For instance, the set of data xs = [a, b, c, d, f, g, h] might be represented by the following binary search tree:

A function which inserts data into the binary tree and maintains the invariant is: After executing ys = insert ("e", xs) The following configuration is produced:

Notice two points: first, the original tree persists. Second, many common nodes are shared between the old tree and the new tree. Such persistence and sharing is difficult to manage without some form of garbage collection (GC) to automatically free up nodes which have no live references, and this is why GC is a feature commonly found in functional programming languages.

Code
GitHub repo containing implementations of persistent BSTs using Fat Nodes, Copy-on-Write, and Path Copying Techniques.

To use the persistent BST implementations, simply clone the repository and follow the instructions provided in the README file.

Link:  https://github.com/DesaultierMAKK/PersistentBST

Persistent hash array mapped trie
A persistent hash array mapped trie is a specialized variant of a hash array mapped trie that will preserve previous versions of itself on any updates. It is often used to implement a general purpose persistent map data structure.

Hash array mapped tries were originally described in a 2001 paper by Phil Bagwell entitled "Ideal Hash Trees". This paper presented a mutable Hash table where "Insert, search and delete times are small and constant, independent of key set size, operations are O(1). Small worst-case times for insert, search and removal operations can be guaranteed and misses cost less than successful searches". This data structure was then modified by Rich Hickey to be fully persistent for use in the Clojure programming language.

Conceptually, hash array mapped tries work similar to any generic tree in that they store nodes hierarchically and retrieve them by following a path down to a particular element. The key difference is that Hash Array Mapped Tries first use a hash function to transform their lookup key into a (usually 32 or 64 bit) integer. The path down the tree is then determined by using slices of the binary representation of that integer to index into a sparse array at each level of the tree. The leaf nodes of the tree behave similar to the buckets used to construct hash tables and may or may not contain multiple candidates depending on hash collisions.

Most implementations of persistent hash array mapped tries use a branching factor of 32 in their implementation. This means that in practice while insertions, deletions, and lookups into a persistent hash array mapped trie have a computational complexity of O(log n), for most applications they are effectively constant time, as it would require an extremely large number of entries to make any operation take more than a dozen steps.

Haskell
Haskell is a pure functional language and therefore does not allow for mutation. Therefore, all data structures in the language are persistent, as it is impossible to not preserve the previous state of a data structure with functional semantics. This is because any change to a data structure that would render previous versions of a data structure invalid would violate referential transparency.

In its standard library Haskell has efficient persistent implementations for linked lists, Maps (implemented as size balanced trees), and Sets among others.

Clojure
Like many programming languages in the Lisp family, Clojure contains an implementation of a linked list, but unlike other dialects its implementation of a linked list has enforced persistence instead of being persistent by convention. Clojure also has efficient implementations of persistent vectors, maps, and sets based on persistent hash array mapped tries. These data structures implement the mandatory read-only parts of the Java collections framework.

The designers of the Clojure language advocate the use of persistent data structures over mutable data structures because they have value semantics which gives the benefit of making them freely shareable between threads with cheap aliases, easy to fabricate, and language independent.

These data structures form the basis of Clojure's support for parallel computing since they allow for easy retries of operations to sidestep data races and atomic compare and swap semantics.

Elm
The Elm programming language is purely functional like Haskell, which makes all of its data structures persistent by necessity. It contains persistent implementations of linked lists as well as persistent arrays, dictionaries, and sets.

Elm uses a custom virtual DOM implementation that takes advantage of the persistent nature of Elm data. As of 2016 it was reported by the developers of Elm that this virtual DOM allows the Elm language to render HTML faster than the popular JavaScript frameworks React, Ember, and Angular.

Java
The Java programming language is not particularly functional. Despite this, the core JDK package java.util.concurrent includes CopyOnWriteArrayList and CopyOnWriteArraySet which are persistent structures, implemented using copy-on-write techniques. The usual concurrent map implementation in Java, ConcurrentHashMap, is not persistent, however. Fully persistent collections are available in third-party libraries, or other JVM languages.

JavaScript
The popular JavaScript frontend framework React is frequently used along with a state management system that implements the Flux architecture, a popular implementation of which is the JavaScript library Redux. The Redux library is inspired by the state management pattern used in the Elm programming language, meaning that it mandates that users treat all data as persistent. As a result, the Redux project recommends that in certain cases users make use of libraries for enforced and efficient persistent data structures. This reportedly allows for greater performance than when comparing or making copies of regular JavaScript objects.

One such library of persistent data structures Immutable.js is based on the data structures made available and popularized by Clojure and Scala. It is mentioned by the documentation of Redux as being one of the possible libraries that can provide enforced immutability. Mori.js brings data structures similar to those in Clojure to JavaScript. Immer.js brings an interesting approach where one "creates the next immutable state by mutating the current one". Immer.js uses native JavaScript objects and not efficient persistent data structures and it might cause performance issues when data size is big.

Prolog
Prolog terms are naturally immutable and therefore data structures are typically persistent data structures. Their performance depends on sharing and garbage collection offered by the Prolog system. Extensions to non-ground Prolog terms are not always feasible because of search space explosion. Delayed goals might mitigate the problem.

Some Prolog systems nevertheless do provide destructive operations like setarg/3, which might come in different flavors, with/without copying and with/without backtracking of the state change. There are cases where setarg/3 is used to the good of providing a new declarative layer, like a constraint solver.

Scala
The Scala programming language promotes the use of persistent data structures for implementing programs using "Object-Functional Style". Scala contains implementations of many persistent data structures including linked lists, red–black trees, as well as persistent hash array mapped tries as introduced in Clojure.

Garbage collection
Because persistent data structures are often implemented in such a way that successive versions of a data structure share underlying memory ergonomic use of such data structures generally requires some form of automatic garbage collection system such as reference counting or mark and sweep. In some platforms where persistent data structures are used it is an option to not use garbage collection which, while doing so can lead to memory leaks, can in some cases have a positive impact on the overall performance of an application.

title: Persistent data structure


text:
The Herd (Australian band)

The Herd is an Australian hip hop group formed in Sydney. The group employs a "full band" format and is recognised for its live shows. The Herd is composed of Ozi Batla, Urthboy, Berzerkatron (MCs), Unkle Ho (beats), Traksewt (piano accordion, clarinet and beats), Sulo (beats and guitar), Toe-Fu (guitar), Rok Poshtya (bass) and singer Jane Tyrrell. The band's songs often feature politically oriented lyrics. The group has been largely inactive since 2013, reuniting for select performances.

2001–2004: The Herd & An Elefant Never Forgets
The Herd released their debut single "Scallops" in 2001. The song attracted radio airplay on Australian station Triple J. The song combines hip hop culture with Australian "fast food" descriptions including "Like a $3.40 bag of fresh hip hop, From your local fish n' chip shop, Ah Scallops! With dollops of flavour on top, When we do what we do we give heads the bops"

The band's second album, An Elefant Never Forgets was released in 2003. The first single "Burn Down the Parliament", was released the same week as the Canberra bushfires of 2003, despite the unfortunate coincidence, the song's lyrical content was completely unrelated to the natural disaster. The second single "77%", became a prominent song featuring the line: "77% of Aussies are racist"—the lyric is a reference to 2001 Australian survey results regarding the response of the Australian Federal Government, led by then-prime minister John Howard, to the Tampa affair. "77%" was voted into position 46 of the Triple J Hottest 100 of 2003 and, as of October 2004, the album remained in the Australian alternative charts for over 80 weeks.

In a 2004 interview with Dr Tony Mitchell from the University of Technology Sydney (UTS), Ozi Batla explained:

I think the big challenge for Australian hip-hop is for it to expand on those 3000 people who will always buy the CD. The question people have to ask themselves is, who are the other 35000 odd people who bought the Hilltop Hoods album? It's such a small insular and at times disturbingly ignorant little slice of Australia that I think we'd just be banging our heads against the wall trying to get through to those 15-year-old kids. Yeah, I don't know. There's always that responsibility of just trying to keep it true, even though we don't focus on that as much as a lot of acts do, I think it's always in the back of everyone's mind – probably whatever art form it is – that if they really love the art form that they're attempting or drawing influences from then, you know, everyone is always really quite sensitive about other people's perceptions in that culture or community. I think that's the only responsibility, and obviously not to sell out is the other one. But that is pretty unlikely. And I'd say to hopefully bring more people in and that'll change the culture of it, or it'll make that more ignorant style of the culture a bit more isolated. I don't know, to tell you the truth, sometimes I don't feel like we're part of the community that's there at all. And neither are a lot of the artists we know, and even the artists that are respected in that community just throw their hands up and go 'Look, I stopped trying to deal on that level with those fans a long time'".

2005–2007: The Sun Never Sets
The Herd released their third album The Sun Never Sets in 2005, featuring the single "We Can't Hear You". Their subjects ranged from their well-known anti-war stance and anti-corporatism to more personal topics like divorce and the slow death of the Australian outback/country.

In October 2005, The Herd featured live on Triple J's 'Like a Version' (acoustic covers) segment. They performed their own version of the famous Australian 1983 song "I Was Only Nineteen (A Walk in the Light Green)" by Redgum. The song was so well received by fans that it received regular Triple J airplay and was voted #18 in the 2005 Triple J Hottest 100 countdown. They have since recorded a studio version which was included on the 2006 re-release of The Sun Never Sets, and they have also created a video clip for the song. The Herd performed at The Big Day Out 2007. Simon Fellows (Bezerkatron) left the group in late 2006.

In February 2008 the group performed a song about recycled water on the ABC's Sleek Geeks programme.

2008–2010: Summerland
In May 2008, The Herd released its fourth studio album, Summerland. The first single from the album, "The King Is Dead", made reference to Australia's change in government with John Howard being replaced after 11 years as Prime Minister by Kevin Rudd.

The album debuted at number 7 on the ARIA Albums Chart.

2011–present: Future Shade
In celebration of 10 years since the group debuted, the band performed its first live shows in two years in April 2011. The Herd released "The Sum of it All", the first single from the band's fifth album, Future Shade, on 21 March 2011, The album was released in August 2011.

The Herd performed at the WOMADelaide Festival, held at Botanic Park in Adelaide, Australia, in March 2013 and at the tenth anniversary of the Australian hip hop festival Come Together in June 2013.

In June 2024, The Herd released "Soul of my Soul".

Activism
In September 2009, The Herd was involved in a controversy regarding the act's inclusion in the line-up for Coal to Coast, a regional youth festival held in Mackay, Queensland, with the local coal industry acting as the event's primary funding source. Concerned fans brought the issue of the Herd's involvement in the festival to the group's attention and the story received national coverage in the mainstream media and debate occurred on Hack, a popular program on national radio station Triple J. As a response, Urthboy released a statement of apology and declared the urgency of global warming; he explained that the group's booking agent, in addition to the Mackay Regional Council, failed to inform the band of the complete nature of the festival. The band proceeded to donate profits from the performance to Greenpeace, as part of the apology.

Twenty-nine hours before the band was due to perform, The Herd pulled out of the festival entirely, as the band members had discovered information—in multiple sources—that the festival was conceived of by Andrew Garratt, the Community Relations Officer at the Dalrymple Bay Coal Terminal. Ozi Batla appeared on 'Hack' to discuss the band's decision to withdraw from the festival, alongside the Queensland Young Liberals leader, who disagreed with the group's decision, and the organiser of the festival.

In response to the proposed dumping of around 3 million cubic metres of dredged seabed onto the Great Barrier Reef, a legal team was formed by World Wide Fund for Nature (WWF)-Australia and the Australian Marine Conservation Society (AMCS) in late 2013/early 2014. The legal team received further support in April 2014, following the release of the "Sounds for the Reef" musical fundraising project. Produced by Straightup, the digital album features The Herd, in addition to artists such as John Butler, Sietta, Missy Higgins, The Cat Empire, Fat Freddys Drop, The Bamboos (featuring Kylie Auldist) and Resin Dogs. Released on 7 April, the album's 21 songs were sold on the Bandcamp website.

Side projects
In April 2005, Unkle Ho released his debut solo album Roads to Roma. The album samples music from a wide variety of international musical genres, such as tango, mariachi, dixieland and blues rock. According to the Elefant Traks website, "[Unkle Ho's] strategy for world peace is to write a song that has every culture in the world represented, so people will drop their guns and dance 'till they can't dance no more." Roads to Roma was acclaimed as "bewitchingly beautiful" by Rolling Stone magazine. Unkle Ho's second album Circus Maximus was released in May 2007.

In 2004, Urthboy released his first solo album, Distant Sense of Random Menace, followed by The Signal (2007), Spitshine (2009), Smokey's Haunt (2012), Smokey's Homies Remix EP (2013) Live at the City Recital Hall Angel Place (2013), The Past Beats Inside Me Like a Second Heartbeat (2016) and Savour (2023).

In 2010, Ozi Batla released his debut album Wild Colonial, while Tyrrell released her debut album Echoes in the Aviary in the second half of 2014.

Awards and nominations
The song "A Thousand Lives" from "Future Shade" was a finalist in the International Songwriting Competition, where it received an honourable mention.

AIR Awards
The Australian Independent Record Awards (commonly known informally as AIR Awards) is an annual awards night to recognise, promote and celebrate the success of Australia's Independent Music sector.

 * rowspan="2" | 2006
 * The Sun Never Sets
 * Best Performing Independent Album
 * Nominated
 * themselves
 * Independent Artist of the Year
 * Nominated
 * rowspan="2" | 2008
 * Summerland
 * Best Independent Urban/Hip Hop Album
 * Won
 * themselves
 * Best Independent Artist
 * Won
 * 2012
 * Future Shade
 * Best Independent Urban/Hip Hop Album
 * Nominated
 * 2012
 * Future Shade
 * Best Independent Urban/Hip Hop Album
 * Nominated
 * Nominated

ARIA Music Awards
The ARIA Music Awards is an annual awards ceremony that recognises excellence, innovation, and achievement across all genres of Australian music.

 * 2008
 * Summerland
 * Best Urban Album
 * Nominated
 * 2012
 * Future Shade
 * Best Urban Album
 * Nominated
 * Best Urban Album
 * Nominated

J Award
The J Awards are an annual series of Australian music awards that were established by the Australian Broadcasting Corporation's youth-focused radio station Triple J. They commenced in 2005.

 * 2005
 * The Sun Never Sets
 * Australian Album of the Year
 * Nominated
 * 2008
 * "2020"
 * Australian Video of the Year
 * Won
 * Australian Video of the Year
 * Won

license: Creative Commons - Attribution Share-Alike - https://creativecommons.org/licenses/by-sa/4.0/

title: The Herd (Australian band)


text:
Nonperson

A nonperson is a citizen or a member of a group who lacks, loses, or is forcibly denied social or legal status, especially basic human rights, or who effectively ceases to have a record of their existence within a society (damnatio memoriae), from a point of view of traceability, documentation, or existence.

Legal status
In the case of undocumented immigrants and at times foreign nationals in the United States who have entered the country legally, there are comparisons made to non-personhood due to their lack of agency and differential treatment under the law.

title: Nonperson


text:
Sock monkey

A sock monkey is a stuffed toy made from socks fashioned in the likeness of a monkey. These stuffed animals are a mixture of folk art and kitsch in the cultures of the United States and Canada. The typical sock monkey is brown and white with extra long limbs, a long tail and bright red lips. The animal may be adorned with additional ornamentation on its head or around its neck. The character has become part of popular culture and can be found in comic books and art.

Origin
The sock monkey's most direct predecessors originated in the Victorian era, when the craze for imitation stuffed animals swept from Europe into North America and met the burgeoning Arts and Crafts movement. Craft makers began sewing stuffed animals as toys to comfort children, and, as tales of the Scramble for Africa increased the public's familiarity with exotic species, monkey toys soon became a fixture of American nurseries. Tales like Rudyard Kipling's The Jungle Book and Just So Stories inspired crafters to create toys that depicted exotic animals, however these early stuffed monkeys were not necessarily made from socks, and also lacked the characteristic red lips of the sock monkeys popular today.

John Nelson, a Swedish immigrant to the United States, patented the sock-knitting machine in 1868, and began knitting socks on an automatic machine in Rockford, Illinois as early as 1870. On September 15, 1880, the Nelson Knitting Company formed, producing "Celebrated Rockford Seamless Hosiery", and selling them under the name of the "Nelson Sock".

John Nelson's son Franklin created a machine that knitted a sock without seams in the heel. The original machine required workers to sew every seam at the heel. The seamless sock saved time and labor costs and it became so popular, companies began to imitate his idea. These seamless work socks were so popular that the market was soon flooded with imitators, and socks of this type were known under the generic term "Rockfords".

The iconic sock monkeys made from red-heeled socks, known today as the "Rockford Red Heel", emerged at the earliest in 1932, the year the Nelson Knitting Company added the trademark red heel to its product. In 1932, advertising executive Howard Monk came up with an idea to change the heel of the brown sock from white to red. The red heeled sock was marketed as "de-tec-tip". Nelson Knitting added the red heel "De-Tec-Tip" to assure its customers that they were buying "original Rockfords" as opposed to the generic "Rockfords". This red heel gave the monkeys their distinctive mouth and during the Great Depression, American crafters first made sock monkeys out of worn-out Rockford Red Heel Socks.

In 1953, a woman named Helen Cooke received the patent for sock monkeys. She sued a man named Stanley Levy because he sold sock monkeys but they were not the same design as hers. Levy contacted the Nelson Knitting Company hoping that they would declare the patent invalid. The company knew that people had been making dolls for the last two years, so they gathered up all the dolls that had been made the past two years so that they could have evidence proving that Helen Cooke should not have the patent. One of the most important pieces of evidence was a testimony and a doll made in February 1951 by a lady named Grace Wingent. She was a resident of Rockford and she had made a doll for her grandson. Helen Cooke settled the case against Stanley Levy when she was shown all the evidence that had been collected against her. She decided to sell the patent to the Nelson Knitting Company for $750. The company also paid other women for the rights to the doll including a woman in Tennessee who was paid $1000. Rockford, Illinois became the "home of the sock monkey."

Today

Sock monkeys remain a popular icon and are popular with all ages. They now come in different styles, such as "birthday-themed", different colors, and even electronic ones that sing up-to-date pop songs. Most vintage red-heel sock monkeys found today are no older than the late 1950s, and many date from the 1970s.

A number of methods exist for dating red-heel sock monkeys, including the colors, shape of the red heel (elongated oval or swing), the amount of cream color in the red-heel and toe areas, sock seams, and interior sock content.

The term "vintage" red-heel sock monkeys is typically relegated to sock monkeys made from red-heel socks knitted by the Nelson Knitting Company and from similar socks knitted with red-heels by other companies in the same time period. The term "modern" red-heel sock monkeys is normally relegated to sock monkey dolls created after Fox River Mills, Inc. acquired the Nelson Knitting Company in 1992.

Homemade red-heel sock monkey dolls usually have unique faces and body characteristics and are considered one-of-a-kind. Sock monkey dolls are also mass-manufactured in the marketplace. Sock monkey dolls mass-manufactured by a company normally all have the same face and body characteristics. Not all sock monkey dolls are created from red-heel socks. A 2015 book shows that more colorful sock monkeys have become a trend, such as monkeys made from socks with multicolored striped or polka dot patterns, and monkeys made from mismatched socks.

People's love for sock monkeys has made the toys the center of many special occasions: trips, birthdays, anniversaries, weddings, and graduations, with their images now being used in photography, books, bookmarks, journals, greeting cards, jewelry, quilting, baking, sewing, commercials and movies.

Sock monkeys are found in literature: gift books like Monkey Love, and Friends Knock Your Socks Off; the children's novel The Secrets of Eastcliff-by-the-Sea; craft books such as Sew Cute and Collectible Sock Monkeys; and they can be seen in Tony Millionaire's graphic novel Sock Monkey, in which a sock monkey doll is the main character. There is a film adaptation of Millionaire's comic currently in the works. They are also featured in the cover art for the 1992 alternative rock album Dirty by Sonic Youth.

One reason why sock monkeys are popular is that sock monkeys are said to be good luck charms, and as a result, people offer sock monkeys as gifts. Sock monkeys have been given to patients in hospitals as a symbol of a quick recovery. They have been given to employees to relieve stress and sock monkeys have been sent to soldiers overseas to relieve homesickness.

In February 2015, Jody Lewis of Bridgwater, Somerset UK, made the official Guinness world record for largest sock monkey made from individual socks. The sock monkey stands at 10 feet 5.59 inches.

Festivals
The city of Rockford, Illinois, embraces the doll as part of its history. In 2005, Midway Village Museum in Rockford held its first "Sock Monkey Madness Festival", where sock monkey fans could view an exhibit highlighting the industrial, legal, and creative history of the Nelson red-heel sock and the sock monkey. In 2009, the annual Sock Monkey Madness Festival was awarded a national Leadership in History Award of Merit from the American Association for State and Local History for excellence in educational programming.

The Sock Monkey Madness Festival also includes the original sock monkey that helped the Nelson Knitting Company win the patent and obtain the title “Home of the Sock Monkey.” Additionally, there is a 7-foot-2-inch sock monkey named "Nelson" (he acquired his namesake after the founder of the factory, John Nelson). Nelson, the super-sized sock monkey mascot created by author/crafter Dee Lindner was sewn out of 44 Rockford red-heeled socks. Furthermore, the festival is kid friendly and has unique attractions such as the “Sockford General Hospital”. The hospital is a “crafty clinic” that repairs sock monkeys if they require any care. Volunteers dress as nurses and fix any button eyes that fall off, torn mouths, or do any other sewing that is necessary.

title: Sock monkey


text:
BoxRec

BoxRec or boxrec.com is a website dedicated to holding updated records of professional and amateur boxers, both male and female. It also maintains a MediaWiki-based encyclopaedia of boxing.

The objective of the site is to document every professional boxer and boxing match from the instigation of the Queensberry Rules up to the present times. BoxRec publishes ratings for all active boxers and all-time ratings. Since 2012 the site has hosted Barry Hugman's History of World Championship Boxing.

Foundation
The site was founded by John Sheppard, an Englishman. Sheppard had never attended a boxing bout until 1995 when he attended a "Prince" Naseem Hamed fight with Hamed's older brothers Riath and Nabeel. Sheppard had considered boxing to be a "barbaric and degrading" spectacle, stating "I sat there watching people punch each other in the head, wondering why they were doing it... I was sprayed with blood, getting more and more miserable." However, Sheppard later explained, "[D]uring Naseem's fight, something clicked in my head. The subtlety of what he was doing, the genius of it all, became obvious to me. It wasn't a disgusting spectacle anymore. It was art, and I found myself cheering."

Following Hamed's split with Frank Warren, Sheppard went to work for Hamed at "Prince Promotions" in 2000. Sheppard then began to compile record of active British boxers in an attempt to aid matchmaking of boxers and then decided to create a website which would store the records of all boxers. The site has grown so much that Sheppard has gone full-time since 2005. on a typical day 50,000 visitors could view 700,000 pages with the record of 1,300,000 bouts in its database encompassing 17,000 active and 345,000 non-active fighters.

Organization
The website is updated by volunteer editors from many countries around the world. Each editor is assigned a country or in some instances, regions within countries and they maintain the records for boxers in that country or region. BoxRec also rates each active fighter by weight division.

Criticism of the website
BoxRec has been criticized for not keeping correct records for boxers, especially historic fighters. In 2005, BoxRec applied to become recognized as the official record keepers for the Association of Boxing Commissions (ABC). The ABC held interviews with both Fight Fax and BoxRec at their 2005 convention. Each applicant made a submission and presentation to the ABC panel which included state commissioners and attorneys. The panel then voted unanimously in favour to award Fight Fax the position. The ABC later revealed that they had performed tests to measure the accuracy of each website's records: Fight Fax's records were shown to be 100% accurate, while the accuracy of BoxRec's records was found to be "substantially lower". Nonetheless, in 2016 the ABC voted to recognize Boxrec as an official record-keeper alongside Fight Fax.

Boxing promoter J. Russell Peltz stated "very few things in life are one hundred percent. But I've come across some glaring errors at BoxRec, mostly in the historical records." ESPN's Dan Rafael noted that "so many people have a hand in BoxRec that the records aren't always accurate. Ricardo Mayorga's record has been wrong for years. There's a mistake [in] Derrick Gainer's record too."

Plaudits from boxing personalities
When asked how important BoxRec was to him, boxing promoter Lou DiBella stated that "anyone in boxing who says he doesn't use BoxRec is either a complete imbecile or lying" and Bruce Trampler, the matchmaker for Top Rank, said that "short of actually being at a fight, they're the best source of information out there."

Boxing journalist Thomas Hauser also asked the chairman of the New York State Athletic Commission Ron Scott Stevens what his thoughts were, and Stevens was quoted as saying "Fight Fax is the mandated record-keeper for athletic commissions in the United States. But BoxRec does more than supplement Fight Fax. In many respects, it surpasses Fight Fax."

David Haye, when commenting on what was his only professional loss at the time, stated I'd love to get revenge over Carl Thompson, I know I have improved and made the adjustments required, but still, I take a look at my record at BoxRec and I see this red blob there, that one loss there really does stick out at me.

title: BoxRec


text:
User talk:212.112.54.2

Attention: This IP address, , is registered to Håbo Kommun and is shared by multiple users. Comments left on this page may be received by other users of this IP and appear to be irrelevant. Caution should be used when blocking this IP or reverting its contributions without checking. In the event of vandalism from this address, efforts will be made to contact Håbo Kommun to report abuse.

If you are an unregistered user operating from this address, note that this need not necessarily be the IP address of your machine. In many cases, it turns out to be the IP address of a proxy server that communicates between your browser and the Wikimedia servers. Such proxies are shared among a huge number of users compared to the number of persons using your particular machine. If you are frustrated by irrelevant comments appearing here, you can avoid them by creating an account for yourself.

May 2004
Thanks for experimenting with Wikipedia. Your test worked, and has now been removed. Please use Sandbox for any other tests you want to do, since testing material in articles will normally be removed quickly. Please see the welcome page if you would like to learn more about contributing to our encyclopedia. Thanks. -- Graham :) | Talk 11:03, 18 May 2004 (UTC)

January 2006
Thanks for experimenting with Wikipedia. Your test worked, and has been reverted or removed. Please use the sandbox for any other tests you want to do. Take a look at the welcome page if you would like to learn more about contributing to our encyclopedia. Thanks. --MONGO 08:37, 24 January 2006 (UTC)

This message is regarding the page Wyoming. Please do not replace Wikipedia pages with blank content. Blank pages are harmful to Wikipedia because they have a tendency to confuse readers. If it is a duplicate article, please redirect it to an appropriate existing page. If the page has been vandalised, please revert it to the last legitimate version. If you feel that the content of a page is inappropriate, please edit the page and replace it with appropriate content. If you believe there is no hope for the page, please see the deletion policy for how to proceed. Thanks for contributing to Wikipedia! --bbatsell |  « give me a ring »  07:17, 30 January 2006 (UTC)

Please stop. If you continue to blank pages, you will be blocked from editing Wikipedia. Mushroom 09:45, 30 January 2006 (UTC)

Your recent edit to Texas was reverted by an automated bot that attempts to recognize and repair vandalism to Wikipedia articles. If the bot reverted a legitimate edit, please accept our apologies – if you bring it to the attention of the bot's owner, we may be able to improve its behavior. Click here for frequently asked questions about the bot and this warning. // Tawkerbot2 07:48, 25 April 2006 (UTC)

May 2007
You have been blocked from editing Wikipedia  as a result of your . You are free to make constructive edits after the block has expired, but please note that vandalism (including page blanking or addition of random text), spam, deliberate misinformation, privacy violations, personal attacks; and repeated, blatant violations of our neutral point of view policy will not be tolerated./wangi 08:58, 31 May 2007 (UTC)

May 2008
Hi, the recent edit you made to The Gambia has been reverted, as it appears to be unconstructive. Use the sandbox for testing; if you believe the edit was constructive, ensure that you provide an informative edit summary. You may also wish to read the introduction to editing. Thanks. - ✰ ALLST☆R ✰ echo 06:45, 29 May 2008 (UTC)

The recent edit you made to The Gambia constitutes vandalism, and has been reverted. Please do not continue to vandalize pages; use the sandbox for testing. Thanks. - ✰ ALLST☆R ✰ echo 06:48, 29 May 2008 (UTC))

Please do not vandalize pages, as you did with this edit to The Gambia. If you continue to do so, you will be blocked from editing. - ✰ ALLST☆R ✰ echo 06:54, 29 May 2008 (UTC)

This is your last warning. You will be blocked from editing the next time you vandalize a page, as you did with this edit to The Gambia. - ✰ ALLST☆R ✰ echo 06:59, 29 May 2008 (UTC)

November 2008
Welcome to Wikipedia. Please do not replace pages with blank content, as you did with this edit to Kanata, as this is confusing to readers. The page's content has been restored for now. If there is a problem with the page, it should be edited or reverted to a previous version if possible; if you think the page should be removed entirely, see further information. Thank you. Alexius08 (talk) 11:35, 20 November 2008 (UTC)

December 2008
Welcome to Wikipedia. Although everyone is welcome to make constructive contributions to Wikipedia, at least one of your recent edits did not appear to be constructive and has been reverted. Please use the sandbox for any test edits you would like to make, and read the welcome page to learn more about contributing constructively to this encyclopedia. Vernon (Versus22) (talk) 09:55, 11 December 2008 (UTC)
 * If this is a shared IP address, and you didn't make any unconstructive edits, consider creating an account for yourself so you can avoid further irrelevant warnings.

Please stop. If you continue to blank out or delete portions of page content, templates or other materials from Wikipedia, you will be blocked from editing. Oxymoron83 09:59, 11 December 2008 (UTC)

This is your last warning. The next time you vandalize Wikipedia, as you did to Laura Ingalls Wilder, you will be blocked from editing. Your edits have been automatically marked as vandalism and have been automatically reverted. The following is the log entry regarding this vandalism: Laura Ingalls Wilder was changed by 212.112.54.2 (u) (t) deleting 20857 characters on 2008-12-11T10:00:26+00:00. Thank you. ClueBot (talk) 10:00, 11 December 2008 (UTC)

in accordance with Wikipedia's blocking policy for. You are welcome to make useful contributions after the block expires. If you believe this block is unjustified you may contest this block by adding the text below.

Welcome to Wikipedia. The recent edit you made to Laura Ingalls Wilder has been reverted, as it appears to be unconstructive. Use the sandbox for testing; if you believe the edit was constructive, please ensure that you provide an informative edit summary. You may also wish to read the introduction to editing. Thank you. Vernon (Versus22) (talk) 07:46, 15 December 2008 (UTC)

April 2009
Welcome to Wikipedia. Although everyone is welcome to make constructive contributions to Wikipedia, at least one of your recent edits, such as the one you made to Thermal power station, did not appear to be constructive and has been automatically reverted by ClueBot. Please use the sandbox for any test edits you would like to make, and take a look at the welcome page to learn more about contributing to this encyclopedia. If you believe there has been a mistake and would like to report a false positive, please report it here and then remove this warning from your talk page. If your edit was not vandalism, please feel free to make your edit again after reporting it. The following is the log entry regarding this warning: Thermal power station was changed by 212.112.54.2 (u) (t) making a minor change with obscenities on 2009-04-16T08:05:16+00:00. Thank you. ClueBot (talk) 08:05, 16 April 2009 (UTC)

October 2009
Welcome to Wikipedia. The recent edit you made to the page Eddie "The Eagle" Edwards has been reverted, as it appears to be unconstructive. Use the sandbox for testing; if you believe the edit was constructive, please ensure that you provide an informative edit summary. You may also wish to read the introduction to editing. Thank you. Shadowjams (talk) 08:11, 1 October 2009 (UTC)

November 2009
Welcome to Wikipedia. Although everyone is welcome to contribute to Wikipedia, at least one of your recent edits, such as the one you made to High fantasy, did not appear to be constructive and has been reverted. Please use the sandbox for any test edits you would like to make, and read the welcome page to learn more about contributing constructively to this encyclopedia. Thank you. Suffusion of Yellow (talk) 08:18, 25 November 2009 (UTC)
 * If this is a shared IP address, and you didn't make the edit, consider creating an account for yourself so you can avoid further irrelevant notices.

May 2011
Please refrain from making test edits in Wikipedia pages, such as those you made to New Zealand cuisine, even if you intend to fix them later. Your edits did not appear to be constructive and have been reverted. If you would like to experiment again, please use the sandbox. Thank you.- gadfium 09:06, 19 May 2011 (UTC)

February 2012
Hello, and welcome to Wikipedia. Although everyone is welcome to contribute to Wikipedia, at least one of your recent edits, such as the one you made to List of melons, did not appear to be constructive and has been reverted or removed. Please use the sandbox for any test edits you would like to make, and read the welcome page to learn more about contributing constructively to this encyclopedia. Thank you. William Avery (talk) 12:34, 1 February 2012 (UTC)
 * If this is a shared IP address, and you didn't make the edit, consider creating an account for yourself so you can avoid further irrelevant notices.

October 2012
Please refrain from making unconstructive edits to Wikipedia, as you did at Rhianna. Your edits appear to constitute vandalism and have been reverted or removed. If you would like to experiment, please use the sandbox. Thank you.  Shanmugam p7   (talk) 08:26, 4 October 2012 (UTC)
 * If this is a shared IP address, and you didn't make the edit, consider creating an account for yourself so you can avoid further irrelevant notices.

November 2012
Hello, I'm The Anonymouse. I wanted to let you know that I undid one or more of your recent contributions to Dead Poets Society because it didn't appear constructive. If you think I made a mistake, or if you have any questions, you can leave me a message on my talk page. Thanks! The Anonymouse (talk • contribs) 08:19, 26 November 2012 (UTC)
 * If this is a shared IP address, and you didn't make the edit, consider creating an account for yourself so you can avoid further irrelevant notices.

Please refrain from making unconstructive edits to Wikipedia, as you did at Believe (Justin Bieber album). Your edits appear to constitute vandalism and have been reverted or removed. If you would like to experiment, please use the sandbox. Mediran talk to me! 10:09, 28 November 2012 (UTC)
 * If this is a shared IP address, and you didn't make the edit, consider creating an account for yourself so you can avoid further irrelevant notices.

March 2013
Please refrain from making unconstructive edits to Wikipedia, as you did at Internet slang. Your edits appear to constitute vandalism and have been reverted or removed. If you would like to experiment, please use the sandbox. Thank you. AnthonyJ Lock (talk) 08:50, 6 March 2013 (UTC)

Please stop your disruptive editing. If you continue to vandalize Wikipedia, as you did at Floorball, you may be blocked from editing.  ~ satellizer  ~  talk  ~  09:25, 6 March 2013 (UTC)
 * If this is a shared IP address, and you did not make the edit, consider creating an account for yourself so you can avoid further irrelevant notices.

This is your last warning. The next time you remove or blank page content or templates from Wikipedia, as you did at Floorball, you may be blocked from editing without further notice. AnthonyJ Lock (talk) 09:28, 6 March 2013 (UTC)

April 2013
Hello, I'm Yintan. I wanted to let you know that I undid one of your recent contributions, such as the one you made with this edit to The Sword of Shannara, because it didn’t appear constructive to me. If you think I made a mistake, or if you have any questions, you can leave me a message on my talk page. Thanks,  Yinta n   10:56, 25 April 2013 (UTC)

April 2020
Hello, I'm Materialscientist. I wanted to let you know that I reverted one of your recent contributions —specifically this edit to Long Walk to Freedom—because it did not appear constructive. If you would like to experiment, please use the sandbox. If you have any questions, you can ask for assistance at the Help desk. Thanks. Materialscientist (talk) 08:32, 22 April 2020 (UTC)

August 2020
Please refrain from making unconstructive edits to Wikipedia, as you did at African elephant. Your edits appear to constitute vandalism and have been reverted. If you would like to experiment, please use the sandbox. Repeated vandalism may result in the loss of editing privileges. Thank you. TwoTwoHello (talk) 12:18, 20 August 2020 (UTC)

Anonymous users from this IP address have been blocked from editing for a period of 6 months to prevent further vandalism. If you think there are good reasons for being unblocked, please read the guide to appealing blocks, then add the following text below the block notice on your talk page:. Jauerbackdude?/dude. 13:42, 20 August 2020 (UTC)
 * If this is a shared IP address and you are an uninvolved editor with a registered account, you may continue to edit by logging in.

Welcome
Hello, and welcome to Wikipedia!

Someone using this IP address, 212.112.54.2, made test edits on the page For sale: baby shoes, never worn which have been reverted or removed. If you did this, please use the sandbox for any other tests you may want to do. If 212.112.54.2 is a shared IP address and you did not do this, you may wish to consider [ getting a username] to avoid confusion with other editors and further irrelevant notices.

Here are a few good links for newcomers:
 * The five pillars of Wikipedia
 * How to edit a page
 * Tips on starting your first article
 * Help pages • Tips
 * Tutorial

Here are some other hints and tips:
 * I recommend that you get a username. You do not have to log in to read or edit articles on Wikipedia, but  [ creating an account]  is quick, free and non-intrusive, requires no personal information, and there are many benefits of having a username. (If you edit without a username, your IP address is used to identify you instead.)
 * When using talk pages, please sign your name at the end of your messages by typing four tildes ( ~ ). This will automatically produce your username (or IP address) and the date.

I hope you enjoy editing here and being a Wikipedian! If you need help, check out Questions, visit the Teahouse, our help forum for new users, or type  here on  talk page and someone will show up shortly to answer your questions. Again, welcome! Alpaca the Wizard (talk) 09:18, 11 January 2022 (UTC)

January 2022
Please refrain from making unconstructive edits to Wikipedia, as you did at For sale: baby shoes, never worn. Your edits appear to constitute vandalism and have been reverted. If you would like to experiment, please use the sandbox. Repeated vandalism may result in the loss of editing privileges. Thank you. Alpaca the Wizard (talk) 09:21, 11 January 2022 (UTC)

Please stop your disruptive editing. If you continue to vandalize Wikipedia, as you did at For sale: baby shoes, never worn, you may be blocked from editing. ItcouldbepossibleTalk 09:22, 11 January 2022 (UTC)

You may be blocked from editing without further warning the next time you vandalize Wikipedia, as you did at For sale: baby shoes, never worn. Alpaca the Wizard (talk) 09:27, 11 January 2022 (UTC)

February 2024
Please refrain from attempting to make unconstructive edits to Wikipedia. Your edits appear to be disruptive and have been [ disallowed by an edit filter.] If you would like to experiment, please use the sandbox. Repeatedly attempting to perform disruptive actions may result in the loss of editing privileges. Thank you. Materialscientist (talk) 11:14, 13 February 2024 (UTC)

title: User talk:212.112.54.2


text: User talk:65.43.221.8

title: User talk:65.43.221.8