text:
arXiv Vanity renders academic papers from arXiv as responsive web pages so you don't have to squint at a PDF
View this paper on arXiv
A Comparison of NOOP to Structural Domain-Theoretic Models of OOP
Moez A. AbdelGawad
College of Mathematics and Econometrics, Hunan University
Changsha 410082, Hunan, P.R. China
Informatics Research Institute, SRTA-City
New Borg ElArab, Alexandria, Egypt
Mainstream object-oriented programming languages such as Java, C#, C++ and Scala are all almost entirely nominally-typed. NOOP is a recently developed domain-theoretic model of OOP that was designed to include full nominal information found in nominally-typed OOP. This paper compares NOOP to the most widely known domain-theoretic models of OOP, namely, the models developed by Cardelli and Cook, which were structurally-typed models. Leveraging the development of NOOP, the comparison presented in this paper provides a clear and precise mathematical account for the relation between nominal and structural OO type systems.
The first mathematical models of object-oriented programming (OOP) to gain wide-spread recognition were structural models. Being structural, objects were viewed in these models as being mere records. Object types, in accordance, were viewed as record types, where the type of an object specifies the structure of the object, meaning that object types carry information on the names of the members of objects (i.e., fields and methods), and, inductively, on the (structural) types of these members. The model of OOP developed by Cardelli in the eighties of last century, and later enhanced by Cook and others, is an example of a structural model of OOP. Examples of structurally-typed OO languages include lesser-known languages such as O'Caml [41] , Modula-3 [24] , Moby [34] , PolyTOIL [17] , and Strongtalk [15] .
Despite the popularity of the structural view of OOP among programming languages researchers, many industrial-strength mainstream OO programming languages are nominally-typed. Examples of nominally-typed OO languages include well-known languages such as Java [38] , C# [3] , C++ [2] , and Scala [50] . In nominally-typed OO languages, objects and their types are nominal, meaning that objects and their types carry class names information (also called nominal information) as part of the meaning of objects and of their types, respectively.
In pure structurally-typed OO languages, nominal information is not used as part of the identity of objects and of their types during static type checking nor is nominal information available at runtime111Given that most industrial-strength OO languages are statically-typed, in this work we focus on nominal and structural statically-typed OO languages. A discussion of statically-typed versus dynamically-typed OO languages (including the non-well-defined so-called "duck-typing"), and the merits and demerits of each, is beyond the scope of this work. The interested reader should check [47] .. Accordingly, nominal information is missing in all structurally-typed models of OOP.
OOP was in its early days at the time the first mathematical models of OOP were developed, in the eighties of last century. Functional programming was the dominant programming paradigm among programming languages researchers at that time—and largely still is today. As such, the role of nominality of objects and of their types (i.e., the inclusion of nominal information in their identities) in the semantics of mainstream OOP was not widely appreciated, and nominal OO type systems remain under-researched. NOOP [6, 8] is a recently developed domain-theoretic model of OOP that addresses this shortcoming. To the best of our knowledge, NOOP is so far the only domain-theoretic model of OOP to include full class names information as found in mainstream nominally-typed OO programming languages. In this paper, we compare NOOP to other well-known structural domain-theoretic models of OOP.
This paper is structured as follows. First, we discuss related work—including the history of modeling OOP—in Section 2. As an appetizer for the following comparison, a fundamental technical difference between pure nominally-typed OO languages and pure structurally-typed OO languages is discussed in Section 3. In Section 4 we then compare the nominal mathematical view of OOP to the structural mathematical view of OOP by presenting a comparison between NOOP and the structural models of OOP constructed by Cardelli and enhanced by Cook and others. We conclude in Section 5 by summarizing our findings, making some final remarks, and discussing some possible future research.
Even though object-oriented programming emerged in the 1960s, and got mature and well-established in mainstream software development in the late 1980s, the differences between nominally-typed and structurally-typed OO programming languages started getting discussed by programming languages (PL) researchers only in the 1990s [44, 54, 59] . In spite of these early research efforts, the value of nominal typing and nominal subtyping to mainstream OO developers did not get the full attention of the PL research community until around the turn of the century.
In the eighties, while OOP was in its infancy, Cardelli built the first denotational model of OOP [21, 22] . Cardelli's work was pioneering, and naturally, given the research on modeling functional programming extant at that time, the model Cardelli constructed was a structural denotational model of OOP.222Quite significantly, Cardelli in fact also hinted at looking for investigating nominal typing [23, p.2] . Sadly, Cardelli's hint went largely ignored for years, and structural typing was rather assumed superior to nominal typing instead, particularly after the publication of Cook et al.'s and Bruce et al.'s work. In the late 1980s/early 1990s, Cook and his colleagues worked to improve on Cardelli's model, leading them to break the identification of the notions of inheritance and subtyping [28, 31, 30] . Unlike Cardelli, Cook emphasized in his work—as we discuss in more detail in Section 4.2—the importance of self-references in OOP, at the value level (i.e., self variables, such as this) and at the type level (i.e., self-type variables).
In 1994, Bruce et al. presented a discussion of the problem of binary methods in OOP [18] . Later, Bruce, and Simons, also promoted the structural view of OOP in a number of publications (e.g., [19] and [58] ) and they promoted conclusions based on this view. However, the deep disagreement between these conclusions (such as breaking the correspondence between inheritance and subtyping) and the fundamental intuitions of a significant portion of mainstream OO developers persisted [25, 10] .
Under the pressure of this disagreement, some PL researchers then started in the late 1990s/early 2000s stressing the significance of the differences between nominally-typed OOP and structurally-typed OOP, and they started acknowledging the practical value of nominal typing and nominal subtyping (see [10, 7] for more details) and asserted the need for more research on studying nominal OO type systems [52] . Accordingly, some attempts were made to develop OO languages that are both nominally- and structurally-typed [33, 51, 37, 45, 46, 50] .333Multiple dispatch (see [26, 14, 27] ), also, was discussed (e.g., in [18] ) as a possible solution to the problem of binary methods. However, at least in the eyes of mainstream OO developers, these hybrid languages have far more complex type systems than those of OO languages that are either purely nominally-typed or purely structurally-typed (see discussion in Section 4.1).
As to operational mathematical models of OOP, Abadi and Cardelli were the first to present such a model [4, 5] . Their model also had a structural view of OOP. However, operational models of nominally-typed OOP got later developed. In their seminal work, Igarashi, Pierce, and Wadler presented Featherweight Java (FJ) [40] as an operational model of a nominally-typed OO language. Even though FJ is not the first operational model of nominally-typed OOP (for example, see [32] , [49] and [35, 36] ), yet FJ is the most widely known operational model of (a tiny core subset of) a nominally-typed mainstream OO language, namely Java. The development of FJ and other operational models of nominally-typed OOP marked a strong focus on studying nominal-typing in OO languages, thereby departing from earlier disregard of it.
These developments later motivated the construction of NOOP. Featherweight Java (FJ) in fact offers the closest research to NOOP since it offers a very clear operational semantics for a tiny nominally-typed OO language. It is worth mentioning that NOOP, as a more foundational domain-theoretic model of nominally-typed OO languages (i.e., that has fewer assumptions than FJ), provides a denotational justification for the inclusion of nominal information in FJ. The inclusion of nominal information in NOOP is crucial for proving the identification of inheritance and subtyping in nominally-typed OOP. In FJ [40] , rather than being proven as a consequence of nominality, the identification of inheritance and subtyping was taken as an assumption. NOOP also allows discussing issues of OOP such as type names, 'self-types' and binary methods on a more foundational level than provided by operational models of OOP. The more abstract description of denotational models results in a conceptually clearer understanding of the programming notions described, as well as of the relations between them.444It is worthy to also mention that NOOP was developed, partially, in response to the technical challenge Pierce (an author of FJ) presented in his LICS'03 lecture [53] in which Pierce looked for precising the relation between structural and nominal OO type systems (notably, after the development of FJ was concluded).
Finally, related to our work is also the dissatisfaction some researchers expressed about possible misunderstandings extant in the PL research community, and about the (mal)practices based on these misunderstandings when PL researchers study object-oriented programming languages in particular. Given the different basis for deriving data structuring in functional programming (based on standard branches of mathematics) and in object-oriented programming (based on biology and taxonomy) [21, 22] , some PL researchers have expressed dissatisfaction with assuming that the views of programming based on researching functional programming (including a view that assumes structural typing) may apply without qualifications to object-oriented programming. In addition to pointing out the importance of distinguishing between nominal typing and structural typing, MacQueen [42] , for example, has noted many mismatches between Standard ML [48] (a popular functional programming language) and class-based OO languages such as Java and C++. Later, Cook [29] also pointed out differences between objects of OOP and abstract data types (ADTs), which are commonly used in functional programming.555We consider these research results as running in a similar vein as ours, since they somewhat also point to some mismatches between the theory and practice of programming languages—theory being mathematics-based, functional, and structurally-typed, and practice being biology/taxonomy-based, object-oriented, and nominally-typed.,666Yet another research that is also somewhat similar to the one we present here, but that had different research interests and goals, is that of Reus and Streicher [55, 57, 56] . In [56] , an untyped denotational model of class-based OOP is developed. Type information is largely ignored in Reus and Streicher's work (in particular, members of objects have no type signatures) and some minimal amount of nominal information is included with objects only to support analyzing OO dynamic dispatch. This model was developed to analyze mutation and imperative features of OO languages and for developing specifications of OO software and the verification of its properties [56] . Analyzing the differences between structurally-typed and nominally-typed OO type systems was not a goal of Reus and Streicher's research. Despite the similarity of NOOP and the model of Reus and Streicher, we thus make no further mention of Reus and Streicher's model in this paper due to its different interests and goals, and due to the fundamentally different nature of NOOP compared to their model (i.e., NOOP including all essential class names information inside objects versus Reus and Streicher's model lacking most of this information.)
3 Type Names, Type Contracts, Recursive Types and Binary Methods
From the point of view of OO developers and OO language designers, there are many technical differences between nominally-typed OO languages and structurally-typed OO languages. We discuss these in brief in this section. (A more detailed discussion is presented in [10] and [7] .)
Type Names and Behavioral Type Contracts A fundamental technical difference between nominally-typed OO type systems and structurally-typed OO type systems is how the two approaches view type names. In structurally-typed OO languages, type names are viewed as being names for type variables that abbreviate type expressions (i.e., are "shortcuts"). As such, the use of type names in structurally-typed OO languages is not always necessary, but type names are useful as abbreviations and they are even necessary for defining recursive type expressions. As variable names, however, recursive type names in structurally-typed OO languages (such as the name of a class when used inside the definition of the class—which gets interpreted as "self-type") get rebound to different types upon type inheritance, and they get rebound to types that, if they were subtypes, could break the contravariant subtyping rule of method parameter types (and, thus, break the type safety of structurally-typed OO languages). Structurally-typed OO languages resolve this situation by breaking the correspondence between type inheritance and subtyping.
In nominally-typed OO languages, on the other hand, the nominality of types means type names are viewed as part of the identity and meaning of type expressions, since type names in these languages are associated with public formal or informal behavioral contracts.777In well-designed OO programs, each class (and interface and trait, in languages that support these notions) has associated contracts describing the behavior of objects of the class (its instances). The contracts include an invariant (a predicate) for the values of class fields, and a contract for each method stipulating what conditions the inputs should satisfy and what output condition should hold over the value returned by the method, as well as side effects that have been performed on this and perhaps other objects passed as arguments to the method. (The output predicate may mention the values of arguments and in such case is often called an input-output predicate.) In practice, class contracts are typically informal, may be incomplete, and are usually expressed only in code documentation. (See [10] for a longer, detailed and deeper discussion of the association of type names with contracts, and of the import of this association to mainstream OO developers.) Being names for public, and thus fixed, contracts means that, in nominally-typed OO languages, type names cannot be treated as variable names. In nominally-typed OO languages, thus, type names have fixed meanings that do not change upon inheritance. Further, in these languages the fixed type a type name is bound to does not break the contravariant subtyping of method parameters when the method and its type get inherited by subtypes (types corresponding to subclasses/subinterfaces). As such, in nominally-typed OOP it is not necessary to break the identification of type inheritance with subtyping.
Recursive Types Further, in class-based OOP, a class (or interface or trait, in languages that support these notions) can directly refer to itself (using class/interface/trait names) in the signature of a field, or the signature of a method parameter or return value, where the class name is used also as a type name. This kind of reference is called a type self-reference, recursive reference, or, sometimes, circular reference. Also, mutually-dependent classes, where a class refers to itself indirectly (i.e., via other classes), are allowed in class-based OOP. As Pierce noted [52] , nominally-typed OO languages allow readily expression of mutually-dependent class definitions. Since objects are characterized as being self-referential values (according to Cook [29] , objects are 'autognostic'), and since self-referential values can be typed using recursive types [43] , there is wide need for recursive type definitions in mainstream OOP. As such, direct and indirect circular type references are quite common in mainstream OOP [29] . The ease by which recursive typing can be expressed in nominally-typed OO languages is one of the main advantages of nominally-typed OOP.888According to Pierce [52, p.253] , "The fact that recursive types come essentially for free in nominal systems is a decided benefit [of nominally-typed OO languages]."
In the comparison of nominal and structural mathematical models of OOP in Section 4 we will see that, in accordance with their different views of type names, self-referential class references are viewed differently by nominally-typed models of OOP than by structurally-typed models of OOP. The different views of circular class references are behind nominal models of OOP leading to a different conclusion about the relation between inheritance and subtyping than the conclusion reached based on structural models.
Binary Methods From the point of view of OO developers, the difference between the nominal and the structural views of type names in OOP demonstrates itself, most prominently, in the different support and the different treatment provided by OO languages to what are usually called "binary methods". In OOP, a 'binary method' is defined as a method that takes a parameter (or more) of the same type as the class the method is declared in [18] . "The problem of binary methods" and requiring them to be supported in OO languages was a main motivation behind structural models of OOP leading to inheritance and subtyping not being identified (i.e., as not being in a one-to-one correspondence) [30] . As explained above, given their view of type names as type variable names, structurally-typed OO languages require the self-type of the argument of a method—where the method is identified as a binary method, and upon inheritance of the method by a subclass of the class the method is first declared in—to be that of the type corresponding to the subclass.
Nominally-typed OO languages, on the other hand, with their fixed interpretation of type names, treat a method taking in an argument of the same class as that in which the method is declared like any other method, i.e., needing no special treatment. As such, nominally-typed OO languages guarantee that the type of the input parameter of a method that approximates a binary method is a supertype of its type if it were a true binary method.
Nominally-typed OO languages, thus, offer a somewhat middle-ground solution between totally avoiding binary methods and overly embracing them (as pure structurally-typed OO languages do). Given that the meaning of types names in nominally-typed OO languages does not change upon inheritance, these languages provide methods whose type, upon inheritance, only approximates the type of true binary methods. Nominally-typed OO languages do not quite support binary methods, but, for good reasons (i.e., so as to not break the identification of inheritance of contracts and subtyping, nor lose other advantages of nominal typing [10] ), offer only a good approximation to binary methods. Given that the type of the parameter does not change in subclasses, the degree of approximation (if the method was indeed a true binary method) gets lesser the deeper in the inheritance hierarchy the method gets inherited.999With the introduction of generics [38, 3, 50, 13, 11, 16, 40] , and 'F-bounded generics' (the nominal counterpart of F-bounded polymorphism [20, 12, 39] ) in particular, nominally-typed OO languages provided better support for true binary methods while keeping the identification of type inheritance with subtyping and other benefits of nominal typing. It should be noted that the lesser-recognized problem of 'spurious binary methods' in structurally-typed OOP (see [10, Section 3.3.1] ) provides further justification for nominally-typed OO languages being cautious about fully embracing binary methods by treating a method that "looks like" a binary method as indeed being one. In light of the spurious binary methods problem, and precluding the use of F-bounded generics, in our opinion a better approach towards supporting true binary methods in mainstream OO languages might be by allowing developers to explicitly mark or flag true binary methods as being such, or, even more precisely, to allow developers to mark specific arguments of methods as being arguments that 'need to be treated as those of true binary methods.'
4 Nominally-Typed versus Structurally-Typed Models of OOP
To see how nominality and nominal typing affects mathematical views of OOP, we compare NOOP, as a nominally-typed denotational model of OOP, to the most widely known structural model of OOP—the one constructed and presented by Cardelli [21, 22] , and extended, analyzed and promoted by others such as Cook [28, 31, 30] , Bruce [19] and Simons [58] .
Even though unnamed by their authors, for ease of reference in this paper we call Cardelli's model SOOP, for Structural OOP, while calling the extension of SOOP by Cook et al. μSOOP (due to its inclusion of recursive types). As we discussed earlier, NOOP is the first domain-theoretic model of OOP to include full nominal type information found in nominally-typed OOP. The construction of NOOP is presented in [6] , and is summarized in [8] . In the following sections we first compare NOOP to SOOP then compare it to μSOOP.
4.1 NOOP Compared to SOOP
The model of OOP developed by Cardelli in the 1980s [21, 22] was the first denotational model of OOP to gain widespread recognition. In his pioneering and seminal work Cardelli, according to him himself, had a goal of 'unifying functional programming and object-oriented programming' [22, p.2] . A domain equation that describes the main features of SOOP (distilled to exclude variants. See [22, pp.15, 16] for the actual domain equations used by Cardelli) is
V=B+(V→V)+(L→V)
where V is the main domain of values, B is a domain of base values, L is the flat domain of labels, → is the standard continuous functions domain constructor, and + is the disjoint summation domain constructor. The distilled SOOP domain equation expresses the view that values are either base values, unary functions over values, or records ("objects") modeled as (infinite) functions from labels to values.
The domain equation describing NOOP is
O=S×(L⊸O)×(L⊸(O∗⊸→O))
where the main domain defined by the equation, namely domain O, is the domain of (raw) objects, × is the strict product domain constructor, and ⊸ is the records domain constructor (See [8] or [6, Chapter 6] for more details on the NOOP domain equation). The NOOP domain equation expresses the view that every object is a triple of: (1) a class signature closure (i.e., a member of domain S), (2) a fields record (i.e., a member of L⊸O), and (3) a methods record (i.e., a member of L⊸(O∗⊸→O), where ⊸→ is the strict continuous functions domain constructor, and ∗ is the finite-sequences domain constructor).
Class signatures and other related constructs are syntactic constructs that capture all nominal (i.e., class/interface/trait names) information found in objects of mainstream nominally-typed OO software [8, 6] . Class signatures formalize the informal notion of 'object interfaces' [10, 7, 6] . Embedding class signature constructs in objects of NOOP makes them nominal objects. It should be noted that consistency conditions for signature constructs in NOOP [8, Section 4] [6, Section 5.1] do not preclude a signature from directly or indirectly referring to itself in the signature of a field or of a method parameter or method return value, so as to allow for self-referential types (see Section 3.)
A comparison of NOOP to SOOP reveals the following fundamental difference between the two models:
SOOP is a structural model of OOP, that, as explained by its domain equation, does not include nominal information into its objects. As such, SOOP views objects as being essentially records (of functions) [22, p.3] . Due to the lack of nominal information, the definitions of types of objects and of subtyping, based on SOOP, are also structural definitions, i.e., ones that can only respect object structures but that cannot respect the behavioral contracts maintained by objects that are associated with their type names.
NOOP is a nominal model of OOP, that, via the S component (for signatures) of its domain equation, includes full nominal information into its objects . As such, NOOP views objects as records (of fields and methods) accompanied by nominal information referencing the behavioral contracts maintained by the fields and methods of the objects. The definition of types of objects and of subtyping, based on NOOP, can thus be nominal ones, i.e., ones which can respect behavioral contracts associated with type names in addition to respecting object structures.
In the comparison of NOOP to SOOP it should also be noted that the 'Inheritance ⇔ Subtyping' ('inheritance is subtyping') theorem of NOOP ( [8, Sectionï¿œ5.3] ), stating the identification of type inheritance with subtyping in nominally-typed OOP, is very similar to Cardelli's 'Semantic Subtyping' theorem ( [22, Sectionï¿œ11] ). Cardelli did not model recursive types, and thus did not handle recursive type expressions (which are the structural counterpart of self-referential class signatures). As such, despite the model of Cardelli being a structural model of OOP, the omission of recursive types enabled Cardelli to easily identify an inaccurate ''structural'' notion of inheritance with a structural definition of subtyping and prove their one-to-one correspondence101010In his work, Cardelli, informally and somewhat implicitly, defined inheritance as structural subtyping between (record) type expressions. Demonstrating the strong influence of functional programming on Cardelli's model, Cardelli even argued for expanding the definition of inheritance to include some notion of "inheritance" between function types (by which it seems Cardelli really meant subtyping, since Cardelli did not suggest any code sharing)..
Other tangential differences that are noted in the comparison between NOOP and SOOP include:
SOOP models records as infinite functions, with only an informal restriction on the functions that requires the functions to map a cofinite set of input labels—i.e., all but a finite number of labels—to the value wrong. NOOP, on the other hand, models the record component of objects using the ⊸ ('rec') domain constructor which constructs records as tagged finite functions. Domain constructor ⊸, even though having similarity to some other earlier-developed domain constructors, was particularly developed to let NOOP model mainstream OOP more accurately. Because of using ⊸, the NOOP domain of objects formally includes no "junk" (i.e., unnecessary) infinite records as those found in the formal definition of SOOP.
Given its attempt to unify FP and OOP, SOOP allows functions as first-class values in its main domain of values. As such, SOOP is not a pure-OO model of OOP. NOOP, on the other hand, is a pure-OO model of OOP. Every value in the main domain of NOOP is an object. To model methods and records, NOOP uses functional domains, but they are used only as auxiliary domains.
Functions (used to model methods) in SOOP are unary functions that take exactly one argument—an element of domain V. SOOP thus requires 'currying' to model multi-ary functions and methods. In NOOP, on the other hand, sequences of objects are used as method arguments to model multi-ary methods more precisely (i.e., without the need for currying, which is not commonly familiar to mainstream OOP developers as it is to FP developers, and thus, inline with the previous point, also without the need for functions/methods to be first-class values).
SOOP uses the same namespace for fields and methods of records, disallowing a field in a record to have the same name as a method in the record. NOOP, on the other hand, aims to mimic mainstream OO languages more closely, and thus it uses two records as separate components inside objects to give fields and methods separate namespaces. A field and a method in a NOOP object can thus have the same name without conflict (method overloading, however, where two methods inside an object can have the same name, is supported neither by SOOP nor by NOOP).111111To put research on structural OOP on a more rigorous footing, and as a step towards the construction of NOOP, we constructed COOP— [6, Ch. 4] and [9, Sec. 4] —as a simple structural domain-theoretic model of OOP that dealt with the first three of the four tangential differences between NOOP and SOOP.
Nominal vs. Structural vs. Hybrid Typed OO Languages
It is worthy to mention here that the fundamental 'structural versus nominal' difference between SOOP and NOOP has profound implications on comparing nominally-typed OO languages to structurally-typed OO languages, and to hybrid OO languages that try or claim to support both nominal and structural typing.
First, it is clear that supporting nominal typing in an OO language with a structural view of objects is impossible, since the nominal information stripped by the structural view of objects is irrecoverable from the structure of the objects. Second, due to the association of type names to behavioral contracts, it is clear nominal typing is closer to semantic/behavioral typing than structural typing is (More discussion of contracts and semantic typing is presented in [10] ).
Thirdly, from the definition of NOOP it is clear also that, if needed, it is easy to define structural types on a domain of nominal objects. The definition of these types can be done in NOOP by ignoring nominal information, as is done in "hybrid" OO languages such as Scala, SmallTalk, Whiteoak and Unity. The definition of these structural types in this case is not the same as for an OO language based on a structural view of objects and modeled by SOOP, since objects of the defined structural types will still carry nominal information at run-time (ready to be used during software run-time, such as in type casting operations and instanceof type tests). Structural OO languages that support a structural view of objects are fundamentally different than nominal languages because objects in such languages, as modeled by SOOP, are plain records (and thus without any reference to behavioral class contracts), which is not true in OO languages that try to support both nominal and structural types.121212A further reason we do not believe hybrid languages, such as Scala [50] , SmallTalk [1] , Whiteoak [37] and Unity [45] , indeed provide true or full support for structural typing is that these languages do not quite support recursive structural types (varying between having reluctant/weak support to having no support for them at all). As discussed in Section 3, recursive types are essential for serious OO programming. As demonstrated by Cook's work (which we discuss in more detail in the next section), supporting recursive structural types (and thus fully supporting structural typing in these so-called hybrid languages) leads to undesirable consequences. The interested reader is again advised to see [10] for more details.
4.2 NOOP Compared to μSOOP
Cook built on Cardelli's work by first developing a model of untyped inheritance [28, 31] and, with others, then built a model of typed inheritance [30] . In his work, Cook took self-referential classes, and thus recursive types, in consideration, but, following the footsteps of Cardelli, Cook kept a structural view of OO typing. Thus Cook et al. concluded that 'inheritance is not subtyping' [30] .
Building on the work of Cook et al. and based on its conclusions, Bruce, in his book on the foundations of OO languages [19] , and Simons, in a series of articles on the theory of classification [58] , enforced in the PL research community the conclusion reached by Cook and his colleagues regarding breaking the relation between inheritance and subtyping (implying the superiority of a structural view of OOP in the process), even when the conclusion opposed and contradicted the intuition (and even the "conventional wisdom" [30, p.125] ) of a large section of OO developers and OO language designers. To explain the discrepancy, it was then thought that mainstream OO languages are technically deficient or flawed because, according to Cook [30] , these languages 'place restrictions on inheritance'.
Given that μSOOP (i.e., Cook et al's work) is based on that of Cardelli, the differences between NOOP and SOOP we discussed in Section 4.1 get inherited by a comparison between NOOP and μSOOP.
The main technical similarity between NOOP and μSOOP is that both models of OOP take self-referential classes, and thus recursive types, in consideration. This is also where the two models strongly disagree, since NOOP leads to a different conclusion about the relation between inheritance and subtyping than μSOOP does. This different conclusion is due to the differences in the nominal view of objects versus the structural view of th em and to the inclusion/exclusion of contracts in object typing and object subtyping, and accordingly due to the role of inheritance (and thus contracts) in deciding subtyping.
As such, in addition to the main difference with SOOP, comparing NOOP to μSOOP highlights the following four differences, which we first mention then discuss afterwards in some detail.
NOOP and μSOOP have different views of type names.
NOOP and μSOOP have different definitions of type inheritance.
NOOP and μSOOP are different as to the uniformity of their inheritance models at the object level and at the type level.
NOOP and μSOOP are different as to the simplicity of the mental model they present to developers during the OO software design process.
Views of type names As we discussed, in detail, in Section 3, a main difference between nominal typing and structural typing that is illustrated by comparing NOOP to μSOOP is how type names are viewed in nominal versus structural OO type systems, them having fixed meanings in the first, while allowing their meanings to get rebound (upon inheritance) in the latter.
Definitions of inheritance It is worthy to note that the different conclusion reached by NOOP than that by μSOOP on the relation between inheritance and subtyping is based, in particular, on how the two models differently define inheritance. Cook defines inheritance as 'a mechanism for the definition of new program units by modifying existing ones in the presence of self-reference' [28] . Cook also intentionally targets modeling the multiple levels of inheritance that take place in OOP uniformly (as we discuss below), having a single model of inheritance that models type-level inheritance and object-level inheritance. Applied to types, Cook's definition of inheritance based on a structural view of types makes type inheritance 'a mechanism for the definition of new record type expressions by modifying existing ones, in the presence of 'self-type' '. On the other hand, for the purpose of modeling nominally-typed mainstream OOP with a nominal view of types (as in NOOP), Cook's definition of type inheritance has to be changed to 'a mechanism for the definition of new class signatures by adding member (i.e., field and method) signatures to an explicitly-specified set of existing class signatures.'
In contrast to Cook's structural definition of type inheritance, the nominal definition of type inheritance, first, disregards self-types as having relevance in the definition, in agreement with the intuitions of mainstream OO developers about the inheritance of class signatures (where it is implied that nominal typing, with its fixed bindings of type names, only presents an approximation to self-types). Secondly, also in agreement with intuitions of mainstream OO developers, the nominal definition of type inheritance stresses explicitness in specifying inheritance, making inheritance an intended relation that is based on behavioral contracts and structure, not an accidental relation based only on structure.
Uniformity of inheritance models Structurally-typed OOP, as modeled by μSOOP, uniformly applies the same model of inheritance (i.e., Cook's model [28] ) at the level of values (i.e., objects) and at the level of types. Using the same model at both levels requires rebinding the self-variable, at the value level, and rebinding of the self-type-variable, at the type level, upon inheritance. Nominally-typed OOP, and thereby NOOP, on the other hand, uses two different models of inheritance, one at the level of values (i.e., objects) and another at the level of types. The model of inheritance at the level of values used in nominally-typed OOP (the model of [28] applies well) allows for rebinding the self-variable upon inheritance. At the level of types, however, a different model where type names do not get rebound is used by nominally-typed OOP, since there is no exact notion of a self-type-variable in nominally-typed OO languages (but only an approximation to it, using a superclass name, is available, as we explain in Section 3).
As such, while the model of inheritance used in μSOOP uniformly applies to object-level inheritance and type-level inheritance, we can see that the models of inheritance used in NOOP reflect the non-uniformity of inheritance models in mainstream nominally-typed OOP, where a different model (and thus a different definition of inheritance) is used at the object level than that at the type level.
Economy of OO software design conceptual model Agreeing with the intuitions and conventional wisdom of mainstreaom OOP software developers and OOP language designers, NOOP proves that 'inheritance is subtyping' [6, 8, 25] , i.e., that there is a one-to-one correspondence between OO type inheritance and OO subtyping, while μSOOP breaks the correspondence and proves that 'inheritance is not subtyping' [30, 19, 58] . Splitting inheritance from subtyping, as μSOOP necessitates, requires a structurally-typed OOP developer to keep two hierarchies in mind when developing his software, namely, the inheritance hierarchy and the subtyping hierarchy131313Bruce, in an attempt to address this issue, suggested that OO languages replace subtyping with 'match-bounded polymorphism' (which is a simplification of F-bounded polymorphism [20, 12] ) then identify type inheritance with matching. Matching [18] , upon which match-bounded polymorphism depends, however, uses subtyping in its definition. As such, match-bounded polymorphism is not truly a full replacement of subtyping, since developers still need to understand subtyping to be able to understand matching. Having a non-simple mental model of OOP, due to insisting on maintaining the split between subtyping and inheritance, creates significant conceptual problems when designing OO software. We speculate that this led Bruce's suggested language extensions on matching to not gain traction or support in mainstream OO languages..
This complexity, and the disregard of class contracts in deciding subtyping, creates significant problems from the perspective of OO program design (See [10] ). Respecting semantic class contracts in subtyping (thereby maintaining the identification of inheritance with subtyping) allows nominally-typed OOP developers on the other hand to reason about their software more readily and to keep only one hierarchy in mind while developing their software, leading to a simpler more economic software design conceptual model.
Table 1 summarizes the similarities and differences between NOOP, SOOP and μSOOP.
SOOP μSOOP NOOP
(Cardelli; 1980s) (Cook et al; 1990s) (AbdelGawad; 2010s)
Structural model; Structural model; Nominal model;
Nominal Info. Class names info. Class names info. Full class names info.
missing from objects missing from objects included in objects
Object Types Structural (reflect Structural (reflect Nominal (reflect struc.
only object structure) only object structure) and assoc. contracts)
Recursive Types Excluded Included Included
View of Shortcuts. Self-ref. Shortcuts. Self-ref. Associated with public
Type Names not considered gets rebound contracts. No rebinding
Inheritance Redefine inheritance Same rebinding Object level: Re-
Models as non-recursive model at object binding. Type
structural subtyping level and type level level: No rebinding
Type Inheritance Structural Structural Nominal
Conceptual Inher. = Subty. Inher. ≠ Subty. Inher. = Subty.
Table 1: SOOP vs. μSOOP vs. NOOP
5 Concluding Remarks and Future Work
The identification of types with behavioral contracts, and of subtyping with the inheritance and possible narrowing of contracts, makes nominal typing and nominal subtyping in nominally-typed OOP closer to semantic typing and semantic subtyping. Based on noting that, in this paper we compared a nominally-typed domain-theoretic model of OOP to the most well-known structurally-typed models. Our comparison has shown that nominally-typed models and structurally-typed models of OOP lead to different views of fundamental notions of object-oriented programming, namely objects, type names, class types, subtyping and the relation between subtyping and inheritance.
In particular, our comparison highlights that in nominally-typed OOP
An object should not be mathematically viewed as merely a records of its members (i.e., its fields and methods) but rather as a record together with nominal information that is associated with class contracts that the object maintains—this information being carried along with the record, behaviorally constraining its members,
A class type should not be viewed as a record type but rather as a record type that additionally respects behavioral contracts associated with nominal information embedded in elements of the type (i.e., its objects), and
Inheritance is correctly identified with nominal subtyping, i.e., that in pure nominally-typed OOP inheritance is subtyping.
We believe the development of NOOP, and the mathematical comparison presented in this paper, are significant steps in providing a full account of the relation between nominal and structural OO type systems.
Further, we hope that having a more accurate mathematical view of nominally-typed OO software presents programming languages researchers with better chances for progressing mainstream OO programming languages. For example, generics ( [38, 3, 50] ) add to the expressiveness of type systems of nominally-typed OO programming languages ( [13, 11, 16, 40] ). As hinted to earlier, we believe that F-bounded generics offer better support for binary methods in nominally-typed OO languages while maintaining the benefits of nominal typing. Building a domain-theoretic model of generic nominally-typed OOP, akin to NOOP, and comparing it to domain-theoretic models of polymorphic structurally-typed OOP, can as such offer better chances for having a deeper understanding of features of generic mainstream OO languages such as generic binary methods, variance annotations (such as Java wildcards), Java erasure, polymorphic methods, and generic type inference.
The author expresses his gratitude and appreciation to Professor Robert "Corky" Cartwright for the discussions we had and the guidance he gave that helped in developing and reaching some of the conclusions in this paper, and to Professor Benjamin Pierce for the feedback he offered on motivating and presenting NOOP.
[1] ANSI Smalltalk Standard. 1998.
[2] ISO/IEC 14882:2011: Programming Languages: C++. 2011.
[3] C# language specification, version 5.0. http://msdn.microsoft.com/vcsharp, 2015.
[4] Martin Abadi and Luca Cardelli. A semantics of object types. In Proc. LICS'94, 1994.
[5] Martin Abadi and Luca Cardelli. A Theory of Objects. Springer-Verlag, 1996.
[6] Moez A. AbdelGawad. NOOP: A Mathematical Model of Object-Oriented Programming. PhD thesis, Rice University, 2012.
[7] Moez A. AbdelGawad. An overview of nominal-typing versus structural-typing in object-oriented programming (with code examples). Technical report, arXiv.org:1309.2348 [cs.PL], 2013.
[8] Moez A. AbdelGawad. A domain-theoretic model of nominally-typed object-oriented programming. Journal of Electronic Notes in Theoretical Computer Science (ENTCS), DOI: 10.1016/j.entcs.2014.01.002. Also presented at The 6th International Symposium on Domain Theory and Its Applications (ISDT'13), 301:3–19, 2014.
[9] Moez A. AbdelGawad. Domain theory for modeling oop: A summary. Technical report, arXiv.org:1406.7497 [cs.PL], 2014.
[10] Moez A. AbdelGawad. Why nominal-typing matters in OOP. In Submitted for publication in Onward! Essays, 2016.
[11] Ole Agesen, Stephen N Freund, and John C Mitchell. Adding type parameterization to the Java language, 1997.
[12] Paolo Baldan, Giorgio Ghelli, and Alessandra Raffaeta. Basic theory of f-bounded polymorphism. Information and Computation, 153(1):173–237, 1999.
[13] Joseph A. Bank, Barbara Liskov, and Andrew C. Myers. Parameterized types and Java. Technical report, 1996.
[14] John Boyland and Giuseppe Castagna. Parasitic methods: An implementation of multi-methods for Java. In OOPSLA, 1997.
[15] G. Bracha and D. Griswold. Strongtalk: typechecking Smalltalk in a production environment. In OOPSLA'93, pages 215–230, 1993.
[16] Gilad Bracha, Martin Odersky, David Stoutamire, and Philip Wadler. Making the future safe for the past: Adding genericity to the Java programming language. In Craig Chambers, editor, ACM Symposium on Object-Oriented Programming: Systems, Languages and Applications (OOPSLA), volume 33, pages 183–200, Vancouver, BC, October 1998. ACM, ACM SIGPLAN.
[17] K. Bruce, A. Schuett, R. van Gent, and A. Fiech. PolyTOIL: A type-safe polymorphic object-oriented language. ACM Transactions on Programming Languages and Systems, 25(2):225–290, 2003.
[18] Kim Bruce, Luca Cardelli, Giuseppe Castagna, The Hopkins Objects Group, Gary Leavens, and Benjamin C. Pierce. On binary methods. Theory and Practice of Object Systems, 1994.
[19] Kim B. Bruce. Foundations of Object-Oriented Languages: Types and Semantics. MIT Press, 2002.
[20] Peter S. Canning, William R. Cook, Walter L. Hill, J. Mitchell, and W. Olthoff. F-bounded polymorphism for object-oriented programming. In Proc. of Conf. on Functional Programming Languages and Computer Architecture, 1989.
[21] Luca Cardelli. A semantics of multiple inheritance. In Proc. of the internat. symp. on semantics of data types, volume 173, pages 51–67. Springer-Verlag, 1984.
[22] Luca Cardelli. A semantics of multiple inheritance. Inform. and Comput., 76:138–164, 1988.
[23] Luca Cardelli. Structural subtyping and the notion of power type. In ACM Proceedings of POPL, 1988.
[24] Luca Cardelli, James Donahue, Lucille Glassman, Mick Jordan, Bill Kalsow, and Greg Nelson. Modula-3 Report (Revised), volume 52. Digital Systems Research Center, 1989.
[25] Robert Cartwright and Moez A. AbdelGawad. Inheritance Is subtyping (extended abstract). In The 25th Nordic Workshop on Programming Theory (NWPT), Tallinn, Estonia, 2013.
[26] C. Chambers. Object-oriented multi-methods in Cecil. In ECOOP, 1992.
[27] C. Clifton, T. Millstein, G. Leavens, and C. Chambers. MultiJava: Design rationale, compiler implementation and applications. ACM Transactions on Programming Languages and Systems, 28(3):517–575, 2006.
[28] William R. Cook. A Denotational Semantics of Inheritance. PhD thesis, Brown Univ., 1989.
[29] William R. Cook. On understanding data abstraction, revisited. volume 44, pages 557–572. ACM, 2009.
[30] William R. Cook, Walter L. Hill, and Peter S. Canning. Inheritance is not subtyping. In POPL'90 Proceedings, 1990.
[31] William R. Cook and Jens Palsberg. A denotational semantics of inheritance and its correctness. In ACM Symposium on Object-Oriented Programming, Systems, Languages and Applications (OOPSLA), pages 433–444, 1989.
[32] Sophia Drossopoulou, Susan Eisenbach, and Sarfraz Khurshid. Is the java type system sound? TAPOS, 5(1):3–24, 1999.
[33] Robert Bruce Findler, Matthew Flatt, and Matthias Felleisen. Semantic casts: Contracts and structural subtyping in a nominal world. In ECOOP 2004–Object-Oriented Programming, pages 365–389. Springer, 2004.
[34] K. Fisher and J. Reppy. The design of a class mechanism for Moby. In PLDI, 1999.
[35] Matthew Flatt, Shriram Krishnamurthi, and Matthias Felleisen. Classes and mixins. In Proceedings of the 25th ACM SIGPLAN-SIGACT symposium on Principles of programming languages, pages 171–183. ACM, 1998.
[36] Matthew Flatt, Shriram Krishnamurthi, and Matthias Felleisen. A programmer's reduction semantics for classes and mixins. In Formal syntax and semantics of Java, pages 241–269. Springer, 1999.
[37] J. Gil and I. Maman. Whiteoak: Introducing structural subtyping in Java. In OOPSLA, 2008.
[38] James Gosling, Bill Joy, Guy Steele, Gilad Bracha, and Alex Buckley. The Java Language Specification. Addison-Wesley, 2014.
[39] Ben Greenman, Fabian Muehlboeck, and Ross Tate. Getting f-bounded polymorphism into shape. In Proceedings of the 35th ACM SIGPLAN Conference on Programming Language Design and Implementation, PLDI'14, 2014.
[40] Atsushi Igarashi, Benjamin C. Pierce, and Philip Wadler. Featherweight Java: A minimal core calculus for Java and GJ. ACM Transactions on Programming Languages and Systems, 23(3):396–450, May 2001.
[41] X. Leroy, D. Doligez, J. Garrigue, D. Rémy, and J. Vouillon. The Objective Caml system. Available at http://caml.inria.fr/.
[42] David B. MacQueen. Should ML be object-oriented? Formal Aspects of Computing, 13:214–232, 2002.
[43] David B. MacQueen, Gordon D. Plotkin, and R. Sethi. An ideal model for recursive polymorphic types. Information and Control, 71:95–130, 1986.
[44] Boris Magnusson. Code reuse considered harmful, 1991.
[45] Donna Malayeri and Jonathan Aldrich. Integrating nominal and structural subtyping. In ECOOP 2008–Object-Oriented Programming, pages 260–284. Springer, 2008.
[46] Donna Malayeri and Jonathan Aldrich. Is structural subtyping useful? an empirical study. In ESOP, 2009.
[47] Erik Meijer and Peter Drayton. Static typing where possible, dynamic typing when needed: The end of the cold war between programming languages. In OOPSLA, 2004.
[48] R. Milner, M. Tofte, R. Harper, and D. MacQueen. The Definition of Standard ML (Revised). MIT Press, 1997.
[49] Tobias Nipkow and David Von Oheimb. Javalight is type-safe–definitely. In Proceedings of the 25th ACM SIGPLAN-SIGACT symposium on Principles of programming languages, pages 161–170. ACM, 1998.
[50] Martin Odersky. The scala language specification, v. 2.9. http://www.scala-lang.org, 2014.
[51] Klaus Ostermann. Nominal and structural subtyping in component-based programming. Journal of Object Technology, 7(1):121–145, 2008.
[52] Benjamin C. Pierce. Types and Programming Languages. MIT Press, 2002.
[53] Benjamin C. Pierce. Types and programming languages: The next generation. LICS'03, 2003.
[54] Harry H Porter III. Separating the subtype hierarchy from the inheritance of implementation. Journal of Object-Oriented Programming, 4(6):20–29, 1992.
[55] Bernhard Reus. Class-based versus object-based: A denotational comparison. Algebraic Methodology And Software Technology, Lecture Notes in Computer Science, 2422:473–488, 2002.
[56] Bernhard Reus. Modular semantics and logics of classes. In Computer Science Logic, volume 2803, pages 456–469. Springer, 2003.
[57] Bernhard Reus and Thomas Streicher. Semantics and logics of objects. Proceedings of the 17th Symp. on Logic in Computer Science (LICS 2002), pages 113–122, 2002.
[58] Anthony J. H. Simons. The theory of classification, part 1: Perspectives on type compatibility. Journal of Object Technology, 1(1):55–61, May-June 2002.
[59] Kresten Krab Thorup and Mads Torgersen. Unifying genericity. In ECOOP 99–Object-Oriented Programming, pages 186–204. Springer, 1999.
Generated by LaTeXML
Want to hear about new tools we're making? Sign up to our mailing list for occasional updates.
If you find a rendering bug, file an issue on GitHub. Or, have a go at fixing it yourself – the renderer is open source!
For everything else, email us at [email protected].
A project from Replicate, with help from LaTeXML. Contribute on GitHub. Latest papers.


This connects the hard drive to the logic board.
Disconnect the sleep light and IR sensor cable from the orange hard drive ribbon cable.
Lift the hard drive out of the computer and disconnect the orange ribbon cable from the drive.


The Beaumont is the first hotel from Corbin & King, the highly regarded restauranteurs behind The Wolseley, The Delaunay and a number of other leading restaurants in the capital.
When Corbin & King Hotels partnered with Grosvenor to renovate the original Grade II listed building and restore it to its former glory, we were awarded the opportunity to design and build the website for the hotel. The brief was simple - deliver a conversion-focussed website that helped to maximise occupancy and tell the unique story of the hotel; grand in style yet intimate whilst reflecting the pre-war elegance and Art Deco style of the 1920's.
Matching people up with their perfect Martini.
We worked closely with Open Table's API team to deliver a custom booking engine for Caprice Holdings.


4.6 out of 5 based on 111296 user ratings.
Kurdsat Broadcasting Corporation (Kurdish: کوردسات Kurdsat) is the second Kurdish language satellite television station in Iraqi Kurdistan, broadcasting since 2000. It belongs to the Patriotic Union of Kurdistan (PUK) and is based in Sulaymaniyah.
The channel broadcasts programmes in Kurdish language. Other languages such as Persian and Arabic are also used in some programmes. First established following the Gulf War, Kurdsat was among the Kurdish satellite stations in Kurdistan. Kurdsat maintains a website for recent news and commentaries in Kurdish, Arabic and English.


The Doctor Who F.A.N. Project brings you the first story and introduction of an original companion, as she meets The Tenth Doctor (as played by David Tennant) whilst following the trail of a killer, that can surely only end in her death?
We would love to here your feedback! Please do tell us what you think by just commenting below.
Finished reading it a few minutes ago. It certainly was a good series opener and if i'm right I noticed a few plot threads being seeded as well.
Well done on capturing the Tenth Doctor's personality as well. Although I am wondering whereabouts this fits in the Tenth Doctor's timeline (between Rose/Martha, Martha/Donna or when the Doctor was just wondering around on his own).
Will certainly be reading next weeks and looking forward to seeing how it goes from there.


Airbus - a major source of work for aerospace firms in the West Midlands - has asked the UK for funding to develop its new A350 airliner, despite US warnings that the move could trigger a transatlantic trade war with Europe.
The US pulled out of a 1992 bilateral aviation trade agreement last year under which Airbus tapped European governments for a third of development funding for new aircraft in the form of launch aid.
Washington also filed a complaint with the World Trade Organisation as a warning against Airbus again receiving such loans, which it sees as unfair subsidies.
"It would have gone in about five weeks ago," Airbus UK spokesman Howard Berry said of the latest launch aid application to the UK government. "We're keen to get a decision by mid-June," he added.
A decision would coincide with the Paris Air Show - the industry's largest - where the rivalry between the world's biggest plane makers Airbus and Boeing takes centre stage.


"BRIDES OF HERCULANEUM" (detail), BY SILVANA LACRETA RAVENA.
Making online purchases doesn't offer the same tangible experience as seeing an artwork in a gallery or shopping in a store. We are aware that it can be hard to determine whether an item is right for you, so we are happy to answer questions about any of our artworks before you make a purchase. Please don't hesitate to contact us at: studio@silvanalacretaravena.com.
By Silvana LaCreta Ravena will accept returns for regular priced items within 14 days of the order date for refunds. All goods must be unworn and in perfect condition.
All reduced price sales are final. We do not accept returns or exchanges.


11b/ g at Newegg with the best price fast shipping top- rated. We would like to show you a description here but the site won' t allow us.
The setup CD is lost misplaced not available. Get help support for all Linksys products including routers range extenders. Linksys drivers cd for wrt54gx2 setup.
I have flashed a TL- WR841N V10 with Chaos Calmer 15. Linksys drivers cd for wrt54gx2 setup. 1 but when I try to install coovachilli it runs out of disk space.
Some manufacturers update the drivers for their old products too. I have managed to setup build root and created custom firmware.
It' s too bad Linksys hasn' t gone back to address the DFS issue. To be precise I' m using DESIGNATED DRIVER ( Bleeding Edge r47278). See linksys official website for xp driver of ur router model. " download the installation wizard! For advanced users you may follow the instructions in this chapter then configure the Router through its Web- based Utility ( refer to " Chapter 5: Configuring the Wireless- G Broadband Router" ). › Linksys Wireless Router Manuals you do not need CD you. These instr uctions should be all you need to get the most out of the.
The content of this. We would like to show you a description here but the site won' t allow us.
SCSI removable disk + mwifiex_ sdio mmc0: 0001: 1: Failed to get firmware. Topic: Linksys 1900acs Can' t revert to factory firmware.
Edit: Just noticed that the " global" settings are set to country 98. How do I manually install a Linksys adapter? Im going to use on the netflex move box which has a built in wifi and also on two wire computers. 1 and your good to go! Cd ~ / whiterussian/ mmc wget wget dk/ Makefile. Wizard on the Setup CD- ROM then use the instructions in this Guide to help you connect the Router, set it up configure it to bridge your different networks.
Linksys drivers cd for wrt54gx2 setup. Hi guys just got this router it missing the setup cd where can i get one how to download one. If you have the CD that comes with the adapter then you can try uninstall Linksys software and install only the drivers of the adapter. When the Welcome screen appears click Exit. SRX200 Overview Linksys recommends using the Setup Wizard on the Setup CD- ROM for first- time installation of the Router. I haven' t look at the Linksys/ Cisco sources yet and I am yet to find a reasonable.
Making this router truly opensource releasing current drivers c 20 . Just installed a new OS on my desktop ive searched all over the internet , cant find the linksys setup CD everyone says " just access the settings with the 192. Is the recognized global leader in VoIP Ethernet networking for home, Wireless , SOHO ( Small Office, Home Office) small business users. To re- install the Drivers insert the Linksys Setup CD into your CD- ROM drive. Git checkout c99746677b75d23c80572ce99b893fb6e2ce01e0 cd. Downloads reset help, answers to top ee Download Linksys WRT54GX2 Driver ( Network Card) Linksys, warranty, set- up Inc.
Linksys drivers cd for wrt54gx2 setup. I just recently got a wrt54gx2 wireless router and I am trying to install the software from the cd that came with the router but I can' t get the set- up passed step 1 because it won' t display the next button!
Buy Linksys Wireless- G Broadband Router With SRX200 WRT54GX2 IEEE 802. 1 Answer How to install linksys router WRT54GX2 with no CD? Remove the Linksys Adapter and un- install the Linksys Software from Programs menu. Linksys WRT54GX2 Wireless- G Broadband Router With SRX200 IEEE 802.
3 / 3u, IEEE 802. Trying to install Linksys wrt54gx2 srx200 on my vista computer.
- 2 18 sdhci- pltfm: SDHCI platform , 12 + 2 OF driver helper NET:. Run ' make menuconfig' and select Kernel Configuration / Device Support - > < * > VFAT. Linksys WRT54GL mmc.
As far as I understand the current switch configuration the ports of the. Click on Locate and install driver software ( recommended). But a router doesn' t need drivers not even the setup CD .
I would like to know how to create a driver for openwrt from linux source code. On an older version of. Up to 54Mbps Wireless Da. Edit2: Kernel version mwlwifi ( wifi driver) version cfg80211 version.


"Just to stress that during this campaign most media organisations are of a generally anti-UKIP disposition. The Express group of newspapers (Daily Express, Sunday Express, Daily Star, Daily Star Sunday) is the only national newspaper group that is generally sympathetic in its coverage. Many broadcasters are also drawn from social backgrounds in which UKIP supporters are to say the least thin on the ground.
Therefore if you as a candidate get approached by a national media representative you should realise that they may well be seeking to create division or otherwise damage our efforts to maximise support. So don't get bounced into saying things that will give them ammunition to use against our party.
There was, for instance, a big media effort to divide us over Nigel's comments on health tourism and HIV. The party generally held together extremely well and then, lo and behold, a YouGov poll found that half the country agreed with what Nigel had said (including 89% of UKIP-minded voters).


Peru's Machu Picchu got voted Best Landmark 2016 on Tripadvisor!
Home > News about Cusco > Peru's Machu Picchu got voted Best Landmark 2016 on Tripadvisor!
During the Travelers'Choice Awards 2016 on Tripadvisor the famous historic site of Machu Picchu in Peru has been voted Best Landmark.
The minister of Foreign Trade and Tourism proudly announced that the World Wonder in Peru has earned millions of votes from TripAdvisor's digital users. And therefore earned the first place in the top 25 world's best landmarks.
Peru's Machu Picchu managed to defeat the other participants for best landmark such as Ankor Wat in Cambodia, Sheikh Zayed Grand Mosque Center in the United Arab Emirates, St. Peter's Basilica in Italy, the Taj Mahal in India and many others.
Because of its importance, international media outlets such as the Daily Mail in the UK, Malay Mail Online in Malaysia and La Republica in Italy have highlighted the ancient Inca city's historic, natural and cultural values.
The Peruvian minister stated that she expects this recognition by TripAdvisor to contribute to the tourism of Peru.
TripAdvisor is the world's top travel site, it enables travellers to book and plan the perfect trip.
The website hosts the largest travel community in the world, it reaches monthly about 340 million visitors, and it generates 350 million reviews and opinions about more than 6, 5 million accommodations, attractions and restaurants. And the site operates in 48 markets across the world.


Lichi Translations is a professional translation agency that offers a wide range of services and solutions in all areas related to doing business in a foreign language.
To get a free one page sample and/or a quote, kindly contact us via the registration form or by phone.
Handle Volumes / Tough Deadlines!


text:
TwiceHeroes.com Nisei Veterans of WWII and Korea
Twice Heroes
Order by Mail
Texas loses its favorite author
The fellow staring at my lens is John Graves, a WWII Marine, retired rancher and Texas' most beloved writer. That last is not my opinion, many in the Lone Star State will say so, including former first lady (and librarian) Laura Bush. He is best known for Goodbye to a River, which has never been out of print since it was first published in 1957.
Are we related? No and yes. No clear connection we can point to, but Graves is not an uncommon name, and he told me we probably are, way back. Although my dad's from Tennessee and John's from Texas, people keep moving west, he said, looking for a new opportunity or abandoning the last one that didn't work out. My dad left Tennessee as soon as he could and followed his older brother west to California, for instance, before the Army sent him two steps back to New Jersey before sending him overseas in 1943.
John Graves was a young Marine lieutenant in the Pacific and was wounded on Saipan. He recovered well but lost sight in one eye. I asked him if it affected his marksmanship (a Graves point of pride) and he admitted it did. Like many others, the GI Bill allowed him to continue his education, which he did at Columbia University, earning a master's degree. It was the 1950s. He traveled to Europe when it was cheap and led the life of a young American writer abroad at the same storied time as Hemingway and others. He wrote and for a while sailed the Meditteranean in his own boat--something I found unusual for a man growing up far from the coast. Europe was cheap then, even so, writing is rarely a profitable pursuit. The disability payment for his wounds must have helped pay his way until his career was established.
We met only one time, but we wrote back and forth; I always began my letters, "Dear Cousin John." He was amused but not truly comfortable with that. I bought every book he published and sent them to Texas for him to sign and mail back to me. My collection is small but very valuable to me.
Graves passed away Wednesday at age 92. I suppose the family is gathering at the ranch this weekend. I'll think about a good time to give them a call.
From Korea 60 Years later: Thank you
Korea, the "Forgotten War," was remembered Saturday, the 60th Anniversary of the armistice between North and South Korea, with the dedication of a Korean War Memorial site at the Presidio of San Francisco. Well over 100 people rose early to brave San Francisco's summer cool and fog to attend the site overlooking the Golden Gate Bridge. Noise from construction of a new bridge approach sometimes interrupted the ceremony, and traffic below the site produced a constant hum, a reminder that even at the Memorial, and the Civil War-era Golden Gate National Cemetery beyond it, time marches on.
Many who gathered shared a lot of gray hair. There were two wheelchairs, a few walkers and many canes. Red, Marine Corps caps punctuated the otherwise dark and somber jackets and overcoats. The South Korean veterans present displayed their medals. News reporters and cameramen were there in force, but fewer children. Two little ones belonged to San Francisco Supervisor Mark Farrell, who spoke about the memorial. (We in San Francisco have supervisors instead of city council members.) Another speaker was former U.S. Congressman Pete McCloskey, who was awarded the Navy Cross, Silver Star and two Purple Hearts as a Marine rifle platoon leader in Korea. He now leads The Korean War Memorial Foundation as its president. Consul General Han Dong-man of the Republic of Korea thanked the veterans present -- and America -- for his country's freedom and prosperity. Korean school kids sent the veterans here a bedsheet, hand lettered with their thanks and good wishes for old men who left their blood on Korean soil decades ago. American suffered over 33,000 killed in action. Another 7,000 are still missing.
Retired USMC Lt. Col. John Stevens (second from left in photo), spoke about the price paid for freedom, and said it was worth it to see a thriving modern South Korea, in contrast to a starving and impoverished North. Now 92 years old, a much younger Stevens led a company of Marines onto the Korean shore at Inchon. All of America's armed forces fought in the three-year war, alongside soldiers of other United Nations members, but Korea is special to the Marines, and the Chosin Reservoir is one of the most significant battles in their history.
Korean War Memorial Foundation President McCloskey is charged with raising $3.1 million for the monument and nearby landscaping. The lion's share of the money goes to the Presidio Trust for maintenance of the monument-- in perpetuity, one hopes. When contributors were asked to identify themselves, only three or four arms rose from the audience. Four donors, all on the foundation board, have contributed $280,000 of the $300,000 on hand. The Marines must now win this financial battle, or Korea may remain the Forgotten War. You can donate at http://kwmf.org/donations/
Author Tom Graves
Works to honor veterans and share their history.
He has interviewed nearly 300 veterans around the country.
Subscribe to TwiceHeroes: Nisei Veterans of WWII and Korea - Blog by Email

redpajama_set_name: RedPajamaCommonCrawl


Earned the Middle of the Road (Level 98) badge! Earned the Heavy Weight (Level 2) badge!
Earned the Verified Adventure (Level 81) badge! Earned the Middle of the Road (Level 97) badge! Earned the Draft City (Level 73) badge! Earned the Haze for Days (Level 21) badge!
Mike H.: I liked it but I see what you mean about the flavor on the back end.
Earned the Cheers to Independent U.S. Craft Breweries (Level 43) badge! Earned the Haze for Days (Level 20) badge!
Earned the Bar Explorer (Level 59) badge! Earned the Middle of the Road (Level 96) badge! Earned the For the Can (Level 40) badge!


text:
Janez Gaube, slovenski častnik - polkovnik, vojaški pilot, * 1968.

Polkovnik Gaube je pilot Pilatusa PC-9M.

Odlikovanja in priznanja
 bronasta medalja Slovenske vojske (11. maj 2000)

Sklici

Glej tudi

 seznam častnikov Slovenske vojske
 piloti Slovenske vojske

Živeči ljudje
Slovenski častniki
Slovenski vojaški piloti
Nosilci medalje Slovenske vojske
Vojaški piloti Slovenske vojske
Častniki Slovenske vojske
Gaube, Janez
Gaube, Janez

redpajama_set_name: RedPajamaWikipedia


text:
INDUSTRY PROS
Staubach
The retail services division of The Staubach Co. promoted Dan Watson to vice president of the firm's Dallas retail services office. Watson, who has been with the company since 1997, will continue to specialize in representing tenants such as Pier 1 Imports, ESPN Zone, Garden Ridge and Ultimate Electronics in the Southwest region and across the United States.
The retail services division also promoted Bob Berndt to vice president of the firm's San Francisco office. Berndt, who has been with Staubach since 1990, will continue to assist clients Barnes & Noble, AutoNation and Disney Regional Entertainment with expansion strategies.
First Commercial
David Hoffman is the new director of construction at Southfield, Mich.-based First Commercial Realty & Development. His responsibilities include supervising construction of the firm's Midwest projects. Prior to joining First Commercial, Hoffman served as construction manager for F&L Construction Corp. in Toledo, Ohio.
Westrust
David MacDonald joined Calabasas Hills, Calif.-based Westrust as a senior acquisitions manager. In his new position, MacDonald will be responsible for identifying and closing acquisitions for the firm, with a focus on acquiring land for ground-up development and value-added opportunities. Before joining Westrust, he worked for Valencia, Calif.-based The Newhall Land & Farming Co. and New York-based Deloitte & Touche.
Mid-America Real Estate Corp.
Mark Goldberg joined the investment sales group of Oakbrook Terrace, Ill.-based Mid-America Real Estate Corp. as vice president and broker of net leased property. Prior to joining Mid-America, Goldberg worked for Chicago-based Syndicated Equities.
Johnson Capital Group
Gregory Richardson is the new vice president of Irvine, Calif.-based Johnson Capital Group. Richardson, who has been with the advisory firm since 1999, will be involved in all phases of originating and closing construction, permanent, bridge and joint-venture financing for income properties.
Katz & Associates
Marlon Stone is the new director of real estate in the Chicago office of Pearl River, N.Y.-based Katz & Associates. Stone previously served as director of community center leasing for Chicago-based Horizon Group Properties and as a senior leasing representative for Chicago-based Litvin/Larue/Greenfield Inc.
The Macerich Co.
Dana Anderson, vice chairman of Santa Monica, Calif.-based The Macerich Co.'s board of directors, recently received the Distinguished Alumni Award for 2001 from the University of Kansas School of Business. Anderson has been with Macerich for 65 years and held the positions of executive vice president and COO.
Real Estate Lenders Association
Matthew Landau, a lender with New York-based Bear Stearns & Co., is the new chairman of the board of directors of the New York-based Real Estate Lenders Association (RELA). Founded in 1991, RELA is the largest lenders-only commercial real estate trade organization in the United States.
Feinblum Real Estate Inc.
Tom Sprenger, former vice president of real estate development for La-Z-Boy, is the new senior vice president at Bethpage, N.Y.-based Julius M. Feinblum Real Estate Inc. Sprenger's responsibilities include managing corporate real estate operations and assisting clients with site selection.
A fond farewell to a REIT pioneer
Sylvan Cohen, the founder and chairman of Philadelphia-based PREIT, recently died at the age of 87. The charismatic Cohen was a 1935 graduate of the University of Pennsylvania and a 1938 graduate of the University of Pennsylvania Law School. He founded PREIT in 1960, and was one of the founding members of ICSC, serving as president and in various other capacities for the organization.
A veteran of World War II, Cohen received numerous awards during his lifetime, including the Penn Alumni Award of Merit, the Law School Distinguished Service Award and The Wharton Real Estate Center Achievement Award. "Sylvan was a visionary in our business," says Ronald Rubin, PREIT's CEO. "He anticipated the future of retail real estate and acted upon his instincts. We shall terribly miss his wise counsel and dynamic nature."
TAGS: Commentary Property Management


text:
Health & Pharmaceuticals›
Pharmaceutical Products & Market
Parents' opinions on vaccination against meningococci for children in the U.S. 2017
Published by Alexander Kunst, Dec 23, 2019
This statistic shows the results of a survey conducted in the United States in 2017 on parents' opinions on vaccination against meningococci for children. Some 6 percent of respondents stated that in their opinion a vaccination against meningococci is not necessary.
The Survey Data Table for the Statista survey Birth & Parenthood in the United States 2017 contains the complete tables for the survey including various column headings.
What is your opinion on the vaccination against meningococci, which is recommended for children during the first 24 months?
Share of respondents
Exclusive Corporate Account feature
To view this statistic you need a Corporate Account, which includes the following benefits
Access to all content
Download as XLS, PPT, PNG and PDF
Detailed source and background information
$650 per month*
Number of respondents
593 respondents
US residential birth parents or partner of birth parents, who live with the child since birth; birth of the youngest child is not earlier than 2014 (max. 4 years old)
Leading pharmaceutical companies and total global vaccine revenue 2017 and 2024
New cases of measles in the U.S. 1950-2019
MMR vaccination rate among U.S. children aged 19-35 months 1994-2017
Leading five global vaccine products by revenue 2017 and 2024
Use Statista now: unlimited access to all content
Statistics on "Vaccinations in the U.S."
Global vaccination coverage in 2018, by vaccine type
Percentage of measles immunization among 1-year-olds by world region 2018
One-year-olds who have DTP3 vaccination by world region 2017
Perceived and actual number of infants with recommended vaccinations by country 2018
Vaccination coverage against influenza among older people 2017
Share of people worldwide who believed vaccines can cause autism as of 2017
Cases of infectious diseases before and after the use of vaccines U.S. 2017
New cases of hepatitis in the U.S. 1970-2017
New cases of hepatitis A and B 1970-2017
New cases of diphtheria in the U.S. 1950-2017
New cases of mumps in the U.S. 1970-2017
Share of U.S. children who received all doses of recommended vaccines 2017
Share of U.S. teenagers who had select vaccinations 2017-2018
Vaccination coverage among U.S. adolescents as of 2018, by age
Tdap vaccination rates among U.S. adolescents as of 2017, by state
MenACWY vaccination rates among U.S. adolescents as of 2017, by state
U.S. states with the lowest percent of children receiving vaccinations U.S. 2019
U.S. college students that had received select vaccinations as of fall 2018
Percentage of U.S. older people who received influenza vaccination 1997-2018
U.S. states with the highest rate of flu vaccine receiving older women 2018
Percentage of older U.S. people who received a pneumococcal vaccination 1997-2018
Number of petitions filed for injury or death caused by vaccines U.S. 1988-2020
Number of petitions filed for damages caused by vaccines U.S. 1988-2020, by outcome
Number of petitions filed per year for damages caused by vaccines U.S. 1988-2020
U.S. adult thoughts on the importance of vaccines to societal health as of 2018
Confidence in vaccination recommendations and approvals in the U.S. in 2008 and 2018
U.S. adults who felt they benefited from vaccines as of 2008 and 2018
Opinions on the importance of childhood vaccinations in the U.S. as of 2018
Opinions on the importance of childhood vaccinations in the U.S. 2008 vs. 2018
Opinions on risk from unvaccinated children in the U.S. as of 2018
Share of U.S. teenagers who had an HPV vaccination 2018, by gender
HPV vaccine coverage among U.S. male adolescents as of 2018, by age
HPV vaccine coverage among U.S. female adolescents as of 2018, by age
Share of U.S. teenagers who had an HPV vaccination 2017, by poverty level
HPV vaccination rates among U.S. adolescents as of 2017, by state
Parents' opinions on vaccination against pneumococci for children in the U.S. 2017
Parents' opinions on vaccination against hepatitis B for children in the U.S. 2017
Parents' opinions on vaccination against tetanus for children in the U.S. 2017
Parents' opinions on vaccination against polio for children in the U.S. 2017
Parents' opinions on vaccination against rubella for children in the U.S. 2017
Parents' opinions on vaccination against Hib infection for children in the U.S. 2017
Parents' opinions on vaccination against rotavirus for children in the U.S. 2017
Parents' opinions on vaccination against mumps for children in the U.S. 2017
Parents' opinions on vaccination against measles for children in the U.S. 2017
Parents' opinions on vaccination against chickenpox for children in the U.S. 2017
Parents' opinions on vaccination against pertussis for children in the U.S. 2017
Parents' opinions on vaccination against diphtheria for children in the U.S. 2017
Children: vaccination against measles at age 1 in 2018
Italy: factors leading parents to vaccinate their children against HPV 2019
Italy: factors leading to disinterest towards HPV vaccination 2019
Italy: doctors informing parents on vaccines and procreative ability 2018
Italy: parents being advised not to vaccinate their children against HPV 2017-2019
Deaths due to lack of vaccination
Strong support for mandatory flu-shots for professions in Canada 2016
Vaccine Industry in China Vaccine hesitancy in the U.S. Vaccinations in Canada Vaccinations in the U.S. Pharmaceutical industry in Japan
Statista. (December 31, 2017). What is your opinion on the vaccination against meningococci, which is recommended for children during the first 24 months? [Graph]. In Statista. Retrieved January 22, 2020, from https://www.statista.com/forecasts/991111/parents-opinions-on-vaccination-against-meningococci-for-children-in-the-us
Statista. "What is your opinion on the vaccination against meningococci, which is recommended for children during the first 24 months?." Chart. December 31, 2017. Statista. Accessed January 22, 2020. https://www.statista.com/forecasts/991111/parents-opinions-on-vaccination-against-meningococci-for-children-in-the-us
Statista. (2017). What is your opinion on the vaccination against meningococci, which is recommended for children during the first 24 months?. Statista. Statista Inc.. Accessed: January 22, 2020. https://www.statista.com/forecasts/991111/parents-opinions-on-vaccination-against-meningococci-for-children-in-the-us
Statista. "What Is Your Opinion on The Vaccination against Meningococci, Which Is Recommended for Children during The First 24 Months?." Statista, Statista Inc., 31 Dec 2017, https://www.statista.com/forecasts/991111/parents-opinions-on-vaccination-against-meningococci-for-children-in-the-us
Statista, What is your opinion on the vaccination against meningococci, which is recommended for children during the first 24 months? Statista, https://www.statista.com/forecasts/991111/parents-opinions-on-vaccination-against-meningococci-for-children-in-the-us (last visited January 22, 2020)


Yeah. I'll think about this one.
Wait, you can choose you own captain for this one? Wouldn't it make more sense to be a prisoner?
I was thinking about that. But i was not sure which alien to use. I may redo it so you are a Naucean or a Torpal prisoner and then replaced the NPC prisoners with another alien.
Now you can visit the Naucean Homeworld, Nauceanica! I tried to put in little details from my threads but there is only so much you can put in. Tell me what you think!
I updated so now you play as a Naucean prisoner. And i moved around some prisoners and added a Serlan prisoner since i loved that GS race.
I made an adventure based the Quillaran thread. Hope you guys enjoy it!
No matter how hard I try, in Prison Escape I can't get past that first damn Baobas because I can't ally with the Torpal! Sure, the Naucean can pose and sing, but the Torpal keeps dancing! Hydro, did you program the Torpal's pose/dance/sing pattern or is it random?
Its random. You should eventually get it. Or sneak past the guard, befriend another prisoner and come back for the Torpal.
- No more sneaking out, you must engage the guards to get the key to the gate as well as get past the guards at the gate.
- Minor tweaks to character emotions and stats. Ex the Trorpal is tougher while the ViS are weaker.
I made the 1st of hopefully many Sagan 4 based adventures.
I made my first in a series called "PaleoQuest". You start out as Haikouichthys.
Hope you paleontology fan enjoy it!
I think I love you Hydro!
I made my second in a series called "PaleoQuest". You start out as Cephalaspis.
Hope you paleontology fans enjoy it!


We will be just 'passing through' Rocky Mountain National Park next year and want one night's accommodation, close-ish to the park. Most places in Estes park won't allow you just one night in the summer - but I have managed to book a room at the Comfort Inn. I could get a room (brand new HIE) in Loveland though, for $100 less. Would it make an awful lot of difference? Is there anything particularly worth $100 more in Estes Park, apart from the closeness to the NP?
If you're already done with the park, Loveland is only a short drive away. Id go for the cheaper rate!
Thanks for this. What if we haven't already done with the park?? Actually, we will be on our way to it, but we'll only have time, in any case, to drive over Trail Ridge Road, as we then have to move on (long trip across country).
I must say that I'm very tempted by the new hotel at much cheaper price.
My preference would be to stay closer if possible. Loveland is almost an hour away. RMNP gets pretty crowded and busy in summer, so the earlier you get there the better - driving an extra hour in the morning just means more traffic and people to contend with in the park. Plus, if you get slightly ahead of schedule, it would be a waste to sit around in Loveland when you could be in EP and/or RMNP.
At this point, I'd keep the Comfort Inn reservation and keep looking as you have plenty of time to cancel if you find something else. Are you planning on staying on the weekend or during the week? The 2-night minimum is common on the weekends but otherwise you should be able to find something relatively cheap.
I've made the drive from Loveland to Estes many times, and it's about 40-45 minutes, depending on how traffic is through the city of Loveland. One thing to keep in mind is that it's a spectacular drive (if somewhat curvy) through the Big Thompson Canyon and you'd be better off doing it first thing in the morning to get the good light. If you're just staying in Estes only briefly, you're not missing a heck of a lot other than summer crowds. I'm voting for staying in Loveland and starting off your day's drive fresh.
"Is there anything particularly worth $100 more in Estes Park, apart from the closeness to the NP?"
We were scheduled to drive from Black Hills (where we're staying for 3 nights) to Estes Park and then down to Aspen for a night (before heading on to Moab, Monument Valley etc). But now I think that Estes Park - Aspen, taking in the Trail Ridge Road and the Independence Pass would be too much in one day. Sooo, I think we will drive Black Hills to Lovedale, stay the night there in the HIE - up nice and early to drive the Big Thompson Canyon and then through RMNP - and we'll spend the night either in Vail or Breckenridge. I like that better! Thanks!
Oh my gosh, I agree! RMNP, Trail Ridge and Independence Pass is too much for one day! That said, Independence Pass is my favorite drive. But it sounds like you intend to do it from Breck, through Twin Lakes and over the back into Aspen? I usually go the other way. I hope you're getting a chance to drive through Glenwood Canyon as well. It's really beautiful.
One thing I should have mentioned on your altitude thread is chapstick and lotion! It's very dry in CO. You'll have a great trip!
Glenwood Canyon .... just had to look it up. Along I-70. Yes, we will be doing that stretch!
There is so much more for me to check out before we finally get going. I've done the main route, but there are those little bits of pieces of road and the interesting stuff along the way, still to check out!
I think you've made some good decisions; enjoy this lovely part of the world!


text:
ABOUT IOAN
Burgeoning rapper/producer Ioan (pronounced Yo-an) Delice has been increasingly expanding New York's underground rap scene and his horizons.
Born January 13, 1994, the Brooklyn native of French/Haitian descent is inspired by an eclectic range of artists – from Hip Hop legend Big L, to France's most popular and enduring singer Charles Aznavour. As an ambassador to his generation, Ioan also pays homage to the cartoons that formed his childhood and taps the creative influence of reputable composer Jim Lang and Japanese Hip Hop producer Nujabes – who have written scores for Hey! Arnold and Samurai Champloo respectively.
Ioan's artistry also draws it's inspiration from having grown up in Kings County, widely recognized as the rap capital of the world, at a time when it's gritty reputation held true. The musician's explorations of romantic, spiritual, interpersonal, and societal themes, mixed with his playful and unorthodox style of rapping, breaks hip-hop boundaries with new artistic expression. Through his soulful meandering and multi-cultural influence, Ioan fearlessly delves into the creative process of his talent and is continuously expanding his audience by delivering songs that escape the fleet of trends.
ULTIMATELY I'M CREATING MY OWN HIP HOP VOCABULARY
CRITICAL SAMPLINGS
"Interesting name, ill project. Brooklyn artist Ioan Delice drops his new eclectic mixtape titled "#BATHWATER".
James Town
"[…] the always impressive, Ioan Delice."
"Attn HIP HOP heads! – A real dope MC out of NY, and only 19. Ioan Delice's music slaps most of these youngsters out of the game."
"[…] my personal favorite on here Ioan Delice."
Ayanna P.
"Ultimately I'm creating my own hip hop vocabulary," Ioan explains.
"My music blends different genres and different styles but is fueled by a common human factor. I believe we all have the tendency of setting out to leave our individual mark in this world, of being our best and truest selves, and of sharing Love in its highest form."


A partial knee replacement (PKR) is a wonderful surgical option for patients who have pain or damage in only one compartment of the knee and have not responded to conservative treatment. The damage most commonly is the result of osteoarthritis (OA) although there are other causes such as avascular necrosis (death of bone tissue due to a lack of blood supply). For PKR to be appropriate, the other compartments of the knee still must be healthy, any angular deformity must be passively correctable during the knee exam, and if a flexion contracture (inability to straighten the leg) exists, it must be minimal.
Orthopedic surgeons like to think about the knee joint as having three compartments: the medial compartment (inside the knee), the lateral compartment (outside the knee) and the patellofemoral compartment (in front of the knee). The most common area for degeneration to begin is in the medial compartment. Although the arthritic process typically starts in one compartment, over time it progresses to the others.
As the knee degenerates, the smooth hyaline cartilage that lines the knee joint deteriorates. This special cartilage helps remove friction, distributes the joint forces more uniformly and helps cushion the forces by acting like a shock absorber. Unfortunately, hyaline cartilage has very poor healing potential. When damaged, it heals with fibrocartilage, a different type of cartilage with different wear characteristics. Once that this special hyaline cartilage is worn or damaged, it's gone permanently.
The advantage of having PKR is that only the damaged compartment is resurfaced and the uninvolved compartments and the cruciate ligaments are not affected. This allows for a much small incision and surgical dissection, faster recovery, and many patients find that the knee feels normal after the replacement. Some think that because of the limited soft-tissue dissection, knee proprioception (the brain's ability to know and control functional joint stability) is better preserved because many of the neurologic pathways from the knee are not disrupted. Most importantly, patients tend to prefer PKR over TKR.
Despite all of these advantages, PKR represents a small percentage (approximately 7 to 8%) of the knee replacements being performed in the U.S. and throughout the world. One of the main reasons is that many patients who present with symptomatic OA are not candidates for PKR because the arthritis already is too advanced or involves too much of the knee. Also, many orthopedic surgeons simply do not perform this surgery.
Historically PKR was offered only to older patients who were not that active or not critically overweight. These restrictions no longer apply. Also in the past, PKR had a higher failure rate than TKR. PKRs are easier to revise than TKRs so surgeons have a lower threshold to revise them as compared with revising a TKR. A major reason why PKRs fail is they are less forgiving mechanically. If the weight bearing forces between the components (which now are very tiny compared to TKR components) are not centralized throughout the range of motion, then eccentric loads are created, which can lead to lift off, accelerated wear and loosening. Similarly, if the soft tissue tensions are not optimized, then the knee will not feel stable, normal knee motion will not be created and the other compartments can be overstressed, causing failure.
I offer my patients PKR when appropriate because when PKR recipients do well, they do incredibly well. They recover very quickly and they return to normal activities. The key has been selecting appropriate candidates and then performing the operation as technically perfect as possible. In that regard, robotics technology has been a game changer.
Rather than using hand-held instruments to realign and cut the bones to fit the new implants, I use a remarkably sophisticated MAKO computer that actually helps me plan and map out the bony cuts. These cuts then are refined and executed by using the MAKO robotic arm that controls a tiny precision bur. Only bone within a defined haptic space is removed, which allows the new partial knee components to fit precisely and deliver the balance and alignment I planned.
This process begins by obtaining a perfect 3-D virtual model of the hip, knee and ankle via a CAT scan. This CAT scan information is fed into the MAKO computer and a virtual reconstruction is performed before the patient even enters the OR. Once in the OR, the plan is confirmed. Infrared arrays or reflectors are placed on the femur and tibia, which wirelessly transmit information to a computer monitor. It's like having a GPS in the OR and I can see the skeleton and virtual implants in real time. Specific anatomic landmarks then are referenced or registered. These specific points on the skeleton, which I captured in space, correlate to specific points on the virtual 3-D image. When the correlation is tight enough or within a high-enough degree of probability, then we know we can work directly off the virtual image.
Next, any knee angular deformity is passively corrected and snap shots or "poses" are captured with the knee in extension, at 45 degrees of flexion, 90 degrees of flexion and full flexion. A graphic display shows pressure reading at each of these angles based on the position of the virtual implants chosen. Then, by virtually moving each implant I'm able to optimize the pressures and tracking throughout the range of motion. When the actual components are implanted, the angular correction is maintained and the pressure is optimized throughout the range of motion and the central tracking between components is assured. This is an incredibly powerful tool.
This process absolutely has given me and my patients the best and most-consistent results. When components are perfectly positioned and aligned, they have the best chance for optimal wear and longevity.
At The Leone Center for Orthopedic Care, the ultimate goal of partial (and total) knee replacement is to relieve pain, correct any deformity and help my patients restore their quality of life with pain-free walking and the ability to resume enjoyable activities. The vast majority of my patients have excellent outcomes and many return to activities such as tennis, swimming, golfing, bowling, dancing, biking, hiking and skiing.
When is Knee Replacement Surgery Right for You?
Holy cow, medical technology is freaking amazing, the ability to have a machine assist in a surgery. I wonder if this would be more precise than the human hand. I can imagine it speeding up the whole surgery too.


text:
Amalia Muñoz Altamira y Bartha (Barcelona, 1827 - Màlaga, 1910) fou una cantant catalana.

Va néixer el 26 de febrer de 1827 a Barcelona, on residien temporalment els seus pares. Era filla d'una família il·lustre de Sevilla, i des que era jove va ser assídua al teatre, on va començar a sentir passió pel cant. Per això el 1840, els seus pares van enviar-la a estudiar al Conservatori de Milà, on va ser deixebla, en matèria de cant, d'Alberto Mazzucato i Giuseppe Lamberti, i de declamació i mímica amb Francesco Jannetti, a més companya de Fortunata Tedesco i Marietta Gazzaniga, que més endavant van ser conegudes cantants.

El 1844 va debutar al Gran Teatre de Trieste. La seva actuació va fer que l'empresari Negri la contractés i la va portar els principals teatres de Llombardia i Piemont. Després va tornar a Espanya i va passar a actuar al Teatre Principal de València, contractada per l'empresari Heinrich, on va actuar amb èxit durant més d'un any. Després va actuar al Teatre del Circo de Madrid, contractada per José de Salamanca, cantant al costat del tenor Tamberlick i el baríton Ronconi, amb gran èxit. Poc després, va anar a Bilbao a cantar diverses representacions líriques en ocasió d'estar a la ciutat la reina Isabel II.

El 1846 va tornar a Milà contractada de nou per Negri i l'any següent al Teatre Imperial de Sant Petersburg, en qualitat de prima donna soprano absoluta. La seva carrera es va interrompre el 1848, quan es va casar amb el compositor espanyol Antonio José Cappa, que la va fer retirar dels escenaris, tot i que va haver de tornar a principis de 1852 a causa d'un desastre familiar. Van recórrer teatres de França, Bèlgica, Holanda i part d'Alemanya, amb un èxit igual al que havien obtingut anteriorment i va rebre el títol de cantant de cambra de l'emperador d'Àustria.

El seu repertori era molt extens, figurant en les principals òperes italianes en voga a mitjans del . Les òperes en que va sobresortir amb més ovacions van ser Lucía, Elixire, Maria di Rohan, Belisario, Linda, Barbieri, Saffo, Norma, Giovanna di Castiglia, L'Amante generoso, I Lombardi, Hernani, entre d'altres.

Referències

Sopranos barcelonines
Cantants barcelonins contemporanis
Cantants d'òpera sopranos