text:
◄ LVII - On The Trials Of Travel - LIX - On Pleasure And Joy ►
1 How scant of words our language is, nay, how poverty-stricken, I have not fully understood until today. We happened to be speaking of Plato, and a thousand subjects came up for discussion, which needed names and yet possessed none; and there were certain others which once possessed, but have since lost, their words because we were too nice about their use. But who can endure to be nice in the midst of poverty? [1] 2 There is an insect, called by the Greeks oestrus, [2] which drives cattle wild and scatters them all over their pasturing grounds; it used to be called asilus in our language, as you may believe on the authority of Vergil:-
Near Silarus groves, and eke Alburnus' shades
Of green-clad oak-trees flits an insect, named
Asilus by the Romans; in the Greek
The word is rendered oestrus. With a rough
And strident sound it buzzes and drives wild
The terror-stricken herds throughout the woods. [3]
3 By which I infer that the word has gone out of use. And, not to keep you waiting too long, there were certain uncompounded words current, like cernere ferro inter se, as will be proved again by Vergil:-
Great heroes, born in various lands, had come
To settle matters mutually with the sword. [4]
This "settling matters" we now express by decernere. The plain word has become obsolete. 4 The ancients used to say iusso, instead of iussero, in conditional clauses. You need not take my word, but you may turn again to Vergil:-
The other soldiers shall conduct the fight
With me, where I shall bid. [5]
5 It is not in my purpose to show, by this array of examples, how much time I have wasted on the study of language; I merely wish you to understand how many words, that were current in the works of Ennius and Accius, have become mouldy with age; while even in the case of Vergil, whose works are explored daily, some of his words have been filched away from us.
6 You will say, I suppose: "What is the purpose and meaning of this preamble?" I shall not keep you in the dark; I desire, if possible, to say the word essentia to you and obtain a favourable hearing. If I cannot do this, I shall risk it even though it put you out of humour. I have Cicero, [6] as authority for the use of this word, and I regard him as a powerful authority. If you desire testimony of a later date, I shall cite Fabianus, [7] careful of speech, cultivated, and so polished in style that he will suit even our nice tastes. For what can we do, my dear Lucilius? How otherwise can we find a word for that which the Greeks call οὐσία, something that is indispensable, something that is the natural substratum of everything? I beg you accordingly to allow me to use this word essentia. I shall nevertheless take pains to exercise the privilege, which you have granted me, with as sparing a hand as possible; perhaps I shall be content with the mere right. 7 Yet what good will your indulgence do me, if, lo and behold, I can in no wise express in Latin [8] the meaning of the word which gave me the opportunity to rail at the poverty of our language? And you will condemn our narrow Roman limits even more, when you find out that there is a word of one syllable which I cannot translate. "What is this?" you ask. It is the word ὄν. You think me lacking in facility; you believe that the word is ready to hand, that it might be translated by quod est. I notice, however, a great difference; you are forcing me to render a noun by a verb. 8 But if I must do so, I shall render it by quod est. There are six ways [9] in which Plato expresses this idea, according to a friend of ours, a man of great learning, who mentioned the fact today. And I shall explain all of them to you, if I may first point out that there is something called genus and something called species.
For the present, however, we are seeking the primary idea of genus, on which the others, the different species, depend, which is the source of all classification, the term under which universal ideas are embraced. And the idea of genus will be reached if we begin to reckon back from particulars; for in this way we shall be conducted back to the primary notion. 9 Now "man" is a species, as Aristotle [10] says; so is "horse," or "dog." We must therefore discover some common bond for all these terms, one which embraces them and holds them subordinate to itself. And what is this? It is "animal." And so there begins to be a genus "animal," including all these terms, "man," "horse," and "dog." 10 But there are certain things which have life (anima) and yet are not "animals." For it is agreed that plants and trees possess life, and that is why we speak of them as living and dying. Therefore the term "living things" will occupy a still higher place, because both animals and plants are included in this category. Certain objects, however, lack life, – such as rocks. There will therefore be another term to take precedence over "living things," and that is "substance." I shall classify "substance" by saying that all substances are either animate or inanimate. 11 But there is still something superior to "substance"; for we speak of certain things as possessing substance, and certain things as lacking substance. What, then, will be the term from which these things are derived? It is that to which we lately gave an inappropriate name, "that which exists." For by using this term they will be divided into species, so that we can say: that which exists either possesses, or lacks, substance.
12 This, therefore, is what genus is, – the primary, original, and (to play upon the word) "general." Of course there are the other genera: but they are "special" genera: "man" being, for example, a genus. For "man" comprises species: by nations, – Greek, Roman, Parthian; by colours, – white, black, yellow. The term comprises individuals also: Cato, Cicero, Lucretius. So "man" falls into the category genus, in so far as it includes many kinds; but in so far as it is subordinate to another term, it falls into the category species. But the genus "that which exists" is general, and has no term superior to it. It is the first term in the classification of things, and all things are included under it.
13 The Stoics would set ahead of this still another genus, even more primary; concerning which I shall immediately speak, after proving that the genus which has been discussed above, has rightly been placed first, being, as it is, capable of including everything. 14 I therefore distribute "that which exists" into these two species, – things with, and things without, substance. There is no third class. And how do I distribute "substance"? By saying that it is either animate or inanimate. And how do I distribute the "animate"? By saying: "Certain things have mind, while others have only life." Or the idea may be expressed as follows: "Certain things have the power of movement, of progress, of change of position, while others are rooted in the ground; they are fed and they grow only through their roots." Again, into what species do I divide "animals"? They are either perishable or imperishable. 15 Certain of the Stoics regard the primary genus [11] as the "something." I shall add the reasons they give for their belief; they say: "in the order of nature some things exist, and other things do not exist. And even the things that do not exist are really part of the order of nature. What these are will readily occur to the mind, for example centaurs, giants, and all other figments of unsound reasoning, which have begun to have a definite shape, although they have no bodily consistency."
16 But I now return to the subject which I promised to discuss for you, namely, how it is that Plato [12] divides all existing things in six different ways. The first class of "that which exists" cannot be grasped by the sight or by the touch, or by any of the senses; but it can be grasped by the thought. Any generic conception, such as the generic idea "man," does not come within the range of the eyes; but "man" in particular does; as, for example, Cicero, Cato. The term "animal" is not seen; it is grasped by thought alone. A particular animal, however, is seen, for example, a horse, a dog.
17 The second class of "things which exist," according to Plato, is that which is prominent and stands out above everything else; this, he says, exists in a pre-eminent degree. [13] The word "poet" is used indiscriminately, for this term is applied to all writers of verse; but among the Greeks it has come to be the distinguishing mark of a single individual. You know that Homer is meant when you hear men say "the poet." What, then, is this pre-eminent Being? God, surely, one who is greater and more powerful than anyone else.
18 The third class is made up of those things which exist in the proper sense of the term; [14] they are countless in number, but are situated beyond our sight. "What are these?" you ask. They are Plato's own furniture, so to speak; he calls them "ideas," and from them all visible things are created, and according to their pattern all things are fashioned. They are immortal, unchangeable, inviolable. 19 And this "idea," or rather, Plato's conception of it, [15] is as follows: "The 'idea' is the everlasting pattern of those things which are created by nature." I shall explain this definition, in order to set the subject before you in a clearer light: Suppose that I wish to make a likeness of you; I possess in your own person the pattern of this picture, wherefrom my mind receives a certain outline, which it is to embody in its own handiwork. That outward appearance, then, which gives me instruction and guidance, this pattern for me to imitate, is the "idea." Such patterns, therefore, nature possesses in infinite number, – of men, fish, trees, according to whose model everything that nature has to create is worked out.
20 In the fourth place we shall put "form." [16] And if you would know what "form" means, you must pay close attention, calling Plato, and not me, to account for the difficulty of the subject. However, we cannot make fine distinctions without encountering difficulties. A moment ago I made use of the artist as an illustration. When the artist desired to reproduce Vergil in colours he would gaze upon Vergil himself. The "idea" was Vergil's outward appearance, and this was the pattern of the intended work. That which the artist draws from this "idea" and has embodied in his own work, is the "form." 21 Do you ask me where the difference lies? The former is the pattern; while the latter is the shape taken from the pattern and embodied in the work. Our artist follows the one, but the other he creates. A statue has a certain external appearance; this external appearance of the statue is the "form." And the pattern [17] itself has a certain external appearance, by gazing upon which the sculptor has fashioned his statue; this is the "idea." If you desire a further distinction, I will say that the "form" is in the artist's work, the "idea" outside his work, and not only outside it, but prior to it.
22 The fifth class is made up of the things which exist in the usual sense of the term. These things are the first that have to do with us; here we have all such things as men, cattle, and things. In the sixth class goes all that which has a fictitious existence, like void, or time.
Whatever is concrete to the sight or touch, Plato does not include among the things which he believes to be existent in the strict sense of the term. [18] These things are the first that have to do with us: here we have all such things as men, cattle, and things. For they are in a state of flux, constantly diminishing or increasing. None of us is the same man in old age that he was in youth; nor the same on the morrow as on the day preceding. Our bodies are burned along like flowing waters; every visible object accompanies time in its flight; of the things which we see, nothing is fixed. Even I myself as I comment on this change, am changed myself. 23 This is just what Heraclitus [19] says: "We go down twice into the same river, and yet into a different river." For the stream still keeps the same name, but the water has already flowed past. Of course this is much more evident in rivers than in human beings. Still, we mortals are also carried past in no less speedy a course; and this prompts me to marvel at our madness in cleaving with great affection to such a fleeting thing as the body, and in fearing lest some day we may die, when every instant means the death of our previous condition. [20] Will you not stop fearing lest that may happen once which really happens every day? 24 So much for man, – a substance that flows away and falls, exposed to every influence; but the universe, too, immortal and enduring as it is, changes and never remains the same. For though it has within itself all that it has had, it has it in a different way from that in which it has had it; it keeps changing its arrangement.
25 "Very well," say you, "what good shall I get from all this fine reasoning?" None, if you wish me to answer your question. Nevertheless, just as an engraver rests his eyes when they have long been under a strain and are weary, and calls them from their work, and "feasts" them, as the saying is; so we at times should slacken our minds and refresh them with some sort of entertainment. But let even your entertainment be work; and even from these various forms of entertainment you will select, if you have been watchful, something that may prove wholesome. 26 That is my habit, Lucilius: I try to extract and render useful some element from every field of thought, no matter how far removed it may be from philosophy. Now what could be less likely to reform character than the subjects which we have been discussing? And how can I be made a better man by the "ideas" of Plato? What can I draw from them that will put a check on my appetites? Perhaps the very thought, that all these things which minister to our senses, which arouse and excite us, are by Plato denied a place among the things that really exist. 27 Such things are therefore imaginary, and though they for the moment present a certain external appearance, yet they are in no case permanent or substantial; none the less, we crave them as if they were always to exist, or as if we were always to possess them.
We are weak, watery beings standing in the midst of unrealities; therefore let us turn our minds to the things that are everlasting. Let us look up to the ideal outlines of all things, that flit about on high, and to the God who moves among them and plans how he may defend from death that which he could not make imperishable because its substance forbade, and so by reason may overcome the defects of the body. 28 For all things abide, not because they are everlasting, but because they are protected by the care of him who governs all things; but that which was imperishable would need no guardian. The Master Builder keeps them safe, overcoming the weakness of their fabric by his own power. Let us despise everything that is so little an object of value that it makes us doubt whether it exists at all. 29 Let us at the same time reflect, seeing that Providence rescues from its perils the world itself, which is no less mortal than we ourselves, that to some extent our petty bodies can be made to tarry longer upon earth by our own providence, if only we acquire the ability to control and check those pleasures whereby the greater portion of mankind perishes. 30 Plato himself, by taking pains, advanced to old age. To be sure, he was the fortunate possessor of a strong and sound body (his very name was given him because of his broad chest); [21] but his strength was much impaired by sea voyages and desperate adventures. Nevertheless, by frugal living, by setting a limit upon all that rouses the appetites, and by painstaking attention to himself, he reached that advanced age in spite of many hindrances. 31 You know, I am sure, that Plato had the good fortune, thanks to his careful living, to die on his birthday, after exactly completing his eighty-first year. For this reason wise men of the East, who happened to be in Athens at that time, sacrificed to him after his death, believing that his length of days was too full for a mortal man, since he had rounded out the perfect number of nine times nine. I do not doubt that he would have been quite willing to forgo a few days from this total, as well as the sacrifice.
32 Frugal living can bring one to old age; and to my mind old age is not to be refused any more than is to be craved. There is a pleasure in being in one's own company as long as possible, when a man has made himself worth enjoying. The question, therefore, on which we have to record our judgment is, whether one should shrink from extreme old age and should hasten the end artificially, instead of waiting for it to come. A man who sluggishly awaits his fate is almost a coward, just as he is immoderately given to wine who drains the jar dry and sucks up even the dregs. 33 But we shall ask this question also: "Is the extremity of life the dregs, or is it the clearest and purest part of all, provided only that the mind is unimpaired, and the senses, still sound, give their support to the spirit, and the body is not worn out and dead before its time?" For it makes a great deal of difference whether a man is lengthening his life or his death. 34 But if the body is useless for service, why should one not free the struggling soul? Perhaps one ought to do this a little before the debt is due, lest, when it falls due, he may be unable to perform the act. And since the danger of living in wretchedness is greater than the danger of dying soon, he is a fool who refuses to stake a little time and win a hazard of great gain. [22]
Few have lasted through extreme old age to death without impairment, and many have lain inert, making no use of themselves. How much more cruel, then, do you suppose it really is to have lost a portion of your life, than to have lost your right to end that life? 35 Do not hear me with reluctance, as if my statement applied directly to you, but weigh what I have to say. It is this, that I shall not abandon old age, if old age preserves me intact for myself, and intact as regards the better part of myself; but if old age begins to shatter my mind, and to pull its various faculties to pieces, if it leaves me, not life, but only the breath of life, I shall rush out of a house that is crumbling and tottering. 36 I shall not avoid illness by seeking death, as long as the illness is curable and does not impede my soul. I shall not lay violent hands upon myself just because I am in pain; for death under such circumstances is defeat. But if I find out that the pain must always be endured, I shall depart, not because of the pain but because it will be a hindrance to me as regards all my reasons for living. He who dies just because he is in pain is a weakling, a coward; but he who lives merely to brave out this pain, is a fool.
37 But I am running on too long; and, besides, there is matter here to fill a day. And how can a man end his life, if he cannot end a letter? So farewell. This last word [23] you will read with greater pleasure than all my deadly talk about death. Farewell.
1 This theme was emphasized by Lucretius, i. 136 and 832, and iii. 260 Munro thinks, however, that "Lucretius had too much instead of too little technical language for a poet." Seneca knew Lucretius; cf. Epp. lviii. 12, xc. 11, etc.
2 The gad-fly.
3 Georgics, iii. 146 ff.
4 Aeneid, xii. 708 f.
5 Aeneid, xi. 467.
6 Cicero usually says natura. The word, according to Quintilian, was first used by a certain Sergius Flavus. It is also found in Apulcius, Macrobius, and Sidonius.
7 See Ep. c. Papirius Fabianus, who lived in the times of Tiberius and Caligula, was a pupil of the Sextius of Ep. lix., and was (Pliny, N. H. xxxvi. 15 24) naturae rerum peritissimus. He is praised by the elder Seneca (Cont. 2 Praef.) who, however, says of him deerat robur – splendor aderat.
8 i.e., I must not use other imported words to explain essentia, which is not a native Latin word, but invented as a literal translation of οὐσία.
9 Cf. § 16.
10 Categories 2 b 11 and often.
11 i.e., the genus beyond "that which exists."
12 Cf. § 8 Plato's usual division was threefold, – αἰσθητά, μαθηματικά, εἴδη (sensibilia, mathematica, ideae), – a division which is often quoted by Aristotle.
13 Εἶναι κατ΄ ἐξοχήν. After illustrating the poet κατ΄ ἐξοχήν, Homer, he passes to τὸ ὂν κατ΄ ἐξοχήν, God.
14 Ὄντως τὰ ὄντα. "Each idea is a single, independent, separate, self-existing, perfect, and eternal essence"; Adam, The Republic of Plato, ii. 169 See Zeller's Plato (p. 237) for a list of Greek words used by Plato to indicate the reality of these ideas.
15 Cf., for example, Parmenides 132 D. What follows is not a direct quotation, and the same thought is found elsewhere.
16 Εἶδος.
17 i.e., the "original."
18 i.e., κυρίως ὄντα. See above, § 16f
19 Frag. 49ᵃ Diels² ποταμοῖς τοῖς αὐτοῖς ἐμβαίνομέν τε καὶ οὐκ ἐμβαίνομεν, εἶμέν τε καὶ οὐκ εἶμεν.
20 This idea Seneca has already developed in Ep. xxiv. 20.
21 Diogenes Laertius, iii. 1, who records also other explanations of the name Plato, which replaced the given name Aristocles.
22 Cf. Plato, Phaedo, 114 D καὶ ἄξιον κινδυνεῦσαι, οἰομένῳ οὔτως ἔχειν· καλὸς γὰρ ὁ κίνδυνος, the "chance" being immortality.
23 Since vale means "keep well" no less than "good bye."


text:
Journalism, Sex, Social Issues, Terry Mattingly, Politics
Try seeing the mirror image
A reader who is, at the moment, rather upset with the GetReligionistas sent me a story the other day that he wanted us to critique. It's from the Los Angeles Times and briefly tells the story of the LA police chief's decision to donate money to the organization that is fighting the ballot initiative against the legalization of gay marriage. It's a short story and very positive, as one would expect. This particular reader used this as an opportunity to knock this weblog's support for balanced coverage on this hottest of today's hot-button political and, yes, religious issues. Clearly, said the writer, we would be upset claim that the "author doesn't 'get religion' because she doesn't quote the pope or conservative Christians to the effect that homosexuals are horrible."
Once again, that is straw man language. But still, there is the question of what to do with this little Los Angeles Times news report. Here is the top of the piece:
LAPD Police Chief William J. Bratton has come out -- in favor of gay marriage.
As a wedding gift to friend and celebrity publicist Howard Bragman and his longtime partner, Chuck O'Donnell, Bratton made it official: He and his wife, former Court TV diva Rikki Kleiman, strongly believe that gays have a right to marry. And in honor of Bragman and O'Donnell, who wed this past week in Norwalk, the chief and Kleiman have made a donation to Equality California, a group seeking to stop a state ballot measure this November that would ban same-sex marriages.
"The Constitution guarantees life, liberty and the pursuit of happiness," Bratton said this week. "I see no reason why gays can't pursue happiness through marriage."
After learning of the Bragman-O'Donnell union a few days ago, Bratton and Kleiman asked the couple what they would like as a wedding present. Bragman was direct: No gifts -- instead, make a donation to Equality California to help stop Prop. 8. And please make it public.
There isn't that much more, in this day of shorter and shorter news reports. There are no voices quoted from the other wide of the issue, of course. Perhaps there wasn't room.
This is an important story. The chief's donation is, of course, totally legal and the newspaper knew a good, little, story when it saw one.
But here was the question that lingered for me. What would have happened if his donation would have gone the other way, if this important public figure had dared to back the traditional marriage camp in this bitterly divided state? Would that mirror-image story have received the same type of coverage? A short cheery piece of what, as of late, people on our comments board have been calling "fluff" news?
I think not. You see, that would be a huge, controversial story. I imagine that it would have ended up on A1 or the metro front, at the very least.
That important and controversial story would needed a wide variety of voices, in order to be complete. The reporters would have needed quotes from both sides, including plenty of solid, well-informed, sympathetic voices from the Religious Left. And that is precisely what the story would deserve.
It's called journalism, in the classic American model that requires reporters to seek balance, fairness and accuracy. Here at GetReligion.org, we like journalism. We really do.
Newer PostNailing down motives
Older PostLessons learned

redpajama_set_name: RedPajamaCommonCrawl


text:
Mal Fantome | Black and White TownCharles-Edouard Boivin2022-04-28T17:46:52+00:00
MAL FANTÔME
BLACK AND WHITE TOWN
A few months ago, after Doves cancelled their tour due to mental illness, Chris Kelly, a devoted fan initiated "Lost Covers", a tribute album to Doves music made by fans of the band. Chris also wanted to raise money for Mental Health UK and raise awareness on mental health issues. Being Doves fans and wanting to help for a great cause, we contacted Chris about joining the project. We toyed around with "Almost Forgot Myself", "Rise" and other Doves songs we love and finally decided on covering "Black and White Town".
We're proud to contribute to "Lost Covers" and we're inviting you to rediscover Doves songs while doing good and getting to know new artists. A very special thank you to Chris Kelly and everyone who contributed to this project.
Black and White Town was recorded in Quebec city and Montréal. The single is produced by Mal Fantôme and Mathieu Dandurand.
"In satellite towns, there's no color and no sound, I'll be ten feet under ground in this Black and White Town"
HALF EMPTY / HALF FULL
DEATH OF A NATIONAL NEWSPAPER
© Copyright 2010 - | MAL FANTÔME | ALL RIGHTS RESERVED
FacebookTwitterVimeoPinterestSpotify


text:
An intelligent extrusion system for additive manufacturing in construction
Additive manufacturing (AM), popularly known as '3D printing', is a manufacturing technique that builds physical 3D objects layer by layer using materials such as polymers, metals, and composites. The widespread popularity of additive manufacturing in most industries ranging from biomedical to aerospace suggests a revolution in manufacturing which have recently emerged in the construction sector and large-scale printing due to its zero waste, design freedom and contribution towards a circular economy.
One of the main problems in current state of the art AM printers that they lack any sort of feedback to keep an eye on the process, thus, causing a lot of failed prints and weak structures. This research aims to develop an intelligent extrusion system that would allow us to 3D print recycled cementations materials, to reduce the amount of waste and better automate the construction process.
An intelligent adaptive nozzle for additive manufacturing in construction
So far, a platform of a gantry system and various extrusion systems have been developed in house to 3D print sustainable concrete mixes. The final phase is to add monitoring system and train it to detect various errors that occur while printing. This will allow the system to adaptively correct any errors that might happen and ensure the perfect layer every time.
Please accept all cookies to view this content. Alternatively view the content on YouTube
Mr Mohammad Rafiq Swash - Dr Rafiq Swash joined the Department of Electronic and Computer Engineering, College Of Engineering, Design and Physical Sciences, Brunel University London, UK in 2013. Before that, he held research positions in the area of multimedia search & retrieval systems, expert systems and 3D imaging & display systems at Brunel University London. He received his Ph.D. degree in Holoscopic 3D Imaging Systems: Camera / Processing / Display from Brunel University London, UK. He is a member of IEEE, IET, IEEE Broadcast Technology Society, The Optical Society America (OSA), and The Society for Information Display (SID). In the past, Dr Swash has worked as a senior software engineer, senior technical architect, technical director and chief technology officer in international gaming, financial and robotics industries. Dr Swash has a wide research interests includes 3D imaging and display systems (3D cameras / 3D display / 3D processing), 3D virtual reality / augment reality, 3D computer vision, medical image processing & visualisation, multimedia search & retrieval, human-computer interaction design, interactive game design including serious games and gamification
Mr Abdulrahman Albar
Dr Mohammad Swash
3d printing; additive manufacturing; ai; construction; 3d; Additive Manufacturing Technology in Construction (AMTC); Brunel Design School; College of Engineering, Design and Physical Sciences; Department of Electronic and Computer Engineering; Digital; Dr Mohammad Swash; Electronic and Electrical Engineering; Engineering and Physical Sciences Research Council (EPSRC); Manufacturing; Mr Abdulrahman Albar;


text:
/*global GIGO, MirrorConfig, jQuery,  window,  alert,  Browser */
/*jslint browser: true */
/*jslint regexp: true */

GIGO.update_ipaddress = function (ipinfo) {
    // ipinfo:  callback({"ip":"69.62.233.151","type":"ipv4","subtype":"","public":1,"filler":""});

    // What if "ip" is  "192.0.2.1, 192.0.2.1"?  Reduce it.
    if ((ipinfo) && (ipinfo.ip)) {
        let sp = ipinfo.ip.split(", ");
        let use = sp[0];
        for (let element of sp.values()) {
            if (element !== sp[0]) {
                use=ipinfo.ip;
            }
        }
        ipinfo.ip=use ;
    }

    if (ipinfo.type === "ipv4") {
        if (!GIGO.results.ipv4.asn) {
            GIGO.results.ipv4 = ipinfo;
        }
    }
    if (ipinfo.type === "ipv6") {
        if (!GIGO.results.ipv6.asn) {
            GIGO.results.ipv6 = ipinfo;
        }
    }
};

GIGO.test_type_delayed = function (url, id) {

    // We will use this to stagger the start time_ms.
    // Since javascript has no "sleep" the next best
    // thing appears to be to set a timeout, and on timeout,
    // do what we really wanted.
    // We increase the timeout value each time we run this, so
    // that each thread time_ms out at a later time, to prevent
    // all tests from running INSTANTLY.
    // This is principally to work around IE problems
    // with too many jsonP queries initiating at once.
    GIGO.slowcount = GIGO.slowcount + 1;
    setTimeout(function () {
        GIGO.test_type(url, id);
    }, GIGO.slowcount * GIGO.slowcount_delay);
};

GIGO.finish_test = function (id) {
    var total_tests = GIGO.queue.length + GIGO.dequeued.length; // Once for main text, once for fallback image test
    GIGO.tests_finished = GIGO.tests_finished + 1;
    GIGO.update_progress(GIGO);
    GIGO.update_status(id);
    if (GIGO.tests_finished >= total_tests) {
        GIGO.check_results();
    }
    GIGO.next_in_queue(); // Start next test, if available
    GIGO.show_debug();
};

GIGO.test_type_skip = function (url, id) {
    // name = dns name to fetch
    // id = which
 to update
    var tests, this_test;

    // Let us also add in some hints for mirror operators
    if (url.search(/\?/) < 0) {
        url = url + "?";
    }
    url = url + "&testdomain=" + GIGO.options.domain;
    url = url + "&testname=" + id;
    if (Browser.opera) {
        url = url + "&random=" + Math.random();
    }

    tests = GIGO.results.tests; // Convenience
    if (!(tests.hasOwnProperty(id))) {
        tests[id] = {};
    }
    this_test = tests[id];

    this_test.start_time = GIGO.getms(); // Will use to find how long we ran
    this_test.url = url; // For later display of test urls
    // Update status to "Started" if we don't have any time for this yet

    this_test.time_ms=0;
    this_test.status = "skipped";
    GIGO.finish_test(id);
    GIGO.update_url(id);
    GIGO.show_debug();

};

GIGO.test_type_json = function (url, id) {
    // name = dns name to fetch
    // id = which
 to update
    var tests, this_test;

    // Let us also add in some hints for mirror operators
    if (url.search(/\?/) < 0) {
      url = url + "?";
    }
    url = url + "&testdomain=" + GIGO.options.domain;
    url = url + "&testname=" + id;
    if (Browser.opera) {
            url = url + "&random=" + Math.random();
    }

    tests = GIGO.results.tests; // Convenience
    if (!(tests.hasOwnProperty(id))) {
        tests[id] = {};
    }
    this_test = tests[id];

    this_test.start_time = GIGO.getms(); // Will use to find how long we ran
    this_test.url = url; // For later display of test urls
    // Update status to "Started" if we don't have any time for this yet

    if (GIGO.overrides && GIGO.overrides[id]) {
        // oh, we're faking this one.  TODO
        // we can take a lot of short cuts.
        GIGO.override_id(id, url);
        GIGO.finish_test(id);
        GIGO.update_url(id);
        GIGO.show_debug();
        return;
    }

    GIGO.update_url(id);

    // Initiate new query.  Based on pass/fail, update status.
    jQuery.jsonp({
        "url": url,
        "cache": true,
        "pageCache": false,
        "timeout": GIGO.max_time,

        "success": function (ipinfo) {
            // Keep track of IP information we receive
            var delta;

            delete ipinfo.full; // Don't need this polluting anything.
            delete ipinfo.padding; // Don't need this polluting anything.
            this_test.ipinfo = ipinfo; // Record the IP address reported from this test
            if (GIGO.override) {
                GIGO.override_id_ip(id);
            }
            GIGO.update_ipaddress(this_test.ipinfo); // Make note of our IPv4 or IPv6 address based on the test
            GIGO.update_ip(id); // callback for presentation
            delta = GIGO.getms() - this_test.start_time;
            if (GIGO.isdef(this_test.time_ms)) {
                if (delta < this_test.time_ms) {
                    this_test.time_ms = delta;
                }
            } else {
                this_test.time_ms = delta;
            }
            this_test.status = (this_test.time_ms < GIGO.slow) ? "ok" : "slow";

            // Look for dual stack
            if (id === "test_ds") {
                // ds4 and ds6 have the same time; but if one is good, the other must be bad,
                // since we can't possibly connect to both with a single DNS name
                if (ipinfo.type === "ipv6") {
                    tests.test_ds6 = {
                        url: this_test.url,
                        time_ms: this_test.time_ms,
                        status: this_test.status
                    };
                    tests.test_ds4 = {
                        url: this_test.url,
                        time_ms: this_test.time_ms,
                        status: "bad"
                    };
                } else {
                    tests.test_ds4 = {
                        url: this_test.url,
                        time_ms: this_test.time_ms,
                        status: this_test.status
                    };
                    tests.test_ds6 = {
                        url: this_test.url,
                        time_ms: this_test.time_ms,
                        status: "bad"
                    };
                }
            }

            GIGO.finish_test(id);

        },
        "error": function (d, msg) {
            var delta;

            console.log("test_type_json url=%o id=%o d=%o msg=%o",url,id,d,msg);

            delta = GIGO.getms() - this_test.start_time;
            if (GIGO.isdef(this_test.time_ms)) {
                if (delta < this_test.time_ms) {
                    this_test.time_ms = delta;
                }
            } else {
                this_test.time_ms = delta;
            }
            this_test.status = (this_test.time_ms < GIGO.slow) ? "bad" : "timeout";

            // Look for dual stack
            if (id === "test_ds") {
                tests.test_ds6 = {
                    url: this_test.url,
                    time_ms: this_test.time_ms,
                    status: this_test.status
                };
                tests.test_ds4 = {
                    url: this_test.url,
                    time_ms: this_test.time_ms,
                    status: this_test.status
                };

                // Dual stack connection failed. Is it due to buggy DNS?
                // Queue the buggydns1 check!
                GIGO.queue.push(["test_buggydns1", GIGO.options.url.test_buggydns1_img, "test_buggydns1"]);
            }

            // Fallback to image test, if the primary tests fail.  Just in case some filter blocked the script fetches.
            GIGO.finish_test(id);
            GIGO.queue.push(["test_type_img", GIGO.options.url[id + "_img"], id + "_img"]);
        }
    });

    // Perform callback for presentation
    GIGO.update_url(id);
    GIGO.show_debug();

};

GIGO.test_type_json_only = function (url, id) {
    // name = dns name to fetch
    // id = which
 to update
    var tests, this_test;

    if (url.search(/\?/) < 0) {
      url = url + "?";
    }
    url = url + "&testdomain=" + GIGO.options.domain;
    url = url + "&testname=" + id;
    if (Browser.opera) {
            url = url + "&random=" + Math.random();
    }

    tests = GIGO.results.tests; // Convenience
    if (!(tests.hasOwnProperty(id))) {
        tests[id] = {};
    }
    this_test = tests[id];

    this_test.start_time = GIGO.getms(); // Will use to find how long we ran
    this_test.url = url; // For later display of test urls
    // Update status to "Started" if we don't have any time for this yet
    GIGO.update_url(id);

    if ((id === "test_asn4") && (GIGO.isdef(GIGO.CGI.ip4))) {
        if ((GIGO.CGI.ip4) && (GIGO.CGI.ip4.match(/^[0-9abcdef.:]+$/))) {
            url = url  + "&testip=" + GIGO.CGI.ip4;
            // url = "/ip/?callback=?&asn=1&testip=" + GIGO.CGI.ip4;
            // url = url + "&testdomain=" + GIGO.options.domain;
            // url = url + "&testname=" + id;
            this_test.url = url; // For later display of test urls
            GIGO.update_url(id);
        } else {
            this_test.ipinfo = {};
            this_test.status = "bad";
            this_test.time_ms = 1;
            GIGO.finish_test(id);
            GIGO.update_url(id);
            GIGO.show_debug();
            return;
        }
    }
    if ((id === "test_asn6") && (GIGO.isdef(GIGO.CGI.ip6))) {
        if ((GIGO.CGI.ip6) && (GIGO.CGI.ip6.match(/^[0-9abcdef.:]+$/))) {
            url = url  + "&testip=" + GIGO.CGI.ip6;
            //
            // url = "/ip/?callback=?&asn=1&testip=" + GIGO.CGI.ip6;
            // url = url + "&testdomain=" + GIGO.options.domain;
            // url = url + "&testname=" + id;
            this_test.url = url; // For later display of test urls
            GIGO.update_url(id);
        } else {
            this_test.ipinfo = {};
            this_test.status = "bad";
            this_test.time_ms = 1;
            GIGO.finish_test(id);
            GIGO.update_url(id);
            GIGO.show_debug();
            return;
        }
    }

    // Initiate new query.  Based on pass/fail, update status.
    jQuery.jsonp({
        "url": url,
        "cache": true,
        "pageCache": false,
        "timeout": GIGO.max_time,

        "success": function (ipinfo) {
            // Keep track of IP information we receive
            var delta;

            delete ipinfo.full; // Don't need this polluting anything.
            delete ipinfo.padding; // Don't need this polluting anything.
            this_test.ipinfo = ipinfo; // Record the IP address reported from this test
            GIGO.update_ipaddress(this_test.ipinfo); // Make note of our IPv4 or IPv6 address based on the test
            GIGO.update_ip(id); // callback for presentation
            delta = GIGO.getms() - this_test.start_time;
            if (GIGO.isdef(this_test.time_ms)) {
                if (delta < this_test.time_ms) {
                    this_test.time_ms = delta;
                }
            } else {
                this_test.time_ms = delta;
            }
            this_test.status = (this_test.time_ms < GIGO.slow) ? "ok" : "slow";

            GIGO.finish_test(id);

        },
        "error": function (d, msg) {
            var delta;

            delta = GIGO.getms() - this_test.start_time;
            if (GIGO.isdef(this_test.time_ms)) {
                if (delta < this_test.time_ms) {
                    this_test.time_ms = delta;
                }
            } else {
                this_test.time_ms = delta;
            }
            this_test.status = (this_test.time_ms < GIGO.slow) ? "bad" : "timeout";

            GIGO.finish_test(id);
        }
    });

    // Perform callback for presentation
    GIGO.update_url(id);
    GIGO.show_debug();
};

GIGO.test_buggydns1 = function (url, id) {
    // name = dns name to fetch
    // id = which
 to update
    var tests, this_test, img, img_pending, max_time;
    jQuery(".optional_buggydns1").show();

    max_time = (GIGO.max_time > 5000) ? 5000 : GIGO.max_time; // Shorten this test.
    if (url.search(/\?/) < 0) {
          url = url + "?";
    }
    url = url + "&testdomain=" + GIGO.options.domain;
    url = url + "&testname=" + id;
    if (Browser.opera) {
            url = url + "&random=" + Math.random();
    }

    tests = GIGO.results.tests; // Convenience
    if (!(tests.hasOwnProperty(id))) {
        tests[id] = {};
    }
    this_test = tests[id];

    this_test.start_time = GIGO.getms(); // Will use to find how long we ran
    this_test.url = url; // For later display of test urls
    // Update status to "Started" if we don't have any time for this yet
    GIGO.update_url(id);

    // Create image.
    // Attach handlers to the image.
    // Create a timer to artificially timeout imgs
    img_pending = 1;

    img = jQuery('');

    // INVERSE LOGIC HERE !!!
    jQuery(img).bind({
        load: function () {
            var delta;
            if (img_pending) {
                img_pending = 0;
                delta = GIGO.getms() - this_test.start_time;
                if (GIGO.isdef(this_test.time_ms)) {
                    if (delta < this_test.time_ms) {
                        this_test.time_ms = delta;
                    }
                } else {
                    this_test.time_ms = delta;
                }
                this_test.image = 1;
                this_test.status = "affected"; // INVERSE LOGIC!
                GIGO.finish_test(id);
            }
        },
        error: function () {
            var delta;
            if (img_pending) {
                img_pending = 0;
                delta = GIGO.getms() - this_test.start_time;
                if (GIGO.isdef(this_test.time_ms)) {
                    if (delta < this_test.time_ms) {
                        this_test.time_ms = delta;
                    }
                } else {
                    this_test.time_ms = delta;
                }
                this_test.image = 1;
                this_test.status = "safe"; // INVERSE LOGIC!
                GIGO.finish_test(id);
            }
        }
    });

    // FAKE IMAGE TIMEOUT HANDLER
    setTimeout(function () {
        var delta;
        if (img_pending) {
            img_pending = 0;
            // replace failing image url with one that should work, so that browser can call this done.
            // we tried setting to "" but safari at minimum treats that as replacing src
            // with the value of document.location (!).
            jQuery(img).css("height","2em").css("width","auto");
            jQuery(img).attr("src", "/images/hires_bad.png");

            delta = GIGO.getms() - this_test.start_time;
            if (GIGO.isdef(this_test.time_ms)) {
                if (delta < this_test.time_ms) {
                    this_test.time_ms = delta;
                }
            } else {
                this_test.time_ms = delta;
            }
            this_test.image = 1;
            this_test.status = "safe"; // INVERSE LOGIC!
            GIGO.finish_test(id);
        }
    }, max_time);

    //jQuery('body').append(img);
    jQuery(img).attr("src", url);

    // Perform callback for presentation
    GIGO.update_url(id);
    GIGO.show_debug();
};

GIGO.test_type_img = function (url, id) {
    // name = dns name to fetch
    // id = which
 to update
    var tests, this_test, img, img_pending;

    if (url.search(/\?/) < 0) {
          url = url + "?";
    }
    url = url + "&testdomain=" + GIGO.options.domain;
    url = url + "&testname=" + id;
    if (Browser.opera) {
            url = url + "&random=" + Math.random();
    }

    tests = GIGO.results.tests; // Convenience
    if (!(tests.hasOwnProperty(id))) {
        tests[id] = {};
    }
    this_test = tests[id];

    this_test.start_time = GIGO.getms(); // Will use to find how long we ran
    this_test.url = url; // For later display of test urls
    // Update status to "Started" if we don't have any time for this yet
    GIGO.update_url(id);

    // Create image.
    // Attach handlers to the image.
    // Create a timer to artificially timeout imgs
    img_pending = 1;

    img = jQuery('');

    jQuery(img).bind({
        load: function () {
            var delta;

            if (img_pending) {
                img_pending = 0;
                delta = GIGO.getms() - this_test.start_time;
                if (GIGO.isdef(this_test.time_ms)) {
                    if (delta < this_test.time_ms) {
                        this_test.time_ms = delta;
                    }
                } else {
                    this_test.time_ms = delta;
                }
                this_test.image = 1;
                this_test.status = (this_test.time_ms < GIGO.slow) ? "ok" : "slow";
                if (this_test.test_ms > GIGO.max_time) {
                    this_test.status = "timeout";
                }
                GIGO.finish_test(id);
            }
        },
        error: function () {
            var delta;
            if (img_pending) {
                img_pending = 0;
                delta = GIGO.getms() - this_test.start_time;
                if (GIGO.isdef(this_test.time_ms)) {
                    if (delta < this_test.time_ms) {
                        this_test.time_ms = delta;
                    }
                } else {
                    this_test.time_ms = delta;
                }
                this_test.image = 1;
                this_test.status = (this_test.time_ms < GIGO.slow) ? "bad" : "timeout";
                GIGO.finish_test(id);
            }
        }
    });

    // FAKE IMAGE TIMEOUT HANDLER
    setTimeout(function () {
        var delta;
        if (img_pending) {
            img_pending = 0;
            // replace failing image url with one that should work, so that browser can call this done.
            // we tried setting to "" but safari at minimum treats that as replacing src
            // with the value of document.location (!).
            jQuery(img).css("height","2em").css("width","auto");
            jQuery(img).attr("src", "/images/hires_bad.png");

            delta = GIGO.getms() - this_test.start_time;
            if (GIGO.isdef(this_test.time_ms)) {
                if (delta < this_test.time_ms) {
                    this_test.time_ms = delta;
                }
            } else {
                this_test.time_ms = delta;
            }
            this_test.image = 1;
            this_test.status = (this_test.time_ms < GIGO.slow) ? "bad" : "timeout";
            GIGO.finish_test(id);
        }
    }, GIGO.max_time);

    //jQuery('body').append(img);
    jQuery(img).attr("src", url);

    // Perform callback for presentation
    GIGO.update_url(id);
    GIGO.show_debug();
};

GIGO.retest = function () {
    window.location.reload();
};

GIGO.next_in_queue = function () {
    var fname, a;
    if (GIGO.queue.length > 0) {
        a = GIGO.queue.shift(); // Dequeue the next test.
        GIGO.dequeued.push(a.slice(0)); // Save a COPY.
        try {
            fname = a.shift(); // Remove first field, the function name (in the GIGO namespace).  This changes array "a".
        } catch (e) {
            alert("ERROR: GIGO.next_in_queue: not an array; value=" + a);
        }

        // fname = function name
        // a = args array to pass.
        GIGO[fname].apply(GIGO, a);

        // If we are permitted parallel execution,
        // set a timer to start the next job.
        if (!GIGO.use_queue) {
            setTimeout(GIGO.next_in_queue, GIGO.slowcount_delay);
        }
    }
    GIGO.update_progress(GIGO);
};

GIGO.start_tests = function () {
    GIGO.browser_tweaks(GIGO); // In case we want to do tweak the document
    GIGO.next_in_queue(); // Get the ball rolling!
};
GIGO.restart_tests = function () {
    var i, l;
    l = GIGO.dequeued.length;
    for (i = 0; i < l; i = i + 1) {
        GIGO.queue.push(GIGO.dequeued[i]);
    }
    GIGO.update_progress(GIGO);
    GIGO.start_tests();
};

GIGO.setup_tests = function () {

    var asn_lookup_broken = 0;
    if (asn_lookup_broken) {
      jQuery('#sum_test_asn4').parent().parent().hide();
      jQuery('#sum_test_asn6').parent().parent().hide();
      jQuery('#test_asn4').parent().parent().hide();
      jQuery('#test_asn6').parent().parent().hide();
    } else {
      GIGO.queue.push(["test_type_json_only", GIGO.options.url.test_asn4, "test_asn4"]);
      GIGO.queue.push(["test_type_json_only", GIGO.options.url.test_asn6, "test_asn6"]);
    }

    GIGO.queue.push(["test_type_json", GIGO.options.url.test_a, "test_a"]);
    GIGO.queue.push(["test_type_json", GIGO.options.url.test_aaaa, "test_aaaa"]);
    GIGO.queue.push(["test_type_json", GIGO.options.url.test_ds, "test_ds"]);

    GIGO.queue.push(["test_type_json", GIGO.options.url.test_v6mtu, "test_v6mtu"]);
    GIGO.queue.push(["test_type_json", GIGO.options.url.test_v6ns, "test_v6ns"]);
    GIGO.queue.push(["test_type_json", GIGO.options.url.test_dsmtu, "test_dsmtu"]);
    GIGO.queue.push(["test_type_img", GIGO.options.url.test_ood_img, "test_ood"]);

    GIGO.show_debug();
    GIGO.prepare_fake();

};

GIGO.fill = function (size, str) {
    var s = "";
    while (s.length < size) {
        s = s + str;
    }
    s = s.substring(0, size);
    return s;
};

GIGO.set_default_options = function (options) {

    options.url = (options.hasOwnProperty("url")) ? options.url : {};

    options.domain = GIGO.mirrorconfig("site", "name", null);
    options.subdomain = GIGO.mirrorconfig("load", "domain", options.domain);
    options.ipv4 = GIGO.mirrorconfig("load", "ipv4", null);
    options.ipv6 = GIGO.mirrorconfig("load", "ipv6", null);
    options.uri = GIGO.mirrorconfig("options", "ip", "/ip/") + "?callback=?";
    options.img_uri = "/images-nc/bg.gif";
    options.img_uri_big = "/images-nc/hires_ok.png?&fill=" + GIGO.fill(1600, "x");
    options.img_bad_uri = "/images-nc/hires_bad.png";

    // Determine if we can use an alternate v6mtu defined by the site config (options -> v6mtu)
//    options.v6mtu = GIGO.mirrorconfig("options","v6mtu","ipv6." + options.subdomain);

    // options.uri = "/report-ip.php?callback=?";  // Alternative to mod_ip
    options.url.test_a = GIGO.protocol+"ipv4." + options.subdomain + options.uri;
    options.url.test_aaaa = GIGO.protocol+"ipv6." + options.subdomain + options.uri;
    options.url.test_ds = GIGO.protocol+"ds." + options.subdomain + options.uri;

    options.url.test_v6ns = GIGO.protocol+"ds.v6ns." + options.subdomain + options.uri;
    options.url.test_v6mtu = GIGO.protocol+"mtu1280." + options.subdomain + options.uri + "&size=1600&fill=" + GIGO.fill(1600, "x");
    options.url.test_dsmtu = GIGO.protocol+"ds." + options.subdomain + options.uri + "&size=1600&fill=" + GIGO.fill(1600, "x");
    options.url.test_buggydns1 = GIGO.protocol+"buggydns1." + options.subdomain + options.uri;
    options.url.test_ood=""; // Dummy

    // ASN lookups are corrently broken.
    options.url.test_asn4 = GIGO.protocol+"ipv4.lookup.test-ipv6.com" + options.uri + "&asn=1";
    options.url.test_asn6 = GIGO.protocol+"ipv6.lookup.test-ipv6.com" + options.uri + "&asn=1";

    options.url.test_a_img = GIGO.protocol+"ipv4." + options.subdomain + options.img_uri;
    options.url.test_aaaa_img = GIGO.protocol+"ipv6." + options.subdomain + options.img_uri;
    options.url.test_ds_img = GIGO.protocol+"ds." + options.subdomain + options.img_uri;
    options.url.test_v6ns_img = GIGO.protocol+"ds.v6ns." + options.subdomain + options.img_uri;
    options.url.test_v6mtu_img = GIGO.protocol+"mtu1280." + options.subdomain + options.img_uri_big;
    options.url.test_dsmtu_img = GIGO.protocol+"ds." + options.subdomain + options.img_uri_big;
    options.url.test_buggydns1_img = GIGO.protocol+"buggydns1." + options.subdomain + options.img_uri;
    options.url.test_ood_img = GIGO.ood_url()

};

GIGO.fix_comment_form_and_tab = function () {
    if (MirrorConfig.options.comment) {
        jQuery("#tabbutton_mail_link").show();

        var url = MirrorConfig.options.comment;
        if (MirrorConfig.options.userdata) {
            if (GIGO.results.ipv4.ip) {
                url = GIGO.protocol+"ipv4." + MirrorConfig.options.userdata + "/comment.php";
            } else if (GIGO.results.ipv6.ip) {
                url = GIGO.protocol+"ipv6." + MirrorConfig.options.userdata + "/comment.php";
            } else {
                url = GIGO.protocol+"ds." + MirrorConfig.options.userdata + "/comment.php";
            }
        }

        $('#commentform').get(0).setAttribute('action', url);

    } else {
        jQuery("#tabbutton_mail_link").hide();
        jQuery("a.tabbutton_mail").hide();
    }

};

GIGO.test_ipv6_gui = function (options) {
    // Check options
    if (!GIGO.isdef(options)) {
        options = {};
    }
    GIGO.options = options;
    GIGO.set_default_options(options);

    // Start real workload
    jQuery(document).ready(function () {
        // Primitive hack to avoid the web bots from comment spamming
        jQuery("[name=nobots]").val("serious");
        if (GIGO.is_replay()) {
          jQuery("#replay").show();
        }

        // Possibly, kill that tab instead.
        // GIGO.fix_comment_form_and_tab();
        GIGO.fix_footer_early();
        GIGO.start_helpdesk();
        GIGO.setup_tests();
        GIGO.start_tests();
        GIGO.pulse_on();
    });
};

GIGO.redirect = function (page) {
    var newurl, oldpath, newpath;
    newurl = document.location.protocol;
    newurl = newurl + "://";
    newurl = newurl + document.location.hostname;
    if (document.location.port !== 80) {
        newurl = newurl + ":" + document.location.port;
    }

    oldpath = String(document.location.pathname);
    newpath = oldpath.replace(/[^\/]+$/, "");
    newpath = newpath + page;
    newpath = newpath.replace(/\/+/g, "/");

    document.location = newpath;

};

redpajama_set_name: RedPajamaGithub


text:
Q: C++: Atomic Tagged pointer with 16-bit counter in upper bits, can't seem to increment the counter I'm trying to implement an atomic tagged/packed pointer, for the sake of learning.
I want to use the upper 16 bits for a uint16_t counter, and the lower 3 bits for a 3-bit tag.
So far, I've managed to get everything working except the ability to increment the counter. I'm not very familiar with bitwise operations, so I assume the mistake is probably somewhere in my use of them.
The implementation I have is below:

*

*(Godbolt link: https://godbolt.org/z/ez7PnWxjG)

The current output is:
AtomicTaggedPointer(ptr=0x5589e2dc92b0, val=42, tag=4, count=0)
0000000000000000 0101010110001001 1110001011011100 1001001010110 100

AtomicTaggedPointer(ptr=0x5589e2dca2e0, val=43, tag=5, count=0)
0000000000000000 0101010110001001 1110001011011100 1010001011100 101

What I'm trying to achieve is that count=1 when it's printed the second time,
and that we see that stored in the upper 16 bits.
#include <atomic>
#include <cassert>
#include <cstdint>
#include <cstdio>

// A word-aligned, atomic tagged pointer.
// Uses both the upper 16 bits for storage, and the lower 3 bits for tagging.
//
//   64                48                32                16
// 0xXXXXXXXXXXXXXXXX  0000000000000000  0000000000000000  0000000000000XXX
//   ^                 ^                                                ^
//   |                 |                                                +-- Tag (3 bits)
//   |                 +-- Pointer (48 bits)
//   +-- Counter (16 bits)
//
//
// The tag is 3 bits, allowing for up to 8 different tags.
//
// The version is incremented every time the pointer is CAS'd. This is useful
// for detecting concurrent modifications to a pointer.
template <typename T>
struct AtomicTaggedPointer
{
    static_assert(sizeof(T*) == 8, "T* must be 8 bytes");
    static_assert(sizeof(std::atomic<uintptr_t>) == 8, "uintptr_t must be 8 bytes");

  private:
    static constexpr uintptr_t kTagMask      = 0x7;                // 3 bits
    static constexpr uintptr_t kCounterMask  = 0xFFFF000000000000; // 16 bits
    static constexpr uintptr_t kPointerMask  = ~kTagMask;          // All bits except tag bits
    static constexpr uintptr_t kCounterShift = 48;                 // Shift counter bits to the left

    std::atomic<uintptr_t> value;

  public:
    AtomicTaggedPointer(T* ptr, uint8_t tag = 0)
    {
        value.store(reinterpret_cast<uintptr_t>(ptr) | tag, std::memory_order_relaxed);
    }

    T* get() const
    {
        return reinterpret_cast<T*>(value.load(std::memory_order_relaxed) & kPointerMask);
    }

    uint8_t tag() const
    {
        return value.load(std::memory_order_relaxed) & kTagMask;
    }

    uint16_t counter() const
    {
        return value.load(std::memory_order_relaxed) >> kCounterShift;
    }

    // Compare and swap the pointer with the desired value, and optionally set the tag.
    // Returns true if the swap was successful.
    // Also increments the version counter by 1.
    bool cas(T* desired, uint8_t tag = 0)
    {
        uintptr_t expected = value.load(std::memory_order_relaxed);
        uintptr_t desired_value =
            reinterpret_cast<uintptr_t>(desired) | (tag & kTagMask) | ((expected + 1) & kCounterMask) << 48;
        return value.compare_exchange_strong(expected, desired_value, std::memory_order_relaxed);
    }

    void print() const
    {
        printf("AtomicTaggedPointer(ptr=%p, val=%d, tag=%hhu, count=%hu) \n", get(), *get(), tag(), counter());
        // Print each bit of the pointer's 64-bit value
        // In the format:
        // 0xXXXXXXXXXXXXXXXX  0000000000000000  0000000000000000  0000000000000XXX
        uintptr_t v = value.load(std::memory_order_relaxed);
        for (int i = 63; i >= 0; i--)
        {
            if (i == 2 || i == 15 || i == 31 || i == 47)
            {
                printf(" ");
            }
            printf("%lu", (v >> i) & 1);
        }
        printf("\n");
    }
};

int
main()
{
    AtomicTaggedPointer<int> p = AtomicTaggedPointer<int>(new int(42), 4);
    p.print();
    assert(p.get() != nullptr);
    assert(*p.get() == 42);
    assert(p.tag() == 4);
    assert(p.counter() == 0);

    int* expected = p.get();
    p.cas(new int(43), 5);
    p.print();
}

A: You increment expected by adding 1. That would be an increment at the lowest bit. But that is where you put the tag. The counter is at the highest bits. So you need to shift 1 first to the lowest counter bit, i.e. by kCounterShift (and to do so you should first cast 1 to the appropriate type uintptr_t, so that the shift is sure to be in-range).
Also, your kPointerMask is wrong as it doesn't mask the counter bits.
Also, to make sure that the pointers are suitably aligned you should add a static assert on alignof(T) being large enough. Then you should be fine, since it is not possible to pass valid unaligned pointer values for a type in standard C++ and even on platforms where unaligned access is allowed, it is not allowed to pass and dereference incorrectly aligned pointers like this. (see comments under the answer)
In your specific example int is not going to satisfy that requirement. It will have an alignment of only 4 bytes, not the 8 bytes you need. That you are using new to create the objects is probably saving you from getting pointers that are not 8 byte aligned, but even for new int this is not guaranteed in general.
Also, of course a lot here is implementation-defined behavior. For example the layout of the bits in the pointer used and how they map to uintptr_t is specific to x86-64 and a typical ABI. I could imagine a compiler using the unused bits in the pointer itself for some purpose or similar.
There might also be a broader question of whether the whole approach is compatible with pointer provenance, which I am not sure about.

redpajama_set_name: RedPajamaStackExchange


text:
Lancashire legend is headline act at Folk Club
John Howarth of the Oldham Tinkers
A legend of the Lancashire folk world is heading to St Annes.
John Howarth, frontman of the Oldham Tinkers, is the headline act at the St Annes Folk Club on Saturday.
The folk club was launched last month and was a sell-out, with more than 75 people at the Pavilion Cafe in Ashton Gardens.
This month's headline act Howarth has been a fixture of the Lancashire music scene since the 1960s, when he teamed up with brothers Larry and Gerry Kearns to form the Oldham Tinkers.
The band have played folk festivals all over the world and were summoned to play for the Queen and Prince Philip at a Royal Gala performance at Manchster's Palace Theatre in the 70s. They have also received extensive radio play, on Radio 2 and beyond.
"It is quite a big coup to get John as last time the Tinkers were in this area they played at the Lowther Pavilion in Lytham," said folk club organiser Steve Canavan.
"So to get John to play in an intimate venue is great and it's a chance for people to come and see a master at work.
"Not only is he a fine singer but he's also one of the funniest performers you will see –his tales in between the music are worth the admission price alone."
There will also be other guest artists on the night.
Tickets priced £6 are available now from the Pavilion cafe in St Annes.
The folk night takes place on the first Saturday of each month.
It is taking a break in January but returns on Saturday February 7, when Ramsbottom-based three-piece Harp and a Monkey are the headliners.
To join the mailing list, or to find out more information about the folk nights, email lsafolkclub@hotmail.com
Norwegian jazz export Marius Neset set to play The Ribble Valley International Jazz Festival


Yellow Metal Counter Bar Stools For Less Overstock Com Household Pertaining To 16 is one of pictures thet are related with the picture before in the collection gallery. If you would like to see the Yellow Metal Counter Bar Stools For Less Overstock Com Household Pertaining To 16 in High Resolution [HD Resolution] version, please press the right click on picures/image then choose "Save as Image" option, and done. You will get Yellow Metal Counter Bar Stools For Less Overstock Com Household Pertaining To 16 pictures that you want. The exactly dimension of Yellow Metal Counter Bar Stools For Less Overstock Com Household Pertaining To 16 was 320x320 pixels. You can also look for some pictures by collection on below this picture. Find the other picture or article about Yellow Metal Bar Stools here. We hope it can help you to get information of the picture.


text:
Search for news, events, and keywords
Leonard Cheshire Disability
Why should you vote in this year's election?
Disability facts and figures
Media contact and spokespeople
Our impact 2017/2018
Our strategy 2017 — 2022
by Leo Capella
Tomorrow, voting will be happening across Britain. There will be council elections in some constituencies as well as the big one, the general election. But why should you bother?
They're all the same, aren't they?
Believe it or not there are different policies at play and they could have significant consequences depending on which parties get into power.
Guy Parckar from Leonard Cheshire has written a summary of what the different parties' manifestos say about disability and social care.
And on Vote for Policies you can look at the different policies behind the different news articles and do a survey to see which party's policies match your beliefs.
It won't make a difference, will it?
Oh yes it will. Politicians and political parties actively listen to people who are likely to vote. If they think that lots of people are interested in a particular issue, then they are much more likely to take a position on it.
This means that showing up at the ballot box and being counted is important regardless of whether the candidate that you're backing has a chance of winning or not.
Polling stations are legally required to be accessible for disabled people. If you have problems with accessibility on voting day, the Electoral Commission has a factsheet on disabled people's voting rights.
It's your choice whether you want to vote or not. But politics won't go away — and neither will politicians. So use your vote and make sure the politicians who share your views know they have your support.
Leo Capella is a disability activist and one of our local campaign supporters. He tweets as @TheSnakesTweet.
Find out more about voting and the general election.
We'd like to keep you updated about how we support disabled people to live, learn and work as independently as they choose. We'll let you know how you can support our vision and get involved through fundraising, volunteering and campaigning opportunities.
data protection options *
Yes, please keep me updated by email
For specific details on how we may use your data, please read our full privacy notice.
Leonard Cheshire Disability is a company limited by guarantee, registered in England no: 552847, and a registered charity no: 218186 (England & Wales) and no: SC005117 (Scotland). VAT no: 899 3223 75. Registered office: 66 South Lambeth Road, London, SW8 1RL. Patron: Her Majesty the Queen.


SOLD! Thank you- Vintage 1930's era or earlier Reno Nevada "Traffic officer" motorcycle police badge. Open C catch, Hallmarked Ed Jones Oakland California maker.
AMA pre war trophy topper hardtail Harley or Indian & 1940 Gypsy tour numbered key fob.
SOLD! Thank you! AMA pre war trophy topper nice representation of either a hardtail Harley or Indian & 1940 Gypsy tour numbered key fob.The topper is a solid casting right around 7" long and weighs almost 3 lbs !


text:
ACTION ALERT: Orlando Mayor Buddy Dyer Allocated $3,000 in Public Taxpayer Dollars for Children to be Exposed to "Reading" with an Adult Entertainer Stripper for Six "Drag Queen Story Hour" Events
10/30/2019 Action Alert 0
Orlando Mayor Buddy Dyer
Call and email Mayor Buddy Dyer today and tell him our hard-earned, taxpayer money should not be funding such inappropriate & outrageous programming for children.
Email: buddy.dyer@orlando.gov
The Facts:
Orlando Mayor Buddy Dyer's Mayor's Matching Grant for Schools and Nonprofit Organizations is "awarded to schools and non-profit organizations for projects that offer educational enhancement, academic enrichment, crime prevention and anti-violence for our City's youth."
In 2019, Mayor Dyer granted the LGBT Center of Orlando $3,000 of this public grant funding to "host the first Drag Queen Story Hour in the state of Florida, starting with six events in 2019 designed to teach children to embrace gender diversity in themselves and others… An estimated 600 children are expected to participate in this program." (emphasis added) See: http://www.cityoforlando.net/oca/mmg/
The Drag Queen Story Hour events were hosted by "Gidget Galore," formerly known as "Bubbles Galore," a man named Richard Kutnz who dresses as a woman and works as an Adult Entertainer at the Parliament House, a gay night club in Orlando.
Kutnz, who has been described in one gay publication as a "campy, steamy, pithy and profane drag persona," has been involved with many adult entertainment productions. His Facebook page shows his hosting and or directly participating in events promoted as, "Indecent EXXXposure: Warning this event contains nudity;" "Lion Queen: Naked, Go-Go Cub;" Hosting "adult film stars" in Flash Friday's striptease; and "The Living Nativity Christmas Spectacular, A Twisted Musical Parody of Biblical Proportions." Kurtz is also known for making drug references in his acts. See: https://www.edgemedianetwork.com/entertainment/theatre//94750
At a recent Drag Queen Story Hour at Ridgedale Library in Minnetonka, Minnesota, the man parading as a woman in a mini skirt and high heels opened his legs and exposed his genitals several times during the sit down reading. See: https://www.theblaze.com/news/photo-shows-drag-queen-story-hour-performer-in-miniskirt-exposing-crotch-as-children-sit-close-by Unless someone attends and videos these events there is no way to document how far these entertainers go in exposing their young audiences to inappropriate and sexualized behavior.
Allowing children to be exposed to this utterly inappropriate adult "entertainment" under the guise of "reading and education" is simply disgraceful. The fact that Mayor Buddy Dyer used our taxpayer's dollars to pay for it as so-called education is even more outrageous, especially when there are so many other problems and challenges that our teachers and schools have, which are worthy of funding and support.
These Orlando Drag Queen events and the children attending them were used in the filming an upcoming documentary about Drag Queen Story Hours called "Mirrors and Windows" See: http://www.mutemajesty.com/mirrorsandwindows/
Call and email Orlando Mayor Buddy Dyer and register your objection today for his failure to protect children from confusion and hyper-sexualization and for wasting taxpayers funds.
Florida Family Action
4853 S. Orange Ave, Suite C, Orlando, FL 32806
Info@FloridaFamilyAction.org * Phone: 407-418-0250
ACTION ALERT: Parental Consent Before Abortion Up in House HHS Committee
ACTION ALERT: Parental Consent Before Abortion Bill (SB 404) Up in First of Three Senate Committees


One of the most important aspects you need to know about your new instant pot is that it allows you to make great and tasty foods in a much more effective way.
Your dishes will maintain all their flavors and textures, and they will be cooked in the healthiest way possible.
You won't have to consume all your energy in the kitchen, and you don't need special cooking skills to make magical dishes.
From now on, you won't have to worry about your success in the kitchen because your instant pot will do the hard part!
We are sure we've convinced you that purchasing an instant pot is the best thing you could do.


text:
Planes, Trains And Taxis: When To Take Public Transit From The Airport
Jan. 23, 2015 , at 2:11 PM
Filed under Travel
An arriving passenger enters a taxi at LaGuardia Airport in New York in 2013.
Robert Nickelsberg / Getty Images
You can't spell "New York City's LaGuardia Airport" without C-A-B.
Er … actually you can. But for many New Yorkers, a journey to LaGuardia and a taxi ride are synonymous. There's no train or subway connection to the airport, and while there's a bus, most routes require multiple connections and an hour or more's travel. So, in transit-friendly but time-conscious New York, only a small fraction of passengers arrive at LaGuardia by public transit.
New York Gov. Andrew Cuomo hopes to change that. On Tuesday, he revealed a proposal that would build an AirTrain connection from LaGuardia to Mets-Willets Point station, which serves the subway's 7 train and a branch of the Long Island Rail Road.
Cuomo's plan has received a tepid response from public transit geeks such as Benjamin Kabak of the blog 2nd Ave. Sagas. The problem is that the proposed AirTrain would initially route Brooklyn- and Manhattan-bound travelers in the wrong direction — farther into Queens — requiring them to double back to reach their destinations and reducing any potential time savings. Kabak and others would prefer a route that runs south from LaGuardia toward Jackson Heights, or that extends the N train to reach the airport from Astoria, Queens as Rudy Giuliani proposed in the 1990s. (The plan died because of community opposition.) The map below, by Yonah Freemark at The Transport Politic, shows the proposed routes.
So, Cuomo's AirTrain — if it gets built — would be far from the platonic ideal of airport travel embodied by the Heathrow Express, which whisks travelers from Heathrow Airport to London's Paddington Station in 15 minutes. (The same trip can easily take an hour or more by car). But LaGuardia is not alone in offering meager public transit options. In fact, the choices there are pretty average compared with other U.S. airports, including the other airports that serve New York.
By public transit, an average weekday journey from LaGuardia to New York City Hall in downtown Manhattan requires 65 minutes, according to an analysis of Google Maps data. A trip from Newark Liberty Airport to downtown Manhattan also takes about 65 minutes on public transit; one from John F. Kennedy Airport takes about 75 minutes. (These estimates account for waiting and connection time; more details on the methodology in a moment.) In each case, a taxi journey will usually be slightly faster, although this depends greatly on traffic — especially from JFK.
At some other airports, public transit isn't really an option. On average, it would take more than two-and-a-half hours to get from the Detroit Metro Airport to downtown Detroit, accounting for waiting time. Detroit, as in so many other respects, is something of an outlier. But there are not many major U.S. airports at which a journey downtown is as fast by public transit as it is by car. And there's perhaps only one at which it's predictably faster.
I made these calculations using Google Maps, taking a sample of six weekday arrival times — 8 a.m., 10:08 a.m., 12:15 p.m., 2:52 p.m., 6:30 p.m. and 8:45 p.m.1 — and looking up how long it would to get from an airport to a city's downtown 2 on average using public transit.
I took whichever route Google Maps said would get me downtown soonest but counted the time spent waiting for the bus (or train) to arrive. For instance, if for an 8 a.m. arrival the fastest way to get downtown is via a bus that leaves the airport at 8:15 and arrives at 8:45, that would count as a 45-minute trip.
For comparison, I evaluated the journey times along the same routes at the same times of day3 by car using Waze, an app that allows users to predict journey times accounting for typical traffic patterns at different times of day.
The equation can be complicated. Waze's predictions do not specify a day of the week; because I used a weekday schedule for public transit, I also increased car travel times by 10 percent to account for heavier weekday traffic. And just as a train doesn't always materialize right when you want one, neither does a private car; unless you have a really nice friend or a really fancy limo service ready to pick you up curbside, you'll have to spend some time waiting for a taxi or a rental car or getting to a parking facility. It's hard to come up with a one-size-fits-all estimate for how long this takes,4 but I've added 10 minutes to the Waze travel times to account for it. The comparison between driving and public transit for the 40 busiest U.S. airports is below.5
These travel times are a rough guide; you should check conditions upon arrival at the airport. But they should provide a sense for where public transit is competitive with or potentially superior to a trip by private vehicle, at least from the perspective of time saved. (It's up to you, of course, how to balance time savings and cost, comfort and other factors.) We can group the cities into a few major categories:
Both options are good. Boston, Atlanta and Washington's Reagan National Airport offer excellent public transit links to the central city. But that's partly because these airports are conveniently situated to downtown. Driving can be extremely fast, too, or even faster. In Minneapolis, likewise, a light rail system covers the 10-mile distance between the airport and downtown frequently and quickly. But Minneapolis traffic usually isn't bad, so a car can be a good option.
As I mentioned, you should be in the habit of checking out your transportation options given traffic conditions upon arrival. (It's a fun way to pass the time when you're stuck on the tarmac because that 737 is blocking your arrival gate.) But San Francisco International and Chicago's Midway are two airports where this is especially important. At each one, travel times by car are about as fast as those by train on average. But while public transit times are fairly constant, a car trip downtown can take anywhere from 20 minutes to an hour or more, depending on traffic.
Public transit can be competitive but sometimes doesn't run frequently enough. St. Louis and Philadelphia belong in the "honorable mention" category. A journey on SEPTA's Airport Line to Philadelphia City Hall takes just 25 minutes, but the Airport Line runs only once per half-hour. St. Louis's MetroLink, a light rail system, offers transit times downtown that are competitive with driving if you catch the trains at exactly the right time. But the trains are spaced out by more than 20 minutes for much of the day.6
Driving is fine; public transit stinks. I already mentioned Detroit, where a journey downtown by public transit clocks in at 2 hours, 35 minutes. Detroit's Metro Airport is a fair ways from downtown Detroit, but a journey by car there is considerably faster at 45 minutes.
The major airports in Houston, Dallas and Miami abide by the same pattern, as do those in most midsize cities in the South and Midwest, including Kansas City and New Orleans. These are car-dominated cities, and the public transit options from the airport are no better than you'd expect.
Then there are the airports where a car journey downtown is cumbersome but a trip by public transit is even worse. Some of them, like Dulles International Airport in suburban Washington, deserve a mulligan because the airports are designed more for suburban travelers than for those headed to the central city. You'd have to have gotten a hell of an airfare to voluntarily fly into John Wayne Airport (SNA) in Santa Ana, Calif., if you were staying in downtown Los Angeles, for instance. But if you decided to take public transit from SNA to downtown LA, it would take you three hours, 20 minutes.
Denver International Airport is notoriously far from the center city despite being the only major commercial airport there. For the time being, however, you'll probably want to buck up and take the taxi. Our method estimates that a car trip to downtown Denver will take 50 minutes vs. an hour and a half on public transit.
This will change once Denver completes the East Rail Line, which projects to make the journey downtown in just 35 minutes. Los Angeles may also one day have a train connection to LAX airport; a car will usually be the least-worst option in the meantime.
Both options stink. In a few other cities, traffic can be so bad that a journey by public transit is worth checking out even if it isn't that quick. JFK and Newark, as I mentioned, fall into this category. While a journey to downtown Manhattan from JFK projects at 75 minutes by public transit, the car trip isn't much better at 65 minutes on average and can be much worse on some days.
LaGuardia arguably belongs in this category, too. Accounting for a 10-minute wait for a cab, a car trip downtown projects to take 50 minutes (journeys to Midtown Manhattan or to some parts of Brooklyn will be faster). That's not so much worse than the 65-minute journey downtown by way of the bus.
This is part of why the routing of the proposed AirTrain matters so much. If it winds up shaving only five minutes off travel times to Manhattan — and some analysts are skeptical it will save any time at all — it will be a good backup plan for budget-conscious travelers or when the taxi queue runs to Citi Field, but a car will usually be faster. If the AirTrain knocks 15 minutes off instead, it will be an option worth considering under a much broader range of circumstances.
Take the train. Finally, there's one airport where the train will often be the best choice — even for expense-account travelers. It's Chicago's O'Hare Airport. The "L" train does not run express to downtown Chicago like Heathrow Express does to London, but the Blue Line is a quick and reliable route with frequent service throughout the day — our method projects it will save you 15 minutes on average compared to battling traffic on the Kennedy Expressway.
Clarification (July 27, 10:00 a.m.): An earlier version of this article did not sufficiently attribute a map created by Yonah Freemark and originally published on his blog The Transport Politic.
The reason for the slightly irregular travel times, e.g. 10:08 a.m., is that some cities have their public transit scheduled to leave the airport at regular intervals — for instance, hourly at 2 p.m., 3 p.m. and so forth. This is great if you get through baggage claim and emerge curbside right when the bus (or train) is leaving but not very helpful otherwise. These staggered times are meant to represent more of a random sample throughout the day. Specifically, the travel times I pulled were those for Thursday as they were listed by Google Maps on late Tuesday.
"Downtown" is measured by the location of City Hall or the principal municipal building for the largest city in the metropolitan area.
Predicted Waze travel times are listed in half-hour increments, so I looked up journeys from the airport starting at 8 and 10 a.m., and at 12:30, 3, 6:30 and 9 p.m.
Your selective memory might recall that one time with the horrible hourlong taxi line in Las Vegas and forget the cases where everything went smoothly.
Figures are rounded up to the nearest five-minute increment.
Cases like these can represent a catch-22 for transportation planners. Demand may not be all that high because the service may be too infrequent to have become a reliable, habitual option. But the apparent lack of demand can make it hard for planners to win the argument for more frequent service.
Nate Silver is the founder and editor in chief of FiveThirtyEight. @natesilver538
New York City (38 posts) Air Travel (25) Travel (23) Cities (18) Airports (9) Taxis (9) AirTrain (1) Waze (1)


text:
Q: Автозаполнение данных datagridview Есть БД с двумя столбцами "Children" и "Sum".
Нужна помощь с автозаполнением данных.
Если в столбце "Children" пишется 0, то в сумму = 10000. Если 1, сумма = 12000. Если 2 и больше, сумма = 14000.
Помогите написать условия для заполнения
     private void dataGridView1_CellEndEdit(object sender, DataGridViewCellEventArgs e)
    {
           if (dataGridView1.Rows[0].Cells[0].Value == "0")
           {
            dataGridView1.CurrentRow.Cells[1].Value = 10000;
           }
    }

A: Ну если внутри именно этого события, то
private void dataGridView1_CellEndEdit(object sender, DataGridViewCellEventArgs e)
{
       var isInt = int.TryParse(dataGridView1.CurrentRow.Cells[0].Value, out int childrensCount);

       if (!isInt)
       {
           MessageBox.Show("Ошибка, невозможно определить количесство детей");
           return;
       }

       if (childrensCount < 0)
       {
           MessageBox.Show("Ошибка, количесство детей меньше нуля");
           return;
       }

       double money;

       switch (childrensCount)
       {
           case 0:
               money = 10000;
               break;

           case 1:
               money = 12000;
               break;

           default:
               money = 14000;
               break;
       }

       dataGridView1.CurrentRow.Cells[1].Value = money;
}


text:
Favorite(0 times)
DramaCrime
James Allen, who returned from World War I, does not want to live a modest life and decides to leave to find his happiness. He travels through America and works as a skilled craftsman in the construction industry. However, when it gets difficult, he lives in a shelter where a friend suggests they should eat a hamburger. What the friend really has in mind is to rob the restaurant, and soon Allen is working on a chain gang with a long prison sentence. Allen manages to escape, however, and he goes to Chicago, where he slowly but surely worked his way up the ladder for several years to become one of the most respected civil engineers in the city. His past catch up with him and despite the protests of heads of state and his many friends in Chicago, he finds himself back in the chain. He flees a second time and accepts that he has to lead a life of crime to survive.
Actors:Allen JenkinsPaul MuniGlenda FarrellHelen VinsonPreston FosterNoel FrancisBerton ChurchillEdward Ellis
Director:Mervyn LeRoy
Watch I Am a Fugitive from a Chain Gang (1932) Online Full Movie
Unique movie from 1932, a real hit in the cinemas in it's times. I don't want to spoil you the full plot of the film, but I will tell you now it's a very good movie to watch online. You can check other available hollywood movies online here on VIPMovies.to, no movie can be compared with I Am a Fugitive from a Chain Gang. Actors play and the music make a lot of scenes in this movie really unforgetable. Producer of I Am a Fugitive from a Chain Gang is Mervyn LeRoy. Watch I Am a Fugitive from a Chain Gang for free or download it using the download button.
I Am a Fugitive from a Chain Gang Online HD
I Am a Fugitive from a Chain Gang 1932 for Free
I Am a Fugitive from a Chain Gang Online Subtitles
I Am a Fugitive from a Chain Gang fmovies
I Am a Fugitive from a Chain Gang 1932 HD Online
Similar HD Movies and TV Series Online
Silent Witness 6
A Love Song for Bobby Long
Scrubs 8
Army Wives 4
Ghost Whisperer 3
Laguna Beach: The Real Orange County 2


North is Where it's At!
HEAD NORTH! Or if you're already here, stay warm while enjoying the outdoors! New for 2019, our Head North hoodie! Just like our other hoodies, the quality will blow you away!
Featuring preshrunk 80% cotton 20% polyester fleece, the cut of this hoodie is fitted and unbelievably comfortable!


text:
By Yohann Koshy
How the Golden Age of the UK Music Press Dreamed of Another World
'This is a story about intellectual openings, the wiring of politics into culture and a cohort of writers gloriously convinced of the world-historical importance of music'
Professional music critics did not know how to review the Beatles' 1966 album Revolver. With its tonal and thematic coherence, as well as its anticipatory psychedelia, it was more than a collection of songs: it had to be considered as a whole. This presented a formal challenge to those who were accustomed to evaluating LPs song-by-song, with frothy, lightweight copy. '[The critics at the time] want to take it seriously,' says rock-press archivist Mark Pringle. 'They want to write about it seriously, but they haven't got the language for it, because they are set in their particular pop-music journalist ways.' So, they end up writing lines like: it's a 'beaty little toe tapper with an interesting guitar solo'. What the underground press did, Pringle continues, was 'liberate everyone to try and find new ways of describing the music'.
This insight – taken from the transcript of a panel held as part of the 2015 'Underground/Overground' symposium at Birkbeck University – is reproduced in the recent publication A Hidden Landscape Once a Week (2019), compiled by former Wire editor Mark Sinker. The book presents essays, interviews and conversations that reflect on and historicize the proliferation of weekly and monthly music magazines, both underground and mainstream, with their 'new ways of describing' the sound and vision of post-1960s Britain. It is a eulogy to that period of intense artistic production and political activity – when a new genre was invented as often as worker militancy stopped the production line – prompting trains of thought that are worth continuing into the present.
The Beatles and producer George Martin, 1966. Courtesy: Wikimedia Commons
'I was captivated by the music press as something that was really like a spaceship landing in my sensibility in the mid-to-late 1970s [growing up in rural Shropshire],' Sinker tells me. A Hidden Landscape Once a Week profiles publications including International Times, Melody Maker, NME and Oz, among many others. A few louche anecdotes are recounted: music journalist Tony Stewart recalls walking into the NME offices in the early 1970s to hear a tape being played of another journalist's sexual activities on tour with Creedence Clearwater Revival. But this is really a story about intellectual openings, the wiring of politics into culture and a cohort of often self-taught writers who were gloriously convinced of the world-historical importance of music. It's a world of 5,000-word Q&As with David Bowie, album reviews that drop references to poststructuralism and take New Journalistic delight in over-using the first person, and a political bent that is staunchly Left.
These were the publications that convinced Sinker to become a music writer. Or, rather, that music would be his way into writing about the world. 'What was good about these papers was that they covered all these different areas and made them accessible. So, a reader would come in to read about punk or rock but go out knowledgeable about cinema or newly aware of black radical politics. I found that enormously exciting,' he says. The music 'inkies' staged a first encounter for many teenagers, starved of anything interesting in their parents' newspapers, with figures like Kathy Acker, Amiri Baraka and Roland Barthes. (Sinker studied philosophy at Oxford after reading about Barthes in the NME, only to find none of his tutors had heard of or were interested in French Theory.) The tone often was ironic, self-derisory; the style less literary and finely edited than its US equivalents; and it was all steeped in 'teenage confusion, obsession, ignorance and malice'. But these were also virtues.
A Hidden Landscape Once a Week, 2019, cover. Courtesy: MIT Press
So, too, was the commitment to an alternative vision of the world. In one essay, Cynthia Rose reframes the NME as a 'socialist music paper', since it backed the Campaign for Nuclear Disarmament, the women protesters at Greenham Common and the striking miners. But these commitments had limits. Sinker ends the book with a short piece by Paul Gilroy, the black theorist, who is sceptical of bromantic 'ethnographies of the NME office circa 1977', having encountered gatekeeping at publications like Sounds when he tried to challenge the self-appointed white custodians of black culture. He also makes note of a famous Oz cover from 1970 – a 'host of naked black women […] cavort before the reader in a fantastic orgy' – as evidence that colonial habits of thinking persisted among supposed radicals.
From a present-day standpoint, in which the Right finds little opposition from a cultural landscape characterized by pastiche and remakes – what music critic Simon Reynolds has dubbed 'retromania' – what stands out in A Hidden Landscape Once a Week is the political economy that underwrote the endeavour. This was a period of rising real wages and affordable housing. When Sinker arrived in London in the early 1980s, half of his friends were living in perfectly habitable squats: 'They were left alone by local councils because [the attitude was] better people be housed than not.' It wasn't until the 1990s that neoliberalism, with its transfer of debts from the state to individual, turned the screw. The music writer Charles Shaar Murray, interviewed by Sinker for the book, imagines the 1960s as emerging from the postwar expansion of higher education, particularly in art schools: 'People from the working class and lower middle class could now receive the kind of education that had only been available to the children of the wealthy,' he says. 'People were meeting and mingling, on a more or less equal basis, who 20 years earlier would have never met at all.' Similarly, youth clubs, many of which have shuttered under austerity, were an important incubator of grime music in the 2000s.
If a rebalancing of power, away from capital and toward labour, is one precondition for prising open those horizons again, other developments seem even less easily reversible, like the corporate capture of the internet. Technological developments were fruitful in the 1970s; journalist Mark Williams explains that the 'underground press emerged almost entirely as a consequence of the IBM golfball typesetter and the development of relatively cheap web-offset printing'. Correspondingly, the 2000s saw a burst of critical fluency with the self-publishing of the blogosphere; websites like Mark Fisher's k-punk perhaps being the best inheritor of the 'hidden landscape' metaphor – an otherworldly space for readers on the margins. As Sinker tells me, however, this phenomenon of 'writing [in one's] free time and the gift economy were incredibly exciting and liberating, but it was very quickly turned against us' – creating the conditions for a glut of easily exploitable writers. This was exemplified recently by the story of Rachel McMahon, a 19-year-old college student, who has written 692 quizzes for Buzzfeed, earning the company at least US$200,000, yet whose only recompense has been a few gift cards and coffee mugs. Her story came to light a few weeks after another round of journalist redundancies were announced at Buzzfeed, Huffington Post, Vice and other publications that originally took their cue from the creative spirit of the early internet.
Mark Fisher, 2014. Courtesy: Contour by Getty Images; photograph: Pal Hansen
Does the music press even exist anymore? Pitchfork (which may soon be paywalled) and The Wire maintain standards for serious and expansive writing, but would kill for the time when the NME was selling 250,000 copies per week. Audiences are more fragmented, too. In his introduction, Sinker discusses the notion of imagined communities, taken from Benedict Anderson's account, in his eponymous 1983 book, of the formation of political nationalisms. Readers clustered around print titles that represented them: an imagined community glued together by the physical technology of the magazine. Sinker thinks of the internet as his 'dream medium in many ways', but it has also changed this reader-publisher relationship: 'The way you read a magazine,' Sinker tells me, 'is you start at the beginning and leaf through. You skip some bits, but you glance at them. So, you're aware that they're part of the space you're in. And I don't think internet publishing works like that. You go straight to the thing you want.'
A dispersed audience reflects a diverse landscape; there is no one medium or art form that sits in the centre of the culture like popular music did: television and even food seem to be just as, if not more, important. Fifty years since critics struggled to articulate the sound of Revolver, album releases are rarely seismic events and, if they are, it's because they consciously try something else, as with Beyoncé's visual album Lemonade (2016), or for contingent reasons – like a surprise release date or unorthodox payment method. We relate to music through algorithmically generated playlists, DJ mixes and music videos. Most writing about music we encounter on a weekly basis is not in magazines but in YouTube comments, below those videos. Recognizing these facts of dethronement and fragmentation might be the place for musicians, and the self-appointed custodians in what remains of the music press, to start thinking, against the odds, of something new.
Main image: Brian Jones reading Melody Maker, 1964. Courtesy: Iconic Images/Getty Images; photograph: Terry O'Neill
Yohann Koshy
Yohann Koshy is a journalist based in London.
Olafur Eliasson at Tate Modern Review: Spectacle in an Age of Climate Crisis
Peter Strickland's Demon Dress Horror 'In Fabric' and the History of Killer Fashion
How the Art World Can Fight a 'Culture of Censorship'
Banksy Designs Stab-Proof Vest for Stormzy's Glastonbury Set
How Partial Blindness Showed Johann König How to Be a Gallerist
A Brief History of the Smiley
'Dirt was as important as gold': An Oral History of Robert Rauschenberg
We're All Tired of Biennials – So What Comes Next? Part 1: A Report on the Inaugural Edition of osloBIENNALEN
The Poor-Shaming Vision of Pride in Taylor Swift's 'You Need to Calm Down'
The Art of Selling Luxury
Vivian Maier: The Strangeness of Selves
Why Manga Shouldn't Pretend to Be High Art
A Heat-Wave Dispatch from Hydra
Memories of a Meteorite
How Murals Have Served as Mirrors for Political Change
Operation Night Watch is Revealing Rembrandt's Secrets (And You Can Watch Live)
Why in an Age of Climate Crisis, the Art World Must Shun Oil Sponsorship


Hook Champ LITE by GameClub Inc.
Try Hook Champ, completely free!
5 out of 5 score on Appvee.com!
4 out of 4 score on Slidetoplay.com!
Featured in the Best of 2009 for Toucharcade.com!
Featured under "Best Swinging Game" by Apple!
Hook Champ is a physics platformer about using a grappling hook to swing through haunted ruins at high speeds. Designed for immense replay value, Hook Champ features a retro style and the most hat fashion customization of any game on the market.
- Easy to learn, with a seamless tutorial: Swing, walk, and leap to victory!
- Local, Global, and OpenFeint High Score boards for every single level! Beat developer scores for surprises!
- Total OpenFeint Support: Achievements! Ghost Race Challenges! Leaderboards, including Most Coins Board!
- Character Upgrades and Collectibles: Spend your loot on character upgrades and fancy hats!
- Pick up and Play: After closing the app for any reason, resume your game exactly where you left off.
- Supports playing your own music! Play music from your own library, or use ours.
- Varied Levels: Each level has its own special gameplay challenges.
- Unlocks: Get new Challenge Levels, new characters, and more for progressing in the game!
- Fast load times: Detailed "Pixel graphics" technology allows the average load time to be about a second!