text:
Recommended More Bad Pharma
Home | Bad Pharma, Professor Ben Goldacre | Death by Medicine--Gary Null et al | Overtreatment costs | The Great Cholesterol Myth--Kendrick | Pharma Against Statins, PCSK9 Their Replacement | Recent Journal articles against statins | Endothelial Dysfunction its Key Role in Cardiovascular Disease | Beta blockers based on tobacco science guidelines 800,000 die | Zika, another false red alert for a new disease | Testosterone Under Seige by Pharma & FDA | Important end-points missing | The cancer chemotherapy scam | Wack at the corporate system | Your Personal Prescription information is public--Supreme Court rules | Pelvic screening, another exam that does more harm than good | Price Gouging with new Hepatitis-C drug | Computerized medicine directing consultations with patients | Pharma to get billions more from NIH, and their low taxes | Gov registery of clinical trials, poor posting record by pharma | Pharma uses press to attack cost regulations in UK | Female Viagra--Bull Shit, just a downer
Price Gouging with new Hepatitis-C drug
More of getting what the market will bear
The reason pharma's list price is so high is because of what they can soak the government for who pays the un-negotiated average wholesale price—as per legislation under Bush, that has not been changed by the Democrats. My topical $65/month testosterone, costs Medicare $365—the first is what I paid before going on Medicare; the second is what Medicare pays. My friend's 3 day hospital stay for a uterine infection (basic IV antibiotic) was billed at $21,000, of which Medicaid picked up $11,300 and the private insurance supposedly the remainder, minus a $400, her co-pay. Corporations in a corporatocracy are very good at gouging the system. The simple solution would be to legislate against price gouging.
http://www.fiercepharma.com/story/jama-hep-c-drugs-could-add-300-every-americans-insurance-premium/2014-07-21?utm_medium=nl&utm_source=internal
JAMA: Hep C drugs could add $300 to every American's insurance premium
The payer panic over the cost of Gilead Sciences' ($GILD) pricey-and-wildly-successful hepatitis C drug Sovaldi has been well documented. But now, one of the two biggest pharmacy benefits managers in the U.S. says the debate over Sovaldi's $1,000-per-pill price is a symptom of a bigger anxiety.
Specialty drugs, in two words. So, not just the new generation of highly effective, highly expensive hep C drugs, but a whole raft of drugs that stand to burden the U.S. healthcare system. And with that in mind, payers are going to have to develop an entire menu of ways to control their spending on pricey meds, CVS Caremark ($CVS) CMO Troyen Brennan and CSO William Shrank say in a JAMA commentary published online Monday. As the two authors point out, it's not just the price of Sovaldi that's the trouble. The drug is highly effective and promises to save money on pricey hep C complications. "[T]he more important issue is the number of people eligible for treatment," the commentary notes. "Sofosbuvir is not really a per-unit cost outlier but is a 'total cost' outlier because of its high cost and very large population eligible for treatment." That's millions of people, and many billions of dollars. "The simple math is that treatment of patients with HCV could add $200 to $300 per year to every insured American's health insurance premium for each of the next 5 years," the authors write.
Is it any wonder that insurers are trying all sorts of things to avoid the cost: Barring Sovaldi from formularies in spite of new treatment guidelines; treating only the sickest patients; demanding, in the case of Medicaid programs, additional state funding just to cover its cost. With more-pricey specialty meds rolling out all the time, payers will be looking at these and other strategies to save money. Consider, for instance, the state of Arkansas' choice to bar some cystic fibrosis patients from using Kalydeco, Vertex Pharmaceuticals' ($VRTX) $300,000 treatment.
"Effective approaches to control costs for high-priced medications need to be developed and evaluated to ensure broad, equitable, and appropriate use of these new interventions in an already stressed healthcare system," the commentary states. Any ideas?
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
http://www.fiercepharmamarketing.com/press-releases/cvs-caremark-jama-commentary-new-hepatitis-c-treatments-highlight-need-cont
CVS Caremark JAMA Commentary: New Hepatitis C Treatments Highlight Need to Control Costs of High-Priced Specialty Medications
Media Contact: Christine Cramer, CVS Caremark, (401) 770-3317, christine.cramer@cvscaremark.com
WOONSOCKET, R.I., July 21, 2014 /PRNewswire/ --A new Journal of the American Medical Association (JAMA) commentary published online today and scheduled to appear in the August 13 print edition addresses the controversy surrounding the high costs of new Hepatitis C Virus (HCV) treatments such as Sovaldi (sofosbuvir) and implications for the growing specialty pharmacy market. CVS Caremark (NYSE: CVS) Chief Medical Officer Troyen A. Brennan, M.D., and Chief Scientific Officer William Shrank, M.D., suggest that the discussion to this point has focused inappropriately on price per pill, rather than on total cost to the health care system.
"Perhaps the controversy about sofosbuvir is really about the increasing total cost of specialty medications, considering both cost and prevalence of treatment targets," the authors write. "While a daily oral medication that costs $1,000 per pill gains attention, the more important issue is the number of people eligible for treatment. Sofosbuvir is not really a per-unit cost outlier, but is a 'total cost' outlier because of its high cost and very large population eligible for treatment a beacon for costs of specialty medications generally."
While HCV treatment options have improved dramatically over the past three years, with cure rates up to 95%, new therapies such as sofosbuvir can cost patients $84,000 for a standard 12-week course of therapy or roughly $1,000 per pill. Utilizing sofosbuvir as an example, the commentary analyzes the price of HCV medications in the context of the cost of investment and of comparative treatments, and finds that the issues are much more nuanced than previous discussions focusing on cost per pill alone.
The authors also explore the many different efforts currently underway to control overall costs. For example, some state Medicaid programs have not added new HCV medications to their formularies, despite new practice guidelines. Other states are delaying the addition of sofosbuvir until they can arrange a level of state subsidization, and many private insurers have instituted prior authorization programs to manage costs. Some public and private care coordinators are asking physicians to treat only those patients who absolutely need therapy now, as new treatment options anticipated later this year are expected to help lower costs.
Brennan and Shrank add: "A value-driven approach to pricing focuses on how treatment with sofosbuvir compares with other treatments for HCV infection. Value also has to consider the efficacy of treatment, and requires more sophisticated cost-effectiveness analyses, such as the incremental cost-effectiveness ratio, representing the added cost of an additional quality-adjusted life-year."
The authors say the health care system needs to adjust more quickly to the growing cost and utilization of specialty medications across a variety of conditions. "This is not an isolated phenomenon; other expensive specialty medications are in development, many with large potential pools of targeted patients. Effective approaches to control costs for high priced medications need to be developed and evaluated to ensure broad, equitable, and appropriate use of these new interventions in an already stressed health care system."
For access to the full JAMA commentary, please visit: http://jama.jamanetwork.com/article.aspx?doi=10.1001/jama.2014.8897
About CVS Caremark
CVS Caremark is dedicated to helping people on their path to better health as the largest integrated pharmacy company in the United States. Through the company's more than 7,600 CVS/pharmacy stores; its leading pharmacy benefit manager serving more than 64 million plan members; and its retail health clinic system, the largest in the nation with more than 800 Minute Clinic locations, it is a market leader in mail order, retail and specialty pharmacy, retail clinics, and Medicare Part D Prescription Drug Plans. As a pharmacy innovation company with an unmatched breadth of capabilities, CVS Caremark continually strives to improve health and lower costs by developing new approaches such as its unique Pharmacy Advisor program that helps people with chronic diseases such as diabetes obtain and stay on their medications. Find more information about how CVS Caremark is reinventing pharmacy for better health at info.cvscaremark.com.
JAMA. Published online July 20, 2014. doi:10.1001/jama.2014.8897 http://jama.jamanetwork.com/article.aspx?articleid=1890401
New Expensive Treatments for Hepatitis C Infection
JAMA. Published online July 20, 2014. doi:10.1001/jama.2014.8897
Treatment of infection with hepatitis C virus (HCV) has changed substantially in the last 3 years, with new therapies now reaching cure rates (defined by sustained virologic response) higher than 95%. As little as 3 years ago, treatment involved an arduous course of pegylated interferon and ribavirin, which caused serious adverse effects in more than 80% of patients; less than 50% of patients could finish the treatment course. Because HCV infection can be indolent, with slowly developing liver injury in the form of scarring and fibrosis, many patients were so-called warehoused by their physicians, followed up closely while waiting for more promising treatments.1
In 2011, introduction of the first generation of protease inhibitors, particularly telaprevir and boceprevir, heralded change. When combined with interferon and ribavirin, these medications produced much higher sustained viral responses in the HCV genotype 1 subclasses.1 However, these agents were much more expensive than standard therapy, at a cost of more than $80 000 per course of therapy, and were associated with high levels of viral resistance development if patients did not strictly adhere to therapy.
In 2014, the introduction of polymerase inhibitors set a new standard. The first in this class, sofosbuvir, manufactured by Gilead, has shown significant effectiveness when combined with ribavirin and interferon in patients with genotype 1 HCV. Sofosbuvir also can be combined with another new protease inhibitor, simeprevir, to treat patients in whom interferon-based therapy has failed. These regimens provide interferon-free treatment protocols that are shorter and well tolerated and have 80% to 95% cure rates.1 This fall, an oral combination of sofosbuvir and ledipasvir will be introduced that inhibits both the NS5B polymerase and NS5A polymerase and has been shown to reduce treatment to an 8-week course with cure rates of more than 95%.2 Now, a chronic disease that affects millions of Americans can be cured by well-tolerated oral medications.
Perhaps surprisingly, most media coverage of this important development in HCV treatment has not focused on the cure rates but, rather, on cost. The price of sofosbuvir is essentially $1000 per pill, or $84 000 for a standard 12-week course. The fact that pricing in the United Kingdom for a similar regimen is $54 000, and perhaps as low as $900 in Egypt and other developing countries,3indicates that the pricing in the United States is a purely financial decision by Gilead and has outraged many. Indeed, some pharmacy benefit managers are calling on their clients to boycott these products until alternatives are available late in 2014.4 But is the pricing unfair? This question can be considered from at least 2 perspectives—"return on investment" and "value driven." In a market-driven health care system such as that in the United States, the manufacturer, Gilead, should be able to recoup its costs of development (ie, return on investment). With sofosbuvir, this is fairly straightforward. The medication was identified and initially tested by a different firm, Pharmasset, which Gilead bought in 2012 for $11 billion.5Although there were additional drug development costs, assume that sofosbuvir cost $11 billion to develop. If all of the approximately 3 million HCV carriers in the United States were treated with sofosbuvir at current prices, Gilead would net more than $250 billion dollars, or better than a 20-to-1 return on its investment, suggesting that pricing is inappropriately high. However, not all HCV-infected persons will be treated with sofosbuvir. A half dozen major competing medications are in development and expected to come to market in the next 4 years; as this occurs, price competition will likely drive down costs and the return for Gilead.
A value-driven approach to pricing focuses on how treatment with sofosbuvir compares with other treatments for HCV infection. For instance, according to the average wholesale price from Medi-Span, the cost of a 12-week course of sofosbuvir plus pegylated interferon and ribavirin is $116 910.72.6 This price is expensive, but the cost of a 24-week course of the first-generation protease inhibitor telaprevir plus pegylated interferon and ribavirin is $111 606.48, and the 48-week course that many patients need is $143 827.92.6
Average wholesale price is only part of the equation. Value also has to consider the efficacy of treatment and requires more sophisticated cost-effectiveness analyses, such as the incremental cost-effectiveness ratio, representing the added cost of an additional quality-adjusted life-year. The evidence documenting the effectiveness and tolerability of the newer sofosbuvir regimens, and the expected reductions in downstream costs associated with averted progression of disease, suggest that these newer expensive medications may represent a relatively good "deal" by typical cost-effectiveness thresholds. Indeed, the cost per additional quality-adjusted life-year may be quite comparable with other therapies.
Perhaps the controversy about sofosbuvir is really about the increasing total cost of specialty medications, considering both cost and prevalence of treatment targets. While a daily oral medication that costs $1000 per pill gains attention, the more important issue is the number of people eligible for treatment. With broader screening, the pool of eligible patients may be as high as 3 million in the United States alone.7 The simple math is that treatment of patients with HCV could add $200 to $300 per year to every insured American's health insurance premium for each of the next 5 years. Thus sofosbuvir is not really a per-unit cost outlier but is a "total cost" outlier because of its high cost and very large population eligible for treatment—a beacon for costs of specialty medications generally.
These costs will be especially burdensome over the next year. Presently, Gilead has a monopoly, and its investors expect it to make a profit during this period. However, it is anticipated that by December, another highly effective oral regimen will become available.8 Pharmaceutical manufacturers know that monopolies are evanescent. With HCV treatment, that lesson is very recent: the manufacturers of telaprevir and boceprevir priced their products high and were profitable for 15 to 18 months, but now their products are essentially replaced by the new polymerase inhibitors.
Given this context, how should costs be managed? In some state Medicaid programs, the new medications have not been added to the formulary, despite the new practice guidelines. Physicians for whom the drug is denied by the state are going to Gilead, and, by report, the company is quietly subsidizing the costs—there is an official assistance program offered by Gilead.9 In states where managed care plans provide the Medicaid benefit, many are not adding sofosbuvir to their formulary until they convince the state to renegotiate or consider "carving out the drug"—ie, having the state pay directly for the therapy outside the capitated payment agreement.
Some private insurers have added sofosbuvir to the formulary and are absorbing the costs but also are taking steps to ensure appropriate utilization by developing prior authorization programs based on practice guidelines. Some insurers are asking physicians to treat only patients who absolutely need therapy now. Delaying treatment for some patients promises lower future costs, as competition generated by new drugs will likely cause prices to decrease as pharmacy benefit managers negotiate for best prices on behalf of health insurers and employers. This approach has been countenanced recently by expert panels.10
The ultimate approach to cost will be lower prices, which will occur as more products create competition. However, it will likely entail narrower formularies, in which the physician choice of a particular medication is limited by the deals negotiated by insurers and pharmacy benefit managers. Even then, the costs could still be very high—restrictive formularies have led to discounts of 30% to 40% for branded medications, not the greater than 95% discounts that occur when drug patents expire and generic competitors enter.
In summary, the health care system is adjusting quickly, but perhaps not quickly enough, to compensate for the high prices of HCV medications and, more importantly, the high cost of treating all HCV-infected individuals. However, this is not an isolated phenomenon; other expensive specialty medications are in development, many with large potential pools of targeted patients. Effective approaches to control costs for high-priced medications need to be developed and evaluated to ensure broad, equitable, and appropriate use of these new interventions in an already stressed health care system.
Ghany MG, Liang TJ. Current and future therapies for hepatitis C virus infection. N Engl J Med. 2013;369(7):679-680.
PubMed | Link to Article
Kowdley KV, Gordon SC, Reddy KR, et al; ION-3 Investigators. Ledipasvir and sofosbuvir for 8 or 12 weeks for chronic HCV without cirrhosis. N Engl J Med. 2014;370(20):1879-1888.
TWN Info Service on Intellectual Property Issues. Health: no sofosbuvir patent in Egypt, but Gilead deal still expensive. April 10, 2014.http://www.twnside.org.sg/title2/intellectual_property/info.service/2014/ip140408.htm. Accessed July 8, 2014.
Staton T. Express Scripts assembling anti-Sovaldi coalition to shut out Gilead hep C drug. April 8, 2014http://www.fiercepharma.com/story/express-scripts-assembling-anti-sovaldi-coalition-shut-out-gilead-hep-c-dru/2014-04-08. Accessed July 3, 2014.
Gounder C. A better treatment for hepatitis C.New Yorker. December 9, 2013.http://www.newyorker.com/online/blogs/elements/2013/12/a-new-treatment-for-hepatitis-c.html. Accessed July 8, 2014.
Medi-Span data monitor.Medi-Span Master Drug Data Base v2.5 (MDDB). Indianapolis, IN: Clinical Drug Information LLC; May 20, 2014.
Denniston MM, Jiles RB, Drobeniuc J, et al. Chronic hepatitis C virus infection in the United States, National Health and Nutrition Examination Survey 2003 to 2010. Ann Intern Med. 2014;160(5):293-300.
Feld JJ, Kowdley KV, Coakley E, et al. Treatment of HCV with ABT-450/r–ombitasvir and dasabuvir with ribavirin. N Engl J Med. 2014;370(17):1594-1603.
Gilead. Support path for Sovaldi.http://gilead.com/responsibility/us-patient-access/support%20path%20for%20sovaldi. Accessed July 3, 2014.
California Technology Assessment Forum. The Comparative Clinical Effectiveness and the Value of Simeprevir and Sofosbuvir in the Treatment of Chronic Hepatitis C Infection: Final Report. San Francisco: California Technology Assessment Forum; April 15, 2014.
Looking for a topic, use Google Internal Search Engine INTERNAL SITE SEARCH ENGINE by Google


text:
De drie Rieteilanden zijn onderdeel van de Amsterdamse wijk IJburg in het stadsdeel Oost. Vrijwel alle straten zijn naar rietsoorten of andere oeverplanten genoemd.

Het Grote Rieteiland ligt tegen de westelijke helft van Haveneiland aan, gescheiden door de "Groene Tunnel", een brede gracht met ruimte voor natuur. De gracht is via sluizen verbonden met het IJmeer, waardoor het Grote Rieteiland geen vrijliggend eiland is in het IJmeer, in tegenstelling tot Rieteiland Oost en Kleine Rieteiland, dat naast Grote Rieteiland ligt. De langste straten zijn de Zwanebloemlaan en de Mattenbiesstraat. De Vennepluimstraat, Diemerparklaan en de Ruisrietstraat vormen via bruggen de verbinding met het Haveneiland - de Diemerparklaan verbindt via een tweede brug ook het Kleine Rieteiland. Verder is er een brug vanaf de Oeverzeggestraat naar het Diemerpark. Er is een basisschool, de Willibrordschool, op het Grote Rieteiland te vinden.

Het Kleine Rieteiland ligt tussen het Grote Rieteiland en het Diemerpark. De enige straat is de Lisdoddelaan. Op deze laan zijn vrijwel uitsluitend in eigen beheer gebouwde geschakelde villa's te vinden. Er was een grote vrijheid bij de bouw en een bijzondere, lage en diepe bouwvorm opgelegd. Dit heeft een bijzonder straatbeeld met een grote verscheidenheid aan architectuur opgeleverd, waarmee het een bezienswaardigheid vormt. Het Kleine Rietland is via een brug in de Diemerparklaan en een tweede brug voor fietsers verbonden met het Grote Rieteiland, en ook via een fietsersbrug met het Diemerpark.

Het Rieteiland-Oost is gelegen tussen het oostelijk deel van het Haveneiland en het Diemerpark, waarmee het via bruggen verbonden is. Sinds 2009 zijn hier vrijstaande villa's gebouwd. In 2011 heeft Tennisclub IJburg hier haar deuren geopend. Verder is kanovereniging Kano op IJburg er gevestigd.

Wijk in Amsterdam
Kunstmatig eiland in Nederland
Amsterdams eiland
Amsterdam-Oost

redpajama_set_name: RedPajamaWikipedia


text:
require File.join( File.dirname(__FILE__), "..", "spec_helper" )

describe Batsir::Stage do
  def create_stage(options = {})
    defaults = {
      :name   => "Test Stage",
      :chain  => Batsir::Chain.new
    }
    Batsir::Stage.new(defaults.merge(options))
  end

  before :all do
    class StubFilter < Batsir::Filter
    end

    class AnotherFilter < Batsir::Filter
    end

    @object_type = "SomeResource"
  end

  it "is a Celluloid Actor" do
    expect(Batsir::Stage.ancestors).to include Celluloid
  end

  it "can name the stage" do
    stage = Batsir::Stage.new
    name = "StageName"
    stage.name = name
    expect(stage.name).to eq(name)
  end

  it "can set the name in the constructor" do
    name = "StageName"
    stage = Batsir::Stage.new(:name => name)
    expect(stage.name).to eq(name)
  end

  it "can set the aggregator chain to which the stage belongs" do
    chain = "Chain"
    stage = Batsir::Stage.new(:chain => chain)
    expect(stage.chain).to eq(chain)
  end

  context "with respect to filters" do
    it "cannot set the filters directly" do
      stage = Batsir::Stage.new
      expect { stage.filters = {} }.to raise_error(NoMethodError)
    end

    it "stores filters using filter declarations" do
      filter = "Filter"
      stage = Batsir::Stage.new
      stage.add_filter(filter)
      expect(stage.filter_declarations).not_to be_nil
      expect(stage.filter_declarations.size).to eq(1)
      declaration = stage.filter_declarations.first
      expect(declaration.filter).to eq(filter)
      expect(declaration.options).to eq({})
    end

    it "returns an empty array when the #filters method is called without any declared filters" do
      stage = Batsir::Stage.new
      expect(stage.filters).not_to be_nil
      expect(stage.filters).to eq([])
    end

    it "returns all filters when the #filters method is called" do
      filter1 = "Filter"
      filter2 = "Filter2"
      filter3 = "Filter"
      stage = Batsir::Stage.new
      stage.add_filter(filter1)
      stage.add_filter(filter2)
      stage.add_filter(filter3)

      expect(stage.filters).not_to be_nil
      expect(stage.filters.size).to eq(3)
      expect(stage.filters[0]).to eq(filter1)
      expect(stage.filters[1]).to eq(filter2)
      expect(stage.filters[2]).to eq(filter3)
    end

    it "adds a filter to its filters" do
      filter = "Filter"
      stage = Batsir::Stage.new
      stage.add_filter(filter)
      expect(stage.filters).not_to be_nil
      expect(stage.filters).to include filter
    end

    it "can have multiple filters of the same class but with different options" do
      stage = Batsir::Stage.new
      stage.add_filter(:filter)
      stage.add_filter(:filter, :foo => :bar)

      expect(stage.filters).to include :filter
      expect(stage.filters.size).to eq(2)
    end

    it "can add filters with on options hash" do
      filter = :filter
      options = {:foo => :bar}

      stage = Batsir::Stage.new
      stage.add_filter(filter, options)

      expect(stage.filters).not_to be_nil
      expect(stage.filters).not_to be_empty
      expect(stage.filters).to include filter
      expect(stage.filter_declarations.first.options).to eq(options)
    end

    it "can add multiple filters with option hashes" do
      filter1 = :filter1
      filter2 = :filter2
      options1 = {:foo1 => :bar1}
      options2 = {:foo2 => :bar2}

      stage = Batsir::Stage.new
      stage.add_filter(filter1, options1)
      stage.add_filter(filter2, options2)

      expect(stage.filters).to include filter1
      expect(stage.filters).to include filter2
      expect(stage.filter_declarations[0].options).to eq(options1)
      expect(stage.filter_declarations[1].options).to eq(options2)
    end

    it "adds empty options hashes to filters when no option hash is given" do
      filter = :filter

      stage = Batsir::Stage.new
      stage.add_filter(filter)

      expect(stage.filters).not_to be_nil
      expect(stage.filters).not_to be_empty
      expect(stage.filters).to include filter
      expect(stage.filter_declarations.first.options).to eq({})
    end

    it "can add a filter more than once" do
      filter = :filter
      stage = Batsir::Stage.new
      stage.add_filter(filter)
      stage.add_filter(filter)
      expect(stage.filters).not_to be_nil
      expect(stage.filters).not_to be_empty
      expect(stage.filters.size).to eq(2)
    end

    it "can add filter with different options and respect the order" do
      filter = :filter
      other_filter = :other_filter

      stage = Batsir::Stage.new
      stage.add_filter(filter)
      stage.add_filter(other_filter)
      stage.add_filter(filter, :foo => :bar)
      expect(stage.filters.size).to eq(3)
    end
  end

  context "with respect to acceptors" do
    it "initially has an empty list of acceptors" do
      stage = Batsir::Stage.new
      expect(stage.acceptors).not_to be_nil
      expect(stage.acceptors).to be_empty
    end

    it "cannot set the acceptors directly" do
      stage = Batsir::Stage.new
      expect { stage.acceptors = {} }.to raise_error(NoMethodError)
    end

    it "can add new acceptors" do
      stage = Batsir::Stage.new
      stage.add_acceptor(:acceptor)
      expect(stage.acceptors).not_to be_nil
      expect(stage.acceptors).not_to be_empty
      expect(stage.acceptors.keys).to include :acceptor
    end

    it "stores a set of different options for each acceptor" do
      stage = Batsir::Stage.new
      stage.add_acceptor(:acceptor)
      expect(stage.acceptors[:acceptor]).to be_a Set
    end

    it "can have multiple acceptors of the same class but with different options" do
      stage = Batsir::Stage.new
      stage.add_acceptor(:acceptor_class)
      stage.add_acceptor(:acceptor_class, :foo => :bar)

      expect(stage.acceptors).not_to be_nil
      expect(stage.acceptors).not_to be_empty
      expect(stage.acceptors.keys).to include :acceptor_class
      expect(stage.acceptors[:acceptor_class].size).to eq(2)
    end

    it "can add an acceptor with an options hash" do
      stage = Batsir::Stage.new
      options = {:foo => :bar}
      stage.add_acceptor(:acceptor, options)

      expect(stage.acceptors).not_to be_nil
      expect(stage.acceptors).not_to be_empty
      expect(stage.acceptors.keys).to include :acceptor
      expect(stage.acceptors[:acceptor].first).to eq(options)
    end

    it "adds an empty options hash for added acceptors without options" do
      stage = Batsir::Stage.new
      stage.add_acceptor(:acceptor)

      expect(stage.acceptors).not_to be_nil
      expect(stage.acceptors).not_to be_empty
      expect(stage.acceptors.keys).to include :acceptor
      expect(stage.acceptors[:acceptor].first).to eq({})
    end

    it "initially has an empty list of cancellators" do
      stage = Batsir::Stage.new
      expect(stage.cancellators).not_to be_nil
      expect(stage.cancellators).to be_empty
    end

    context "with respect to acceptor transformers" do
      it "has an empty acceptor transformers queue by default" do
        stage = Batsir::Stage.new

        expect(stage.acceptor_transformers).not_to be_nil
        expect(stage.acceptor_transformers).to be_empty
      end

      it "can add a transformer to the acceptors" do
        stage = Batsir::Stage.new

        transformer = :transformer

        stage.add_acceptor_transformer(transformer)
        expect(stage.acceptor_transformers).not_to be_empty

        expect(stage.acceptor_transformers.first.transformer).to eq(transformer)
      end

      it "adds an empty options hash by default" do
        stage = Batsir::Stage.new

        transformer = :transformer
        stage.add_acceptor_transformer(transformer)
        expect(stage.acceptor_transformers).not_to be_empty

        expect(stage.acceptor_transformers.first.options).to eq({})
      end

      it "can add options to a transformer" do
        stage = Batsir::Stage.new

        transformer = :transformer
        options = {:foo => :bar}

        stage.add_acceptor_transformer(transformer, options)
        expect(stage.acceptor_transformers).not_to be_empty

        expect(stage.acceptor_transformers.first.transformer).to eq(transformer)
        expect(stage.acceptor_transformers.first.options).to eq(options)
      end

      it "can add multiple transformers" do
        stage = Batsir::Stage.new

        transformer1 = :transformer1
        transformer2 = :transformer2

        stage.add_acceptor_transformer(transformer1)
        stage.add_acceptor_transformer(transformer2)
        expect(stage.acceptor_transformers).not_to be_empty
        expect(stage.acceptor_transformers.size).to eq(2)

        transformers = stage.acceptor_transformers.map{|td| td.transformer}
        expect(transformers).to include transformer1
        expect(transformers).to include transformer2
      end

      it "keeps the transformers in the order of declaration" do
        stage = Batsir::Stage.new

        transformer1 = :transformer1
        transformer2 = :transformer2

        stage.add_acceptor_transformer(transformer1)
        stage.add_acceptor_transformer(transformer2)
        expect(stage.acceptor_transformers).not_to be_empty
        expect(stage.acceptor_transformers.size).to eq(2)

        expect(stage.acceptor_transformers.first.transformer).to eq(transformer1)
        expect(stage.acceptor_transformers.last.transformer).to eq(transformer2)
      end

      it "can add a transformer more than once" do
        stage = Batsir::Stage.new

        transformer = :transformer

        stage.add_acceptor_transformer(transformer)
        stage.add_acceptor_transformer(transformer)
        expect(stage.acceptor_transformers).not_to be_empty
        expect(stage.acceptor_transformers.size).to eq(2)

        expect(stage.acceptor_transformers.first.transformer).to eq(transformer)
        expect(stage.acceptor_transformers.last.transformer).to eq(transformer)
      end
    end
  end

  context "with respect to notifiers" do
    it "initially has an empty notifiers queue" do
      stage = Batsir::Stage.new
      expect(stage.notifiers).not_to be_nil
      expect(stage.notifiers).to be_empty
    end

    it "cannot set the notifiers directly" do
      stage = Batsir::Stage.new
      expect { stage.notifiers = {} }.to raise_error(NoMethodError)
    end

    it "can add new notifiers" do
      stage = Batsir::Stage.new

      stage.add_notifier(:notifier)
      expect(stage.notifiers).not_to be_nil
      expect(stage.notifiers).not_to be_empty
      expect(stage.notifiers.keys).to include :notifier
    end

    it "stores a set of different options for each notifier" do
      stage = Batsir::Stage.new
      stage.add_notifier(:notifier)
      expect(stage.notifiers[:notifier]).to be_a Set
    end

    it "can have multiple notifiers of the same class but with different options" do
      stage = Batsir::Stage.new
      stage.add_notifier(:notifier_class)
      stage.add_notifier(:notifier_class, :foo => :bar)

      expect(stage.notifiers).not_to be_nil
      expect(stage.notifiers.keys).to include :notifier_class
      expect(stage.notifiers[:notifier_class].size).to eq(2)
    end

    it "can set a notifier with an options hash" do
      stage = Batsir::Stage.new

      options = {:foo => :bar}

      stage.add_notifier(:notifier, options)
      expect(stage.notifiers).not_to be_nil
      expect(stage.notifiers).not_to be_empty
      expect(stage.notifiers.keys).to include :notifier
      expect(stage.notifiers[:notifier].first).to eq(options)
    end

    it "adds an empty options hash for added notifiers without options" do
      stage = Batsir::Stage.new

      stage.add_notifier(:notifier)
      expect(stage.notifiers).not_to be_nil
      expect(stage.notifiers).not_to be_empty
      expect(stage.notifiers.keys).to include :notifier
      expect(stage.notifiers[:notifier].first).to eq({})
    end

    context "with respect to notifier transformers" do
      it "has an empty notifier transformers queue by default" do
        stage = Batsir::Stage.new

        expect(stage.notifier_transformers).not_to be_nil
        expect(stage.notifier_transformers).to be_empty
      end

      it "can add a transformer to the notifiers" do
        stage = Batsir::Stage.new

        transformer = :transformer

        stage.add_notifier_transformer(transformer)
        expect(stage.notifier_transformers).not_to be_empty

        expect(stage.notifier_transformers.first.transformer).to eq(transformer)
      end

      it "adds an empty options hash by default" do
        stage = Batsir::Stage.new

        transformer = :transformer
        stage.add_notifier_transformer(transformer)
        expect(stage.notifier_transformers).not_to be_empty

        expect(stage.notifier_transformers.first.options).to eq({})
      end

      it "can add options to a transformer" do
        stage = Batsir::Stage.new

        transformer = :transformer
        options = {:foo => :bar}

        stage.add_notifier_transformer(transformer, options)
        expect(stage.notifier_transformers).not_to be_empty

        expect(stage.notifier_transformers.first.transformer).to eq(transformer)
        expect(stage.notifier_transformers.first.options).to eq(options)
      end

      it "can add multiple transformers" do
        stage = Batsir::Stage.new

        transformer1 = :transformer1
        transformer2 = :transformer2

        stage.add_notifier_transformer(transformer1)
        stage.add_notifier_transformer(transformer2)
        expect(stage.notifier_transformers).not_to be_empty
        expect(stage.notifier_transformers.size).to eq(2)

        transformers = stage.notifier_transformers.map{|td| td.transformer}
        expect(transformers).to include transformer1
        expect(transformers).to include transformer2
      end

      it "keeps the transformers in the order of declaration" do
        stage = Batsir::Stage.new

        transformer1 = :transformer1
        transformer2 = :transformer2

        stage.add_notifier_transformer(transformer1)
        stage.add_notifier_transformer(transformer2)
        expect(stage.notifier_transformers).not_to be_empty
        expect(stage.notifier_transformers.size).to eq(2)

        expect(stage.notifier_transformers.first.transformer).to eq(transformer1)
        expect(stage.notifier_transformers.last.transformer).to eq(transformer2)
      end

      it "can add a transformer more than once" do
        stage = Batsir::Stage.new

        transformer = :transformer

        stage.add_notifier_transformer(transformer)
        stage.add_notifier_transformer(transformer)
        expect(stage.notifier_transformers).not_to be_empty
        expect(stage.notifier_transformers.size).to eq(2)

        expect(stage.notifier_transformers.first.transformer).to eq(transformer)
        expect(stage.notifier_transformers.last.transformer).to eq(transformer)
      end
    end
  end

  context "with respect to conditional notifiers" do
    it "initially has an empty conditional notifiers queue" do
      stage = Batsir::Stage.new
      expect(stage.conditional_notifiers).not_to be_nil
      expect(stage.conditional_notifiers).to be_empty
    end

    it "cannot set the conditional notifiers directly" do
      stage = Batsir::Stage.new
      expect { stage.conditional_notifiers = {} }.to raise_error(NoMethodError)
    end

    it "can add new conditional notifiers" do
      stage = Batsir::Stage.new

      stage.add_conditional_notifier(:notifier)
      expect(stage.conditional_notifiers).not_to be_nil
      expect(stage.conditional_notifiers).not_to be_empty
    end
  end

  context "with respect to compiling the stage" do
    before :all do
      @stage_name = "Stage 1"

      Celluloid.boot

      stage = Batsir::Stage.new(:name => @stage_name)

      stage.add_notifier_transformer(Batsir::Transformers::Transformer)
      stage.add_notifier(Batsir::Notifiers::Notifier)
      stage.add_filter(Batsir::Filter)
      stage.add_filter(Batsir::Filter)

      @created_class = eval( stage.compile )
    end

    it "creates a class named after the stage name" do
      expect(@created_class.to_s).to eq("Stage1Worker")
    end

    it "creates a Batsir::StageWorker class" do
      expect(@created_class.ancestors).to include Batsir::StageWorker
    end

    it "creates a class that includes Sidekiq::Worker" do
      expect(@created_class.ancestors).to include Sidekiq::Worker
    end

    it "creates a worker class named after the stage name" do
      expect(@created_class.stage_name).to eq(@stage_name)
    end

    it "adds the notifier during compilation" do
      instance = @created_class.new
      expect(instance.filter_queue.notifiers).not_to be_nil
      expect(instance.filter_queue.notifiers).not_to be_empty
      expect(instance.filter_queue.notifiers.size).to eq(1)
      expect(instance.filter_queue.notifiers.first).to be_a Batsir::Notifiers::Notifier
    end

    it "adds a transformer to the notifier during compilation" do
      instance = @created_class.new

      expect(instance.filter_queue.notifiers.first.transformer_queue).not_to be_empty
      expect(instance.filter_queue.notifiers.first.transformer_queue.first).to be_a Batsir::Transformers::Transformer
    end

    it "adds a JSONOutputTransformer by default when no transformers are defined" do
      stage = Batsir::Stage.new(:name => "SomeName")

      stage.add_notifier(Batsir::Notifiers::Notifier)

      created_class = eval( stage.compile )
      instance = created_class.new

      expect(instance.filter_queue.notifiers).not_to be_nil
      expect(instance.filter_queue.notifiers).not_to be_empty
      expect(instance.filter_queue.notifiers.first.transformer_queue).not_to be_empty
      expect(instance.filter_queue.notifiers.first.transformer_queue.first).to be_a Batsir::Transformers::JSONOutputTransformer
    end

    it "initialises a class local filter queue" do
      expect(@created_class.filter_queue).not_to be_nil
      expect(@created_class.filter_queue).not_to be_empty
    end

    it "has intitialized the filters" do
      expect(@created_class.filter_queue.map{|filter| filter.class.to_s}).to include "Batsir::Filter"
    end

    it "can add a filter multiple times" do
      expect(@created_class.filter_queue.select{ |filter| filter.class == Batsir::Filter }.size).to eq(2)
    end

    it "uses the class local filter queue once an instance is initialized" do
      instance = @created_class.new
      expect(instance.filter_queue).to eq(@created_class.filter_queue)
    end

    it "initialises all filters in the filter queue" do
      @created_class.filter_queue.each do |filter|
        expect(filter).not_to be_a Class
      end
    end
  end

  context "with respect to starting the stage" do
    before :all do
      class MockAcceptor < Batsir::Acceptors::Acceptor

        def foo=(bar)
        end

        def stage_name=(name)
          @@stage_name = name
        end

        def self.stage_name
          @@stage_name
        end

        def start
          @@start_count ||= 0
          @@start_count += 1
        end

        def add_transformer(transformer)
          @@added_transformers ||= []
          @@added_transformers << transformer
        end

        def self.added_transformers
          @@added_transformers ||= []
        end

        def self.start_count
          @@start_count ||= 0
        end

        def self.reset
          @@start_count = 0
          @@stage_name = nil
          @@added_transformers = []
        end

      end

      class Celluloid::ActorProxy
        def start!
          Celluloid::Actor.call @mailbox, :start
        end
      end
    end

    before :each do
      MockAcceptor.reset
    end

    it "sets the stage name on acceptors when they are started" do
      stage = create_stage
      stage.add_acceptor MockAcceptor
      stage.add_acceptor MockAcceptor, :foo => :bar

      stage.start
      expect(MockAcceptor.stage_name).to eq(stage.name)
    end

    it "initially has an empty list of running acceptors" do
      stage = create_stage
      stage.add_acceptor MockAcceptor

      expect(stage.running_acceptors).not_to be_nil
      expect(stage.running_acceptors).to be_empty
    end

    it "keeps track of running acceptors" do
      stage = create_stage
      stage.add_acceptor MockAcceptor

      stage.start
      expect(stage.running_acceptors.size).to eq(1)
    end

    it "starts all acceptors" do
      stage = create_stage
      stage.add_acceptor MockAcceptor
      stage.add_acceptor MockAcceptor, :foo => :bar

      expect(MockAcceptor.start_count).to eq(0)

      stage.start
      sleep(0.05)

      expect(MockAcceptor.start_count).to eq(2)
    end

    it "adds a Batsir::Transformers::JSONInputTransformer to acceptors when no transformers are defined" do
      stage = create_stage
      stage.add_acceptor MockAcceptor

      stage.start

      expect(MockAcceptor.added_transformers.size).to eq(1)
      expect(MockAcceptor.added_transformers.first).to be_a Batsir::Transformers::JSONInputTransformer
    end

    it "adds defined transformers to the acceptors" do
      stage = create_stage
      stage.add_acceptor_transformer Batsir::Transformers::Transformer
      stage.add_acceptor MockAcceptor

      stage.start

      expect(MockAcceptor.added_transformers.size).to eq(1)
      expect(MockAcceptor.added_transformers.first).to be_a Batsir::Transformers::Transformer
    end
  end
end

redpajama_set_name: RedPajamaGithub


text:
call us now to find out how we can help your business
Chichester 01243 252028 | Portsmouth 02392 009806
Business IT Systems Design
IT Equipment Leasing
Business System Watch
Business Backup Solutions
Cloud: Microsoft Office 365
Cloud: Hosted Desktop
Business Internet Solutions
Business Mobile Services
IT Networks
IT & Data Security
Business Servers
IT Spam Filter Solutions
Business VPN Solutions
Free Network Health Checks
Belgium Says No To Facebook Tracking Code
02/22/18	Andy Wilkinson	Comments (0)
A court in Belgium has told Facebook to stop using tracking code to follow and record internet use by people surfing in Belgium, until it complies with the country's own privacy laws.
According to Belgium's privacy watchdog, the Belgian Commission for the Protection of Privacy (CPP), Facebook placed tracking code in the form of 'cookies' on third-party websites. This would mean that Facebook's actions did not comply with Belgium's privacy laws because:
It tracked people without consent.
It tracked people who were not Facebook users.
It (presumably) stored the tracked personal data that it obtained illegally in the first place.
If Facebook fails to comply with Belgium's CPP it could face fines of £221,000 per day.
Facebook is reported to have expressed disappointment at the verdict and has stated that it is simply using the same industry standard cookies and pixels that other EU businesses use to help them grow their business.
This latest case appears to be the latest round in a long-running, ongoing dispute between the social media giant and the CPP. For example, back in November 2015, the CPP won a case against Facebook concerning the tracking of people with a 'datr cookie' when they visited pages on the site and clicked on like or share, even if they had never registered for an account, or if they had but weren't even logged in.
Facebook was able to appeal and win an overturning of the verdict because it was judged that Belgian courts didn't have international jurisdiction over Facebook Ireland i.e. because the data collected by the cookies was stored on servers in Dublin, the European base of Facebook's operations.
The CPP then indicated that it would try to appeal against Facebook's successful appeal through Belgium's court of cassation, using a Yahoo case as an example. With Yahoo, for example, it was ruled back in 2015 that finding against Yahoo wouldn't have to mean intervention outside of Belgium, and that, since Yahoo actively participated in the economic life of Belgium by using the domain name .be or displaying ads based on users' location e.g. in Belgium, it voluntarily submitted itself to Belgian law.
This story has commercial, legal and political aspects to it. Cookies can provide useful information and functions for businesses e.g. helping to personalise user browsing experiences, and gathering information about users of the company website – usually with an initial registration of consent by users of a website.
With this Facebook case, as web users, we may feel uneasy that trusted companies may be tracking all-comers without consent. This kind of story reminds us all about the importance of privacy and security, and its worth remembering that cookies sent over the web without encryption i.e. if the website doesn't have HTTPS in front of the domain, could be a security risk because they are readable by anyone on a network and could sensitive data e.g. credit card details, e-mail address and more. Google, for example, has just announced that from July, Chrome will be labelling websites without HTTPS as 'Not Secure' to try and combat this kind of risk.
The legal aspect of this case relates to which country has jurisdiction over the actions of a company whose services are used in that country, but the HQ and the data storage are in another country. This is another long-running legal argument e.g. Apple's tax breaks in Ireland.
Many see the EU and people like the EU's commissioner for competition, and measures like greater regulation and taxation as being useful to curb some of the more suspect behaviour of the big US Internet companies in Europe.
The introduction of GDPR should also provide greater protection for EU citizens in terms of online privacy and security. The UK will soon not be an EU member, but will have its own similar Bill added to UK law, but this could produce more legal grey areas.
There is clearly a political dimension to this story too as Belgium seeks to hold a powerful overseas company to account, and it wouldn't be the first time that an EU country has tried to do this.
Categories : Data Security, Internet Security, News and Events
© 2013 Pronetic | Privacy | IT Support Portsmouth | IT Support Chichester | Business Phone Systems | Business Internet Solutions

redpajama_set_name: RedPajamaCommonCrawl


Postcolonial Digital Humanities | Download the #GWWI poster for your own splinter event!
Download the #GWWI poster for your own splinter event!
On April 26, we'll be hosting #GWWI, the Global Women Write-In event! This virtual event is designed to encourage internet users to write entries about women from around the world into Wikipedia and to improve existing entries on these topics.
Download our #GWWI poster to publicize your own splinter event! Feel free to remix/adapt as you please. If you're planning to join us, do sign up on our Wikipedia event page.


text:
Product Tag - abuse
Empire of Dirt (2013)
Like many Native families, Lena Mahikan grew up in the cycle of abuse. Her father, a residential school survivor, was an alcoholic until he killed himself when Lena was 10. Her mother, only 14 years her senior, turned to the slots. By the time Lena was 15, she was pregnant and, before giving birth, was kicked to the curb by her mom. The cycle continues and Lena is now watching helplessly as her own daughter, Peeka, spirals out of control, landing herself in the hospital following a drug overdose. As a final attempt at survival, Lena decides to return home and face her own mother and a past she's desperate to escape.
The People Next Door (2016)
Ordinary young couple Gemma and Richard have just bought their first home and are expecting a baby. It's all very exciting, and the couple settles in nicely to their new pad. Except for the screaming and shouting they hear at all times of the night through their walls from the house next door. Listening more closely, pregnant Gemma is convinced that she's also hearing cries and smacking noises, which she is certain are the sounds of a toddler being abused. She and Richard have seen the child just once, but not since. Feeling morally obliged to act, the couple gather as much information as possible about what's going on next door. And after social services say there's nothing to worry about, Gemma becomes increasingly obsessed and she starts to spy on them in a way that raises questions about who is actually committing the crime — Gemma's neighbours, or Gemma?
The Witch Who Came From the Sea DVD 1976 (Original)
Anger stemming from being abused as a child drives an alcoholic's daughter to kill as an adult.
The Witch Who Came From the Sea (Original)
[EX-RENTAL] Kill For Me (Original)
Rent's a bitch. And that is why, six months after her best friend went missing, Amanda finally gives in to getting another roommate, Hailey. The two college students turn out to have something in common, however: abusive men. For Hailey, it's her dad. For Amanda, it's a stalkery ex-boyfriend. But problems can be solved and, you know, you scratch my back, I scratch yours. In other words, Kill for Me, I kill for you.
Kill For Me (Original)
Trishna (Original)
Based on Thomas Hardy's classic novel Tess of the D'Urbervilles, 'Trishna' tells the story of one woman whose life is destroyed by a combination of love and circumstances. Set in contemporary Rajasthan, Trishna (Freida Pinto) meets a wealthy young British businessman Jay Singh (Riz Ahmed) who has come to India to work in his father's hotel business. After an accident destroys her father's Jeep, Trishna goes to work for Jay, and they fall in love. But despite their feelings for each other, they cannot escape the conflicting pressures of a rural society which is changing rapidly through industrialisation, urbanisation and, above all, education. Trishna's tragedy is that she is torn between the traditions of her family life and the dreams and ambitions that her education has given her.
Brubaker (Original)
The new warden of a small prison farm in Arkansas tries to clean it up of corruption after initially posing as an inmate.
Sparkhouse
The relationship between childhood sweethearts, a farmer's daughter and boy from a rich family, turns tumultuous in this modern interpretation of Wuthering Heights.
Hand of God (2007)
In recent decades, more than 10,000 children reportedly were sexually abused by Catholic priests in the US. From behind the headlines, filmmaker Joe Cultrera tells the very personal story of how the crisis affected his family. It is the intimate story of how his brother, Paul, was molested in the 1960s by a priest who also reportedly abused nearly 100 other children. In an emotional film, the Cultrera family tells their story of faith betrayed.


Helen Haidle is the award-winning author of 43 books with major Christian publishers, with sales of over 1,700,000. David, an award-winning illustrator, and Helen have been married 42 years and have worked together on 22 books, such as What Would Jesus Do?, The Lord is My Shepherd, The Candymaker's Gift, and The Creation Story for Children. They live in Portland, Oregon, where they have their own publishing company, Seed Faith Books.
Richard Gunther has illustrated many books for both children and adults, as well as drawing cartoons for a number of newspapers and magazines, and designing a range of educational materials. He is the illustrator behind The Day the World Went Wacky, Noah's Floating Animal Park, and The Not So Super Skyscraper. He lives in Timaru, New Zealand.


Our bed and breakfast inn has many special qualities ... including our guests. We both come from "pressurized professions" and understand the importance of time away from the cares of work and home. We are dedicated to ensuring that your visit to the Sonoma Wine Country / Russian River recreation area is rich in experience and relaxing in nature.
Be the first to add a review to the Santa Nella House Bed and Breakfast.


"How do women do this?" Patrick flopped back on the couch, arms and legs flung haphazardly as he tried to focus his spinning head.
"Do what?" His twin sister murmured from where she sat at the dining room table, surrounded by papers and magazines.
"Why is this so complicated? Why couldn't Ion and Adrien just elope like normal people?" Patrick shook his head.
True. Adrien's mother had thrown herself into the planning with abandon. Yet she'd been very good at listening to what Ion and Adrien wanted. She hadn't got out of hand so far.
Patrick thought about Ion's mother and how she'd turned her back on her youngest son simply because he loved a man. It was doubly difficult because Ion's father had been willing to accept Ion's relationship with Adrien for what it was. Of course, Ion's father wasn't a very contrary man, so Ion had been rather shocked to find out that his father had gone against his mother's wishes and didn't particularly care who his son loved. That his father was willing to go against his mother to keep in touch with him had surprised them as well.
"I know. Mom would never walk away from us. Hell, she ran out and joined PFLAG the moment I came out to her and Pop. She'd be jumping into the middle of any wedding plans." Patrick thought about his mom and how excited she would be if it were either him or Patrice getting married.
A cab pulled up to the kerb, and Patrick waited until Patrice had got in before he slid in. She gave the driver the address.
"What are you up to right now?" Ion asked.
"Patrice and I are on our way to Big Gay Ice Cream to get a treat. Why don't you come and join us?" he suggested, knowing Ion needed to take a break from classes just as much as Patrick needed a break from the wedding stuff.
"Well, he has a visitor, so he'd have to come with us as well." The hesitation in Ion's voice caused Patrick to frown.
"Why do you sound unsure about it? Who is this visitor?" Patrick couldn't think of anyone that would worry Ion.
Share what you thought about Following His Footsteps and earn reward points.


text:
Everest Pipkin
Fortified City of Ranthambhor ca. 1810–18, https://www.metmuseum.org/art/collection/search/38043
A City Is a City — Against the metaphorization of data
Sep 19, 2021·11 min read
I was invited to give comment (along with Ever Bussey, Jasmine McNealy, and Trevor Owens) on Shannon Mattern's new book, A City Is Not a Computer: Other Urban Intelligences, at the book launch on 9/15/21. Here is a transcript of those comments (lightly edited and a few hyperlinks added for readability).
(9/15/21 2:31 P.M. MDT)
So… I'm an artist, possibly (?) the only one of us who'd self-describe as an artist on this panel of librarians, writers, teachers, and journalists. As such — and perhaps by definition — I deal with metaphorization. In my own work, metaphors are used as a poetic impulse that sets on things like the city, the dataset, and the computer. Though I use generally use metaphor with the intent to draw useful parallels, in practice they work as often to obfuscate or to complicate ideas even further.
In reading this book (which follows so directly many of my own research interests, from tree-grafting to code licensing) I kept returning to the title, a title that so adamantly rejects metaphor.
A city is not a computer.
The city is also not a tree, a dashboard, a business, or a luxury good. We are temped briefly by an organism but are reminded that despite its waste-streams and circulatory system a city is not a body. It is not a machine made of replaceable discrete parts, or a factory made of reparable discrete machines. The city is not a brain and the city is not a palimpsest and the city is not the internet and the city is simply not a computer.
Stepping back, each of these metaphors serve (in a undergrad poetry class kind of way) but are also absurd; of course a city isn't a tree, or a business, or a body, or whatever. Get your head out of the Ferdinand de Saussure, Everest.
But metaphor isn't empty (I should know this) and the city as luxury good or factory or dashboard has an agenda. It grants power and agency to a particular kind of manager, mayor, tech lab, real estate developer, military general, or financial investor. It says — ah, this city is like this — and I know just the person to fix it, grow it, watch it, maintain it, run it, mulch it, or whatever other verb fits the particular metaphor of the moment.
A whole chapter of A City Is Not a Computer is dedicated to the city "dashboard" — a visualization metric of data that has certainly had its moment this year in the myriad of city and state pandemic dashboards, which I still check religiously before heading into town for my weekly grocery trip. In the book, Shannon traces the history of "the dashboard", from the literal running board of a horse-drawn carriage (meant to keep the mud out the dashing hooves) to car dashboards with their limited set of fuel indicators and lights to the fighter planes of both World Wars and eventually to the city terminal, a now-digital interface full of dials and charts labeled things like "investment flow" and "happiness index". Made to advertise a panoptic, sci-fi vision of a spage-age mayor's office, the contemporary smart city dashboard is as much for show as it is functional. Sure, the mayor can see there is congestion on the 405 from their office — but what, exactly are they supposed to do about it?
These days, a data dashboard actually intended for a human to take fast-moving policy action from is almost a quaint idea. This is because so many of these systems are automated. In an era of microtransaction bots housed in datacenters close to the New York Stock Exchange, the stock trades well before the Bloomberg Terminal displays the transaction. This is true of automated traffic lights and "hotspotting" crime predictive systems and currency exchanges and the calculations that go into your credit score. It all happens faster than human time. A dashboard is no longer a control panel — it is a newspaper. Forget if what it displays is the whole picture — it isn't ever, anyway — when a dashboard operates as a report after the act with little capacity to interject, does it matter if what it displays is even true?
The dashboard's relationship to the fighter plane is relevant here, as is the smart city's insistence on the "utopian" idea of supplanting the manual labor of things like, say, coffee delivery to the drone. Both have a direct relationship to violence, and automation that acts and then reports the action is violence personified. Firing an explosive shell was once as distanced from the lived reality of murder as pressing a button on a dashboard. Now it is as far removed as seeing that the shell has struck its target, and, later, finding that the target was an aid worker carrying nothing but water — not, as the autonomous computer vision system claimed, bombs.
The "data" here was an excuse to produce harm, as is so often the case. This is also true in the broader sense of metaphorizing the city as a dataset, something Shannon has been very clear to highlight throughout the book. There is an express violence that hot-spotting, crime prediction, redlining, and the often no-less-violent actions of "urban renewal projects" allow the city to commit while under the auspices of "…but the data says!"
We're reminded that under no conditions will the city be called a dataset.
Rather than attempt to widen the lens of city dashboards and health index pie charts to reflect the lived experiences of the broad swaths of humanity they attempt — and fail — to accurately represent, the time would be better spent internalizing that these tools have a purpose and it is rarely if ever to actually reflect those lived experiences. Personal data from marginalized populations does not lend itself to data visualization not only because it is systemically under- or miscounted but also because data visualization is — or directly borrows its language and tooling from — white supremacist projects, including those of weaponry, industry, mapping, demography, and even the colonial project of the highway system.
There is no dataset that can fundamentally subvert this.
This is because data will be skewed by power wherever it exists; at least under capitalism, empire, and the carceral state. The very practice of "collecting data" (empirical data, what is envisioned as "true" data) is a project of a worldview that believes in a single empirical truth. The city as a dataset — even when operated with best intentions by what I can only assume are very overworked civic servants — intends to subsume the individual experience into a pie chart that can be read, at a glance, by someone in power.
Data cleaning — a practice that I have spent hundreds of thousands of hours on in my own creative work — has an agenda. When you throw out what is "dirty" about your data, you are keeping what is clean; a troubled terminology if I've ever heard one. Even in my artistic practice, this comes at cost. I am calling something useful, poetic, interesting, or fundamentally more than the next thing over. Now, I don't hand out bank loans. But I do contribute to the project of cultural memory. And if you scale this practice to the size of a city you can understand why we are in trouble.
This is smart city thinking. This worldview looks at city services — transit, garbage, water, public works, social services, health — and wonders if the city could be more efficient and better organized if these systems were "smart". It thinks that maybe if these systems tracked themselves, understood how it all fit together, saw wasted hours and duplicated routes put up on a big screen in an office somewhere, perhaps all with a friendly AI directing traffic and reordering supplies and probably making up the weekly employee schedules that always somehow leaves everyone exactly 1 hour short of-full-time, then maybe the city would achieve true efficiency.
But these systems already are smart. They are all operated by people with intrinsic knowledge — and not just where that one neighbor hides the recycling cans, but also the names of kids and the birthdays of dogs and the needs of elders who can't make out to the store anymore. This knowledge — human, caring knowledge — does not make it into the "smart city dataset". But I promise you, give sanitation workers a raise and an extra day off every week and truck that starts up reliably in the morning and less routes to do in more time, the city would be better — if not more efficient.
The smart city always attempts to build from scratch (from the fantasy of an empty platform, a used industrial space, a barren lot) but there is no scratch. People lived there. If they've been forgotten, it was by design. Animals and plants lived there. If they've been rousted, it was with poison and traps. The rats and moths and feral cats that undoubtedly still live there have a knowledge. The smart city doesn't see them, and if it does, it doesn't care except where they are cost or benefit.
And in truth, this is how the smart city sees humans too.
Perhaps out of all of these myriad of metaphors, a city as an ecosystem comes closest — an ecosystem will sprout unbidden just about anywhere that things live, which is to say — everywhere. You don't have to think long about the particular cultures of subway bacteria or the local population of pigeons before the city becomes like a forest. But even this metaphor — as broad as it is — has its own agenda.
A city as ecosystem greenwashes that smart city project, buries the surveillant aspect of a techno-organic system of control in language about care and ecology. The smart city embeds sensors in the smart soil to tell the sprinklers when to turn on. This saves water, perhaps, but also builds a wireless-connected network of discrete powered devices constantly pinging home with hyper-specific data about a particular patch of earth; data that can be repackaged and sold, per usual, to the highest bidder.
I'm reminded, as I am practically every week, of that deeply cursed blockchain experiment about giving animals money. (The solution, and I cannot stress this enough, to trees and animals being ignored by our current wealth-driven surveillance tech is not to find a way to monetize the trees and animals and thus surveil them too.)
Capitalism can eat just about anything, and the fantasy of the smart city is damn well trying. Because when knowledge enters the formal, cleaned spreadsheet of the dataset it becomes again an asset. This extractivist approach to dealing with climate horror should be familiar by now; a common refrain spouted from smart city projects and their ilk is something along the lines of "we study the ignored knowledge of marginalized and indigenous communities to incorporate it into our shared future". But this is done generally without offering those same communities any power in shaping said future. Historical knowledge turned asset in the accumulation of data.
The greenwashing of the smart city is so effective partly because of the role that data does play in environmental lobbying. Things like annual migrating bird kill counts and sea ice measurements are among the only tools ecologists have to deploy against a system set deeply in favor of capitalist gain.
To the eyes of U.S. law, there is never a rare salamander in the path of the oil pipeline unless someone reputable has published a dissertation describing exactly this creature ; and the oil pipeline shall not be halted for anything less than a violation of the Endangered Species Act (whatever else is in the way — common newts, beautiful meadows, sacred land be damned).
When the onus of proof of value rests on the salamander and not the pipeline, the salamander is entered into the dataset to become a bureaucratically readable, empirical truth that can (every once in a while) divert a pipeline a few miles south. These few hard-earned condolences to "ecology" work to coat the miasma of the smart city in this kind of rhetoric or thinking; that if only we had more data about what trees needed water when — or even if we made them assets, to be traded at market — perhaps then they could thrive in this hell being built around us.
But this is absurd. Rather than technologizing the smart soil of urban gardens we can simply collect the rainwater off nearby roofs and water them when the leaves begin to droop (plants come bundled with their own sensors and displays — ones that tell far more, with more directness and clarity than any dashboard).
Rather than calculating the street-tree and shade relationship to the poverty index of Los Angeles neighborhoods in order to "instigate change on the ground", software think-tanks and the cities that employ them can simply provide residents access to seedlings (and the resources to keep them alive) if these trees are wanted. Or even better- they could ask what would be helpful in a case by case basis because, again, humans come equipped with language which can explain far more in far greater detail than an aerial study of tre canopy and home value.
Or — to make it even clearer — in the case of climate change, we truly have all the data we need. The reports are clear. It is calamitous. You don't even need a dataset to see it — I can walk up the hill from my home and see the wildfire smoke. I can feel the heat of the summers and the force of the hurricanes. Yet just this week the Biden administration claimed that the devastating IPCC report "does not present sufficient cause" to pause an expansion to offshore drilling.
This is not due to a lack of data. The data is there. It is instead because there is no empirical, data-driven value that you can assign to things like "a life of dignity and abundance in a culture that wishes to see all people thrive" that squares it against capital gain. There is no empirical, data-driven value that you can assign to this at all.
The world is dense and complex and layered, broad and swirling and impossible to force into a dataset — or even a metaphor — but our relationship to need both as individuals and as governing systems made of individuals does not have to be complex, and should not be.
You can simply give people money when they are poor. You can simply give a tree water when it is thirsty. You can simply overturn the military capitalistic project of the United States of America before it destroys society. (I joke. This is not so simple. But, also- it kind of is. Land Back is a simple and clear idea.)
You can simply care for what you care for, without ascribing it a value at all.
And that might be the core message of The City Is Not a Computer- that despite all the obfuscatory metaphors and ontologies and datasets and investment projects that graft themselves onto cities — no matter how those are used and abused, abandoned and remade — the project of maintenance is going on all around us as individuals tend to the needs of what they care for.
A City Is Not a Computer reminds us that a city is a city, and a city is — and always will be — simply a place where people live their lives.
everest-pipkin.com
More from Everest Pipkin
Inheritance of Civilization: The Birth, Growth and Reconstruction of Information and Digital…
rct AI
I Unleashed in Denmark. You should Unleash in Singapore.
William Smith-Stubbs
Why COVID-19 matters in your digital transformation?
Alberto Cozer
Nation State At the Crossroads
azeem in NewCo Shift
The future starts now. Technologies to feel: Metaverse, Neural Networks, Blockchain
Maksumuluano
A clouded future for the hotel industry
Klaus Kohlmayr
Future Perfect and Technological Upheaval
Tay_B_HD
It's really simple if you think about it:
Jeremy Retamar Arrieta


text:
Switzerland wins World Cup bronze with Golden Goal
by sp-admin | Aug 15, 2022 | Uncategorized
At the goal of dreams: Denmark's Nikolaj Richelsen holds the World Cup trophy aloft.
Switzerland makes sporting history in powerchair hockey: In the match for the World Championship bronze medal, the team of national coach Daniel Pulver and assistant Raphaël Mathis wins against Finland 5:4 after overtime. Nelson Braillard scored the golden goal in the 46th minute. In the final, Denmark beat top favourite the Netherlands 4:3 after extra time. Anders Berenth scored his 32nd goal of the tournament to win the World Cup.
The Swiss national team is riding a wave of success. In the match for third place at the 5th IWAS Powerchair Hockey World Championships in Sursee, the host team won against Finland 5:4 after extra time in a thriller in the Stadthalle that could hardly be surpassed in terms of suspense. 600 spectators saw the decisive "golden goal" by Nelson Braillard. The player from Torpedo Turicum poked the ball over the line after 5:25 minutes in overtime. For the first time in powerchair hockey history, Switzerland won a World Cup medal.
The architect of Switzerland's remarkable success was goalkeeper Raphael Bachmann, who made 15 saves in the face of the Finnish attack. The captain of the Helvetic ensemble was delighted with the great success: "I am proud of what we achieved as a team in Sursee. This was the well-deserved reward for four years of intensive training." Bachmann added: "We managed to pick ourselves up within a short time after the disappointing defeat in the World Cup semi-final against Denmark and to show a strong collective performance." The 34-year-old Aargau native wants to take the momentum of this World Cup with him. "We want to establish ourselves in the top three in the world in the next few years."
Swiss national coach Daniel Pulver praised his charges after the historic success: "We deserved to win the medal thanks to excellent team spirit. Everyone ploughed for everyone else, it was a pleasure to watch the game." The successful Swiss coach now hopes that many people will discover powerchair hockey. "And I also hope that the ten Swiss World Cup cracks can infect the remaining 120 licensed in Switzerland to emulate them."
At the closing ceremony, Jan Schäublin and Dave Inhelder once again had reason to celebrate: the Swiss top scorer (21 goals in the tournament) was named best handstick-player, while teammate Dave Inhelder won in the category of the best T-stick.
In the final, Denmark beat top favourite the Netherlands 4:3 after overtime, contrary to many predictions. The golden goal was scored by top scorer Anders Berenth in the 41st minute – his 32nd goal in the tournament. His outstanding team-mate Alexander Pedersen ranked second in the World Cup top scorer list with 24 goals.
It was only the fourth defeat for the Netherlands in the history of the association. Since its foundation in 1998, the Dutch powerchair hockey artists have now lost four times: the 2010 World Cup final against Germany (6:7 n.V.), the 2018 World Cup semi-final against Denmark (3:4), the group match on the same occasion against Switzerland (4:5) and now the World Cup final in Sursee against Denmark (3:4 n.V.).
Sursee (Sz). 5th IWAS Powerchair Hockey World Championships.
Placing matches. For 7th place: Spain – Belgium 8:5 (2:3). – For 5th place: Italy – Germany 7:0 (4:0). – For 3rd place: Switzerland – Finland 5:4 n.V. (4:4, 3:1). – Final: Netherlands – Denmark 3:4 n.V. (3:2, 3:3).
Final: Netherlands – Denmark 3:4 after overtime (3:2, 3:3)
Stadthalle. – 500 Spectators. – Referees Rosche (Sz)/Käch (Sz)/Matijasevic (Slo). – Goals: 3. Pedersen 0:1. 10. Heere 1:1. 18. Heere 2:1. 20. Berenth 2:2. 20. Van der Heijden (Van den Boomen) 3:2. 30. Pedersen 3:3. 41. Berenth 3:4.
For third place: Switzerland – Finland 5:4 after overtime (4:4, 3:1)
Stadthalle. – 600 spectators. – Ref Imparato (It)/Iotti (It)/Vanhove (Bel). – Goals: 6. Braillard 1:0. 6. Zenhäusern (Schäublin) 2:0. 10. Mursu 2:1. 12. Schäublin 3:1. 22. Vuorinen 3:2. 23. Vuorinen 3:3. 33. Schäublin (Zenhäusern) 4:3. 40 (39:03). Palonen 4:4. 46. Braillard 5:4.
Switzerland: Bachmann; Spirig, Schäublin, Zenhäusern, Braillard; Melder.
Did not play: Inhelder, Affolter, Rolli, Conceição.
For 5th place: Italy – Germany 7:0 (4:0)
Stadthalle. – 100 spectators. – Referees Virtanen (Fi)/Borgers (Ho)/Siiki (Fi). – Goals: 1. Granzotto 1:0. 4. Fierravanti (penalty) 2:0. 11. Fierravanti 3:0. 20. Fierravanti 4:0. 25. Ramina 5:0. 30. Comino 6:0. 34. Comino 7:0.
For 7th place: Spain – Belgium 8:5 (2:3)
Stadthalle. – 50 spectators. – Referees Stormark (Dä)/Laakso (Fi)/Menz (De). – Goals: 4. Van Nerum 0:1. 8. Camps Butgos 1:1. 11. Van Nerum 1:2. 13. Rodriguez 2:2. 15. Kahya 2:3. 24. Sanchez 3:3. 27. Kahya 3:4. 29. Sanchez 4:4. 33. Sanchez 5:4. 34. Valle Grau 6:4. 34. Valle Grau 7:4. 39. Badia Calm 8:4. 39. Van Nerum 8:5.
World Cup top scorers (number of goals)
1st Anders Berenth (Denmark) 32
2nd Alexander Pedersen (Denmark) 24
3rd Jan Schäublin (Sz) 21
4th Rodi Feller (Ned) 19
5th David Huber (Germany) 18
6th Kasper Vuorinen (Fin) 17
7th Tim Heere (Ned) 16
8th Dennis Van den Boomen (Ned) 15
9th Jules Van der Heijden (Ned) 15
10th Lucas Schell (Ned) 14
Best handstick: Jan Schäublin (Sz)
Best T-stick: Dave Inhelder (Sz)
Best Goalkeeper: Jessica Trommer (Germany)
Applause: The Swiss cracks celebrate after winning World Championship bronze. From left: Manuel Melder (with cap), Nelson Braillard, Noé Spirig, Veronica Conceição, Jannis Affolter, Raphael Bachmann, Daniel Rolli, Jan Schäublin, Dominik Zenhäusern. Behind: Assistant Raphaël Mathis and national coach Daniel Pulver (with cap).


text:
Looking At The Eco Friendly Mosques Championing A Green Planet And Unified Communities
Last year, we told you about the construction of a new mosque in Cambridge. It was described as the first eco-mosque in Europe.
The minds behind the project promised a beautiful space for prayer that also boasted unmatched green credentials. The innovative idea was a hit, and donations for the mosque came in from across the world.
This was good news, as the mosque is reportedly costing £15 million to build!
The Cambridge Mosque Trust will be the first purpose built mosque in the city. Earlier this summer, the mosque's magnificent golden dome was revealed, another on-time step towards the January 2019 opening date.
The building will be powered by renewable energy-harvesting heat pumps and will make maximum use of natural light. Rainwater will be stored to flush the WCs and irrigate the garden, and ground water will heat or cool the building as necessary.
While this is not only good for the environment, it is also an excellent reflection of Islamic values. Our faith compels us to care for the world around us, and the Ummah that calls it home. To build a sacred space around green principals only serves to remind us how important it is to look after the world God created for us.
This no doubt explains why similarly innovative mosques are in the works elsewhere. In Tirana, Albania, an enormous mosque is being built to cater to the city's diverse population. The Mosque For All is an indoor/outdoor structure filled with green spaces and natural light. There is even going to be a garden comprised of every plant mentioned in the Qu'ran.
According to Dezeen, the impressive structure is designed to welcome everybody:
"Albania is the crossroads of three major religions: Orthodox Christianity; Catholicism; and Islam. With the recent completion of two new churches, all three religions will now have new places of worship in the heart of Tirana. The complex will not only serve the Muslim community of the city and surrounding areas, but will educate the public about Islamic values and serve as a beacon for religious tolerance."
This message is shared by Tim Winter, AKA Shaykh Abdal Hakim Murad, chairman of Cambridge Mosque Trust. Speaking to Cambridge News, he said: "Everyone will be able to come and use the gardens, or hire the lecture space for events, or sit in the coffee house, or just enjoy the calm ambience of the prayer hall."
The reason for this, he explained last year, is to relax tensions between communities and dispel misconceptions about Islam: "We are confident that we will be showcasing traditions of hospitality and respect, pushing back against fundamentalism and any other ideology that seeks to damage the unity of the human family."
We love the ethos behind both of these eco-mosques. We are all responsible for protecting the environment and caring for one another. To be reminded of these duties within a green, communal space will hopefully inspire people to act on them.
After all, we may have different faiths, but we're all living on the same earth.
Cambridge Mosque
eco-mosque
The First Eco-Mosque in Europe is Under Construction in Cambridge, …
The building will be powered by renewable energy-harvesting heat pumps and will make maximum use of natural light.
Mosques of Instagram
Mosques are not only a place of worship, they are a refuge, a haven away from everyday troubles, & a place where you are more spiritually connected to God.
In Pictures: #VisitMyMosque Day 2018
Over 200 mosques took part in the #VisitMyMosque day this year, a national campaign designed to encourage tolerance in society.


text:
Theater of War
Go behind the scenes of the Public Theater's 2006 production of Bertolt Brecht's Mother Courage and Her Children, starring the legendary Meryl Streep and translated by Pulitzer Prize winner Tony Kushner. In addition to offering a rare window into Streep's process, the documentary also examines how Brecht's own tumultuous life experiences informed his remarkable play. Other interviewees include Streep's co-star Kevin Kline.
Meryl Streep, Kevin Kline, Tony Kushner, George C. Wolfe, Bertolt Brecht, Michael Izquierdo, Jeremy Lydic, Silvestre Rasuk
John W. Walter
Documentary, Social & Cultural Documentaries, Theater Arts
Heartfelt, Cerebral


text:
Home Sports Montclair High School Montclair Baseball: Greengrass awarded first Giuliano Scholarship
Montclair Baseball: Greengrass awarded first Giuliano Scholarship
Ethan Greengrass with representatives of the Andy G Fund, which awards a scholarship of $1,000 to an applicant who most exemplifies what coach Andrew Giuliano stood for.
Courtesy of Joel Dnistrian
by Andrew Garda
garda@montclairlocal.news
It is fitting that Montclair High School graduate and baseball player Ethan Greengrass had his last Montclair baseball moment where many of his firsts took place.
Edgemont Park was the setting for Greengrass' receiving the first annual Andy Giuliano Scholarship on Friday, Aug. 28, where he — like so many other Montclair kids — began his baseball career.
It is also where coach Andy Giuliano spent the majority of his time coaching.
Giuliano died on April 27 at the age of 73, and those around him wanted to create something that would both honor the man everyone called "Coach Andy" as well as recognize and inspire the young athletes he spent so much of his life coaching.
"[He] was always willing to help others, never said no," Garland Thornton, activities coordinator in the Recreation and Cultural Affairs office in Montclair, said at the time of Giuliano's passing. Thornton coached with Giuliano for 20 years.
"He loved Montclair, and he was always asking about the kids in different sports."
Empathy and concern for others was something Coach Andy was well known for, and it had a tremendous impact on those around him.
"The past two years, me and a couple of my teammates assisted pitch and tee ball with him," Greengrass said during a recent phone call. "And it was just amazing to see how much the kids gravitated toward him, how much they loved him and how much time he spent with each individual kid. A lot of coaches are just there to get paid, that's it. But he truly wanted to be a part of every single kid's life and make an impact."
Joel Dnistrian, president of the Montclair Baseball Club, said Greengrass possesses a lot of the characteristics that Giuliano had.
"Definitely his hard work and his dedication and devotion to young kids, mentoring them," Dnistrian said. "He did come down and help Andy quite often."
Dnistrian said Greengrass' achievements in high school were also worthy of consideration.
Ethan Greengrass played on the 2019 Greater Newark Tournament-winning Montclair High School baseball team, and got his start at Edgemont Park with coach Andy Giuliano..
ANDREW GARDA/STAFF
"He was the captain of the baseball team. Unfortunately, he didn't have a season, but he went through our whole program, from start to finish."
Greengrass said there were many things that he will carry with him from his time working with and being coached by Giuliano.
"I'd say probably the biggest thing is being that person people can count on," he said. "Being supportive, being caring, being there for others. Because you never know what someone's going through in their life, and just to be able to give them a little bit of light, whatever it is, wherever it is, can really mean the world to them."
Greengrass also said that Giuliano showed him that any action you take can have long-term impact on those you interact with, something driven home by a story he heard at the Aug. 28 ceremony about one of his former teammates, rising senior Amar Francis.
"He was playing on the playground at Edgemont while Andy was practicing with the kids," Greengrass said. "And [Andy] basically asked Amar if he wanted to play baseball, and [Amar's] mom said that she's too busy to be able to, you know, let him do that. And Andy basically said, don't worry about it, and Andy, you know, took care of Amar, took him to all the games and practices."
Greengrass said now, years later, Francis is going to be the starting right-fielder for the varsity team, and a lot of that comes down to Giuliano taking an interest in a random kid on a playground.
"Obviously, you've got to owe a lot of that to Andy," he said. "That's crazy, you know? Just going over there and taking care of a kid you've never met until that moment. There are just not many people willing to do stuff like that."
READ: MONTCLAIR BOYS SOCCER RAISES MONEY FOR NAACP FUND
With everything going on in the country, Greengrass said thinking of Giuliano's empathy for others gives him some hope.
"Andy really created a light, no matter how dark it got," Greengrass explained. "Just knowing the impact someone could make like that, no matter how dark times get, like they are now, there's always light at the end of the tunnel. If I ever get down or think about giving up, I can always think about Andy and how much he strived to make people's lives better."
Greengrass said holding the ceremony at Edgemont was a perfect nod to Giuliano's memory.
"We went to Edgemont the other day and took some pictures for it," he said. "It was very nice because, you know, Edgemont was Andy's place of sanctuary."
Like many college freshmen, Greengrass began classes remotely, but once he gets on campus at Rutgers-New Brunswick he's going to make sure he carries forward Giuliano's legacy.
"I just want to be able to use this scholarship and award to kind of model my life around the way he modeled his," he said. "And to make people proud, give people support. Even in the darkest time, you know, a guy like Andy, even when he's gone, can create this whole bunch of hope."
Andrew Garda
Andy G Foundation
Andy Giuliano
Ethan Greengrass
Montclair Mounties
Previous articleCOVID-19: Young adults, teens contracting the virus growing in numbers
Next article9/11: Remembering those lost 19 years ago
Three bouts, three wins for Montclair's boys fencing squad


A staff of Ghana International Bank (GHIB) Mr. Mark Frank Arthur has been dismissed by his employers due to his misconduct that got the Asantehene Otumfuo II in money laundering.
After the London employment tribunal upholds the GHBI's decision, they dismissed Mr. Frank Arthur based on the grounds of breaching the bank's internal policies and procedures.
This is the latest development unveiled by the GHIB "The tribunal was satisfied that in doing what he did, Mark Arthur has committed misconduct of sufficient seriousness that amounted to a fundamental breach of his employment contract entitling the bank to terminate that contract without notice".
This is what triggered; in August 2016 Otumfuo summoned one Frank Arthur, a staff of GHIB to his residence in Henley on the Thames in the UK and handed him a bag containing £1,999,600 as well as $200,000 with consecutive serial numbers.
Mr. Arthur was dismissed based on the sidelining of anti-money while assisting Otumfuo with a cash involving £350,000.
However, Mr. Frank tried to challenge his dismissal at the UK tribunal on the grounds that it was wrongful and unfair.
Meanwhile, the Ashanti King has since been declared of all allegations of money laundering.
MR. Arthur who deemed his dismissal unfair is planning to sue the GHIB at the Central Employment Appeal Tribunal in London.


text:
Q: Debugging generic functions in R How do you debug a generic function (using debug, or mtrace in the debug package)?
As an example, I want to debug cenreg in the NADA package, specifically the method that takes a formula input.
You can retrieve the method details like this:
library(NADA)
getMethod("cenreg", c("formula", "missing", "missing"))

function (obs, censored, groups, ...)
{
    .local <- function (obs, censored, groups, dist, conf.int = 0.95,
        ...)
    {
        dist = ifelse(missing(dist), "lognormal", dist)

...
}

The problem is that cenreg itself looks like this:
body(cenreg)
# standardGeneric("cenreg")

I don't know how to step through the underlying method, rather than the generic wrapper.

A: My first two suggestions are pretty basic: (1) wrap your function call in a try() (that frequently provides more information with S4 classes) and (2) call traceback() after the error is thrown (that can sometimes give hints to where the problem is really occuring).
Calling debug() won't help in this scenario, so you need to use trace or browser.  From the debug help page:
"In order to debug S4 methods (see Methods), you need to use trace, typically
calling browser, e.g., as "
  trace("plot", browser, exit=browser, signature = c("track", "missing"))

S4 classes can be hard to work with; one example of this is the comment in the debug package documentation (regarding the usage of mtrace() with S4 classes):
"I have no plans to write S4 methods, and hope not to have to
debug other people's!"

A similar question was asked recently on R-Help.  The recommendation from Duncan Murdoch:
"You can insert a call to browser() if you want to modify the source.  If
you'd rather not do that, you can use trace() to set a breakpoint in it.
The new setBreakpoint() function in R 2.10.0 will also work, if you
install the package from source with the R_KEEP_PKG_SOURCE=yes
environment variable set.  It allows you to set a breakpoint at a
particular line number in the source code."

I've never done this before myself (and it requires R 2.10.0), but you might try installing from source with R_KEEP_PKG_SOURCE=yes.
Incidentally, you can use the CRAN mirror of NADA in github to browse the source.

A: For a long time this was a standard annoyance point for S4 method debugging. As pointed out by Charles Plessy, I worked with  Michael Lawrence to add a number of features to R that are intended to make this easier.
debug, debugonce, undebug and isdebugged all now take a signature argument  suitable for specifying  s4 methods. Furthermore, debugging S4 methods this way bypasses the weird implementation detail that you previously had to deal with by hand by browsering into the method via trace, stepping through the .local definition, debugging that, then continuing.
In addition, I added debugcall, which you give an actual, full call that you would want to invoke.  Doing so sets debugging on the first closue which will be invoked when evaluating that call that is not an S3 or S4 standard generic. So if you are calling a non-generic, that will just be the top level function being called, but if it is a standard S3 or S4 generic, the first method that will be hit is debugged instead of the generic. A "standard S3 generic" is defined as a function  where the first top-level (ignoring curly braces) call in the body is a call to UseMethod.
Note we went back and forth on the design of this but at the end of the day settled on debugcall not actually executing the function call being debugged, but it returns the call expression which you can pass it to eval if desired, as illustrated in ?debugcall.

redpajama_set_name: RedPajamaStackExchange


One of the core themes of our school Progress Plan has been to review and further improve our KS2-3 transition processes, so that we really enable our students to settle quickly and make maximum progress in Year 7. After I joined the school in April 2016, I spent some time working in partnership with our Director of Studies (DoS) for Year 7 to explore and evaluate current practice and to identify how we could build upon, refine or adapt what we do.
Read the rest of this article by signing in or joining the Chartered College below.
Log in to read the rest of this article, comment and read other people's comments.
By joining the Chartered College, you'll be able to read the rest of this article, comment and read other people's comments. You'll also get full access to member-only articles, events, our education research database, our termly journal - and much much more.
Angela Jenkins is the Director of School Improvement at Beechwood School. This is a strategic leadership role with key responsibilities around improving teaching, learning and assessment, and refreshing policy and practice. Angela works with leaders across the Trust and beyond as part of her outreach work. She was head of a primary school and an education improvement adviser for two local authorities previously. You can follow her on Twitter @MuchAdoALJ.
December book club: Join us and Daisy Christodoulou to discuss Making Good Progress?