text:
Q: Spectrogram generation in java using FFT on a .wav file not producing expected output So I am making an AI project that classifies speech into either "up", "down", "left", right or background noise, and from this, a character in a videogame is moved.
I have made an FFT algorithm deriving it from the mathematical explanation, which I believe is correct as I have tested its output against that from this site (https://engineering.icalculator.info/discrete-fourier-transform-calculator.html)
I then have tried to generate a spectrogram and have used code based on the code from the main function of the App class from this site (Creating spectrogram from .wav using FFT in java)
I tested my code on a .wav file of me saying hello and the spectrogram generated is not what I was expecting out, see below the difference between my java made spectrogram and my python made spectrogram (ignore the colour difference).
Java Spectrogram
Python Spectrogram
New Java Spectrogram with SleuthEyes help
Here is the original code I have used/written:
package STACKOVERFLOW;

import com.company.Complex;

import javax.imageio.ImageIO;
import java.awt.*;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Paths;
import java.util.Arrays;
import java.util.Scanner;

public class StackOverFlow {
    private static Color getColour(double power) {
        var H = power * 0.4;
        var S = 1.0;
        var B = 1.0;
        return Color.getHSBColor((float) H, (float) S, (float) B);
    }

    private static double[] getAudioData(String filePath) {
        var path = Paths.get(filePath);
        try {
            var entireFileData = Files.readAllBytes(path);
            var rawData = Arrays.copyOfRange(entireFileData, 44, entireFileData.length);
            var length = rawData.length;

            var newLength = length / 4;
            var dataMono = new double[newLength];

            double left, right;
            for (int i = 0; 2 * i + 3< newLength; i++) {
                left = (short) ((rawData[2 * i + 1] & 0xff) << 8) | (rawData[2 * i] & 0xff);
                right = (short) ((rawData[2 * i + 3] & 0xff) << 8) | (rawData[2 * i + 2] & 0xff);
                dataMono[i] = (left + right) / 2.0;
            }

            return dataMono;
        } catch (IOException e) {
            e.printStackTrace();
        }
        return null;
    }

    private static Complex[] toComplex(double[] samples) {
        var l = samples.length;
        var cOut = new Complex[l];
        for (int i = 0; i < l; i++) {
            cOut[i] = new Complex(samples[i], 0);
        }
        return cOut;
    }

    private static double modulusSquared(Complex a) {
        var real = a.getReal();
        var imaginary = a.getImag();
        return (real * real) + (imaginary * imaginary);
    }

    private static Complex[] fft(Complex[] samples) {
        var N = samples.length; // number of samples
        if (N == 1) return samples; // stops the recursive splits on the samples
        // TODO: M only works for N a power of 2
        var M = N / 2; // middle index of the samples
        var Xeven = new Complex[M]; // array for even split
        var Xodd = new Complex[M]; // array for odd split

        // splits the samples
        for (int i = 0; i < M; i++) {
            Xeven[i] = samples[2 * i];
            Xodd[i] = samples[2 * i + 1];
        }

        // recursive calls on even and odd samples
        var Feven = new Complex[M];
        Feven = fft(Xeven);
        var Fodd = new Complex[M];
        Fodd = fft(Xodd);

        var frequencyBins = new Complex[N];

        for (int i = 0; i < (N / 2); i++) {
            var cExponential = Complex.multiply(
                    Complex.polar(1, -2 * Math.PI * i / N),
                    Fodd[i]
            );

            frequencyBins[i] = Complex.add(
                    Feven[i],
                    cExponential
            );

            frequencyBins[i + N / 2] = Complex.sub(
                    Feven[i],
                    cExponential
            );
        }
        return frequencyBins;
    }

    public static void makeSpectrogram() {
        var scan = new Scanner(System.in);
        System.out.println("Enter file path: ");
        var filePath = scan.nextLine();
        var rawAudioData = getAudioData(filePath);
        assert rawAudioData != null;
        var length = rawAudioData.length;
        var complexAudioData = toComplex(rawAudioData);

        // parameters for FFT
        var windowSize = 256;
        var overlapFactor = 2;
        var windowStep = windowSize / overlapFactor;

        // plotData array
        var nX = (length - windowSize) / windowStep;
        var nY = (windowSize / 2);
        var plotData = new double[nX][nY];

        // amplitudes to normalise
        var maxAmplitude = Double.MIN_VALUE;
        var minAmplitude = Double.MAX_VALUE;
        double amplitudeSquared;

        // application of the FFT
        for (int i = 0; i < nX; i++) {
            var windowSizeArray = fft(Arrays.copyOfRange(complexAudioData, i * windowStep, i * windowStep + windowSize));
            for (int j = 0; j < nY; j++) {
                amplitudeSquared = modulusSquared(windowSizeArray[2 * j]);
                if (amplitudeSquared == 0.0) {
                    plotData[i][nY - j - 1] = amplitudeSquared;
                } else {
                    var threshold = 1.0; // prevents log(0)
                    plotData[i][nY - j - 1] = 10 * Math.log10(Math.max(amplitudeSquared, threshold));
                }

                // find min and max amplitudes
                if (plotData[i][j] > maxAmplitude) {
                    maxAmplitude = plotData[i][j];
                } else if (plotData[i][j] < minAmplitude) {
                    minAmplitude = plotData[i][j];
                }
            }
        }

        // normalisation
        var difference = maxAmplitude - minAmplitude;
        for (int i = 0; i < nX; i++) {
            for (int j = 0; j < nY; j++) {
                plotData[i][j] = (plotData[i][j] - minAmplitude) / difference;
            }
        }

        // plot the spectrogram
        var spectrogram = new BufferedImage(nX, nY, BufferedImage.TYPE_INT_RGB);
        double ratio;
        for (int i = 0; i < nX; i++) {
            for (int j = 0; j < nY; j++) {
                ratio = plotData[i][j];
                var colour = getColour(1.0 - ratio);
                spectrogram.setRGB(i, j, colour.getRGB());
            }
        }

        // write the image to a file
        try {
            var outputFile = new File("saved.png");
            ImageIO.write(spectrogram, "png", outputFile);
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    public static void main(String[] args) {
        makeSpectrogram();
    }
}

Here is the Complex class that is used above:
package com.company;

import java.text.DecimalFormat;

public class Complex {

    private final static DecimalFormat df2 = new DecimalFormat("#.##");

    private double r;
    private double i;

    public Complex(double r, double i) {
        this.r = r;
        this.i = i;
    }

    @Override
    public String toString() {
        return "(" + df2.format(this.r) + ", " + df2.format(this.i) + "i) ";
    }

    public double abs() {
        return Math.hypot(this.r, this.i);
    }

    public double getReal() {
        return this.r;
    }

    public double getImag() {
        return this.i;
    }

    public void setReal(double r) {
        this.r = r;
    }

    public void setImag(double i) {
        this.i = i;
    }

    public static Complex polar(double r, double theta) {
        return new Complex(
                r * Math.cos(theta),
                r * Math.sin(theta)
        );
    }

    public static Complex multiply(Complex a, Complex b) {
            /*
             (a + bi) * (c + di) =
             ac + adi + cbi + -bd =
             (ac - bd) + (ad + cb)i
            */
        var real = (a.r * b.r) - (a.i * b.i);
        var imag = (a.r * b.i) + (a.i * b.r);
        return new Complex(real, imag);
    }

    public static Complex add(Complex a, Complex b) {
        return new Complex(
                a.r + b.r,
                a.i + b.i
        );
    }

    public static Complex sub(Complex a, Complex b) {
        return new Complex(
                a.r - b.r,
                a.i - b.i
        );
    }
}

any guidance would be appreciated

A: Reading the .wav file
The .wav file decoding included in that other question you linked is hardly a full blown decoder. It accounts for the OP's specific stereo 2bytes-per-sample use-case.
It looks like you stumbled upon other decoding issues while trying to adapt it to a different use case. As a general piece of advice, I'd suggest to use a more complete .wav decoder which would take into account the number of channels, the number of bytes-per-sample, etc.
If on the other hand you want to craft your own decoder (for example as a learning exercise), then a slightly more robust implementation may look like the following:
public short getShort(byte[] buffer, int offset) {
  return (short) ((buffer[offset + 1] & 0xff) << 8) | (buffer[offset] & 0xff);
}
public int getNumberOfChannels(byte[] entireFileData){
  return (int) getShort(entireFileData, 22);
}
public int getBytesPerSample(byte[] entireFileData){
  return (int) getShort(entireFileData, 34)/8;
}

private static double[] getAudioData(String filePath) {

    ...
    var entireFileData = Files.readAllBytes(path);
    var rawData = Arrays.copyOfRange(entireFileData, 44, entireFileData.length);
    var length = rawData.length;

    int numChannels    = getNumberOfChannels(entireFileData);
    int bytesPerSample = getBytesPerSample(entireFileData);
    int newLength      = length / (bytesPerSample*numChannels);
    var dataMono       = new double[newLength];
    if (2 == bytesPerSample) {
      for (int i = 0; 2*numChannels*(i+1)-1 < length; i++) {
        double sum = 0.0;
        for (int j = 0; j < numChannels; j++) {
          sample = (short) ((rawData[2*numChannels*i + 2*j + 1] & 0xff) << 8) | (rawData[2*numChannels*i + 2*j] & 0xff);
          sum += sample;
        }
        dataMono[i] = sum / numChannels;
      }
    }
    else {
    ... // handle different number of bytes per sample
    }
}

Note that it still only covers 16bit PCM samples, assumes a fixed header structure (see this tutorial, but the .wav file format is actually more flexible), and would get tripped on files with extension chunks.
Processing the spectrum
The FFT library used in that other question you linked returns an array of double which is to be interpreted as interleaved real and imaginary parts of the actual complex values. Correspondingly the indexing used to perform the magnitude computations is using pairs of elements at index 2*j and 2*j+1. On the other hand your implementation obtains complex values directly, so you should not be skipping over values with the 2* factor and instead use:
for (int j = 0; j < nY; j++) {
  amplitudeSquared = modulusSquared(windowSizeArray[j]);
  ...
}

redpajama_set_name: RedPajamaStackExchange


text:
Family History Machine
Genealogy in Context
FHM Blog
Search for People, Places or Events
aha moment
Allan Franklin
American Spirits
Armand Biney
Arnaud Clerc
Artistedes de Sousa Mendes
Blokhs of Minsk
Brenner Family
Brice Rustad
C. S. Wu
C.S. Wu
Camron-Stanford House
Cannold Family
citizenship article
Curacao exception
Decker Family
Dick Diamond
Eilertsen Family
Elliot Wineburg
Elly Ringel
Emile Gissot
escape through Lisbon
Family Branches
family store
Felenstein Family
garment industry
Gerald Clerc
Harriet Berkowitz
Helga Ruby
Hilda Liebman
Historical works
Howard Kaminsky
IAJGS Chicago
Jack Ruby
James S. Allen
Jan Zwartendijk
Jean-Jacques Richard
Jewishness
Jim Crax
Joan Myer
Joanne in Berlin 2016
Joanne Ruby
Joe Liebman
Journey to America
Katz Family
Kauflers of Krakow
Klein Family
Knud Knudsen
Laure Dissard
Liebman investigation
Lisbon escape route
Morris Spector
Other researchers
personal setback
polish consulate
postwar America
Rabbi Spektor
Rabinoviches of Kovno
Rabinowitzes of Harlem
Ratners of Albany
Rebe Eisenstein
refugee experience
Research needed
Rezekne
Ringels of Berlin
Ringels of Rzeszow
Robbins Family
Robert Felenstein
Roy John
Ruby Jewsday
Rustad-Ruby experiment
Sadie Rabinowitz
Selma Ruby
Sharon family
ship manifest
Shmuel Elhanan
Sidney Kessler
Spektor family in Israel
Spektors of Belarus
Stanisław Dygat
Stanley Ruby
Treelines
Tublowitzes of Rostov-on-Don
Tulbowitz
Tulbowitzes of Rezhitsa
Twyla
vital record
Walter Ruby
Wohlgemuths of Berlin
Wohlgemuths of Koenigsberg
Wohlgemuths of Prussia
Yeserksy
Yuri Dorn
Zimkin family
Word Portrait™
Make one to honor the puzzle fan in your family. Learn more.
Seen on Twitter
Sunsets don't get much better than this one over @GrandTetonNPS. #nature #sunset pic.twitter.com/YuKy2rcjyU
— US Department of the Interior (@Interior) May 5, 2014
Seven cousins
Submitted by Anonymous (not verified) on August 3, 2006 - 13:24
Here's another great photo from the Sandy collection, or else it is Marsha's. The photo print this was scanned from says October 1957. That's Walter, Danny, and Joanne on the right, Robert Felenstein at left, Marsha Felenstein kneeling, and I am guessing Janis and Amy Brenner up front.
Read more about Seven cousins
Walter's moving tribute to Mel Brenner
Submitted by druby on July 15, 2013 - 13:46
Here is the text of Walter Ruby's eulogy for Mel Brenner, delivered as part of a memorial service for our family member on June 27, 2013 at Jefferson's Ferry Retirement Community in Setauket, NY.
I am Walter Ruby, Mel's nephew by marriage. Sandy is my late father Stanley Ruby's first cousin. Besides the familial connection, Stan and my mother Helga were lifelong dear friends of Sandy and Mel. They lived in different parts of the U.S. but sometimes vacationed together, in Shelter Island, California or elsewhere.
I want to thank Janis, Amy, Leslie and their families and of course Sandy for giving me the chance to speak today. Like everyone here today, I am with the Brenners in their deep sorrow over Mel's passing. Yet it feels appropriate today to accentuate the positive; to celebrate Mel for his sheer joy in life and the joy he transmitted to all of us with his effervescent personality, with his delightful sense of humor and love of people and nature.
Let me start by sharing a sense of inadequacy for this task. The truth is that while I considered Mel my favorite uncle, I didn't know him nearly as well as I would have liked. When I was 6 years old, my family left Massapequa Park where we had lived for a year, and moved west to Pittsburgh, Pa and later to Chicago. So during childhood we saw Mel, Sandy and girls no more than once a year and often less; when we would travel to NY to visit the family or when they would stop off and see in Chicago while driving around the country in their RV.
Later once I was an adult and living in NYC I saw Mel and Sandy occasionally, often on family occasions—they were at my second wedding in 1983, at Joan Felenstein's funeral and we had several memorable visits to their Massapequa home, especially one in 2006, when we took a lot of photos and put it up on our Ruby Family History blog, including cardinals and other beautiful birds lining up at Mel's bird feeders. And then of course, I took a trip to Rhode Island last summer with Mel for the annual reunion of his 87th U.S. Army Infantry Division—where he served as infantryman in World War II, from the Battle of the Bulge across Germany to the Czech border the day the war ended. I will come back to that in a minute.
When I think back to childhood encounters with Mel, I have few specific memories just a sense of ease and fun of hanging out with him. I remember a wonderful visit to Long Island when I was 11; together with my parents and my siblings, Danny and Joanne, we were about to depart on our year long sabbatical year in Israel where my father was a visiting physicist--sitting on the floor in the living room of Joan's house in Rockville Centre showing Mel my baseball card collection of which I was immensely proud. I believe I left them with him for the year, so I wanted to make sure he knew what he was getting. The point is that he was the kind of grown up who could get on the floor with a nephew and flip baseball cards—and feel completely comfortable. I could see how he must have been a marvelous teacher.
Recently, after Mel's passing, Leslie wrote a letter of memories—one of which involved a game Mel inspired of dropping sticks into the stream in the woods behind their house and seeing whose came out first. A few years later we were doing that in the stream in the woods behind our house near Pittsburgh in a game called Poohsticks, which Stan had adapted from a Winnie the Pooh story—or so we thought all these years. It turns out it was likely adapted by Mel from Winnie the Pooh in a stream in the woods behind the Massapequa house and then Stan took it from him. In any case, the game was infused with Mel's gentle spirit and sense of fun…
Nine years ago, after my parents died, and Joanne, Dan and I got interested in family history, Mel let me read his World War II reminiscences and I found out for the first time about the horrors he had experienced as his unit moved from the Battle of the Bulge into Germany—face to face with death as a 19 and 20 year old, one of only 7 guys in his unit of 42 who survived till the end of the war. But I didn't really connect with Mel's story at that time as I was so totally focused on our immediate family's story, and somehow assumed Mel would be around forever…But then when I visited him and Sandy at Jefferson's Ferry about a year ago, he told me that he had just about given up on going to his reunion in Warwick, RI because his health was shaky and he didn't know how to get there, and something in me caused me to say, "Well, maybe I could drive you there." And he broke into a huge smile and exclaimed, "Gee…you would do that for me?" And I replied, "Sure, why not? I'm sure it will be great fun."
In fact, the experience of our round trip drive to the reunion and back including two crossings from Orient Point to New London and back and the experience of the it indeed turned out to be great fun, but much more than great fun. It was getting to know Mel really well, and to learn not only about his life experiences, but somehow a wonderful affirmation of life itself. Honestly, it felt like one of those 70's road dramas about cross-cultural bonding with a Jewish sensibility—something by Paul Mazursky like Harry and Tonto.
Mel hadn't been very mobile for a few years and from the moment we got started, he was as giddy as a kid in a candy shop about the sights—especially the North Fork of the Island, where he knew every village and every cove—he had sailed the whole shore with a friend who had a yacht of whom Mel said, "I loved sailing with him all around Long Island, but I got mad at him for two reasons; he died and he didn't leave me the yacht."
One thing that made Mel genuinely angry he showed me on the return trip; a hidden slave graveyard in Orient Point almost no one knows about…Mel showed me where it was…pointing out that few people are aware that slavery continued to exist in New York State well into the 19th Century…one could see the graves of the Lord and Lady of the Manor with their birth and death dates marked and around them some little stones without inscriptions were 5 or 6 slave graves looking like pet graves. How was such a thing possible, Mel demanded, in a country dedicated to the premise that all men are created equal? He loved this country and risked his life for it, but he wasn't about covering up the blemishes.
On the trip up, I debriefed Mel on his experiences in the war; how he went to school to be in an elite technical unit, but how it was disbanded and he ended up in the infantry instead, about his baptism of fire in the Bulge where it was so cold that when they slept outside in their sleeping bags it was so cold that the sleeping bags froze to the ground and they had to slither out of bed in the morning and then cut the bag loose with a pocket knife. Mel told me about seeing friends killed before his eyes and about the random quality of who lived and who died and about his own close calls; how he was once blown high into the air by a shell and somehow came down unharmed.
Mel recalled how on several occasions he, the only Jewish member of the unit, had talked other members of his unit out of shooting to death German soldiers they captured; that not only was it morally wrong and might besmirch the reputation of the unit, but if found out on the German side, it would discourage soldiers and civilians from surrendering. On one occasion, Mel had to summon all his self-control to prevent himself from shooting a teenage member of the Hitler Youth who had fired at him from a house. Even amidst the horrors he was immersed in, amidst a psychology of 'kill or be killed' Mel's quiet voice of conscience never left him.
After the war, Mel was then all of 20, in his own words, "went back to being a kid" and went to college before meeting and marrying Sandy and starting his teaching career. Like so many others I experienced Mel as one of the warmest, kindest and funniest people I ever knew and on that trip I wondered, "How did he managed to process his wartime experience and stay sane? The chasm between that experience and the rest of his life seemed immense. Apparently, he tucked it away for many decades, but the older he got and the further away from the war chronologically, the more he seemed to need to grapple with it and deal with what he had experienced…
On that trip also I learned a lot about other parts of Mel's life, including his political activism; his deep involvement in Democratic politics, including his unsuccessful campaign for a seat in the New York State Assembly in 1970 and the excitement of serving as a McGovern delegate to the Democratic Convention in 1972. Concerning the prior experience he talked to me about what it was like going door to door and asking for peoples' votes in the most solidly Republican area of Long Island. He said he knew his chances of actually winning the election were slim, but he enjoyed the experience greatly because he loved retail politics and he was glad to have the opportunity to share his passion for liberal ideals with people. As he spoke I was struck by how little personal ego seemed to have been involved; that for him—and for Sandy, who was also deeply involved in Democratic politics--it was really about leaving the world a better place than they found it. Mel believed fervrently in free speech and was a founder and past president of the New York Civil Liberties Union-Nassau County Chapter.
The last time I saw him about a month before his passing at a modern dance performance at Julliard, including a dance piece composed by his daughter Janice, a dancer and choreographer of whose career he was immensely proud, he told me that he a bit down to see that with all the work he and so many other wonderful people had done over the decades, the political situation in America and especially the state of civil liberties was no better than it had been 50-or 60 years ago, when he first got politically active. Had it all been worth it, he wondered, had anything really been accomplished? Janice, who was standing with us, and I assured him with considerable conviction that without the work that he, Sandy and other activists of their generation had done, things would be considerably worse. I hope that gave him some solace.
When thinking of Mel, I come back all the time to the hackneyed, but terribly apt phrase, "A life well lived." He did it all, pretty much everything he wanted to do in his life, a beautiful family, a successful and emotionally satisfying career, including a glorious 30 year retirement during which he rode his bike across France on several occasions and many other wonderful trips. He was witty, charming and incredibly kind. He gave so much more than he took. He left the world a better place. What more can one ask of life and what more can one ask of a human being?
Mel, we miss you and love you.
Read more about Walter's moving tribute to Mel Brenner
Germany and restored citizenship
Submitted by Anonymous (not verified) on April 6, 2012 - 14:23
Joanne and Walter have been talking for some time about the possibility of Helga's descendants having the option of obtaining dual German citizenship based on Helga's status as a displaced former citizen. I have regarded that possibility with skepticism, but prompted by my latest health insurance woes my two siblings have gone to the trouble of learning the German law.
Walter spoke with an official at the German consulate in New York and found that all the relevant information is here. The applicable law reads: "Former German citizens who between January 30, 1933 and May 8, 1945 were deprived of their citizenship on political, racial, or religious grounds, and their descendants, shall on application have their citizenship restored."
The information page continues with the following explanation:
Between January 30, 1933 and May 8, 1945 there were basically two laws pertaining to the loss of German citizenship. With the 'Law on the Revocation of Naturalizations and the Deprivation of the German Citizenship' of July 14, 1933, some persons were deprived of their German citizenship individually. Their names were listed in the Reich Law Gazette ('Reichsgesetzblatt') and with the publication of the particular Reichsgesetzblatt they lost their German citizenship.
The main group of former German citizens, however, lost their citizenship with the 'Eleventh Decree to the Law on the Citizenship of the Reich' of November 25, 1941. This stipulated that Jews living outside Germany could not be German citizens. This mainly affected Jews who had left Germany in the years before or shortly after the beginning of the Second World War.
I recently came across a listing of our Aunt Hilda, Elly's sister, having her citizenship revoked by name, but the second paragraph is the one that would apply to Elly Ringel and her daughter Helga. Walter writes that the official told him that if we have the proper documentation (and we do), then we could become citizens of Germany and of Europe within a year of filing the application.
What that means for any of us Rubys remains to be fully considered, but it is certainly interesting to understand that acquiring European citizenship (presumably without renouncing U.S. citizenship) is a realistic option for any of Helga's children and grandchildren.
Read more about Germany and restored citizenship
Thoughts on the new revelations—and a glorious day with Gene
Submitted by Anonymous (not verified) on August 17, 2009 - 08:29
Bravo to Dan for all of his amazing research since we got the death records for Joseph Rabinowitz and Lena Lincoff Rabinowitz. I also very much would like Bertha Yesersky to be the sister-in-law of Rabbi Spektor, as it would tie things up nicely with a pink ribbon, but as the culprit who led us down the garden path with my Alex Haley moment in the Yeshiva University archives three years ago, just assuming that the Joseph Rabinowitz mentioned in the Shimoff book and Toldos Yitzhak as having been trained in the Tamlud and Jewish Codes by Isaac Elchanan Spektor, MUST by our Joseph, the grandson of the great rabbi, I will now play the role of skeptic who warns about making such conceptual leaps. In short, I've been burned once before and its a powerful lesson.
Still, as you say, there is the name Bertha Yesersky popping up as Joseph's mother, and we know Sara Raizel Yesersky was the wife YES married at the age of 13, so there must be a family connection there. I must say that even as it became more and more clear that our Joseph Rabinowitz was NOT after all, the son of Rabbi Chaim Rabbinowitz and the grandson of YES, I never lost my bedrock faith that we were descended from Rabbi Spektor in some manner, because Stan Ruby told me so on a number of occasions during my childhood and he obviously would not simply have made that up. Obviously that information came from his father, Walter Ruby, but the exact nature of the connection got a little muddled over the years. So to see the name 'Bertha Yesersky' on Joseph's death certificate is certainly very powerful and compelling.
I went with Gene to the Mt. Zion cemetery on Saturday to check out and photograph the graves of Joseph and Lena Rabinowitz, only to learn to my dismay that Jewish cemeteries in the U.S. are locked up on Shabbat. Then we popped over to Mt. Hebron to see if by chance that onje would be open and Gene could meet Walter Ruby and Selma Ruby, but of course it was locked as well. I had somehow understood that the cemeteries would be open, but the offices closed, but I had figured we could find the graves without their help as we had the row number etc. Most disappointing because I may now not get a chance to go until after returning from the second of two trips around Sept 7. Gene plans to go on his own before that, but he seems to have lost the battery of his camera, so may not be able to take photos.
He has gotten interested in the family history thing recently; as he has realized that he lives between two cemeteries in Queens; one holding the remains of his great-great grandparents and the other his great grandparents. He was asking me a lot of questions about who they were etc, and that gives me a great feeling about what we have managed to do over the past five years to preserve and unearth the memory (much of it previously lost) of these forgotten generations for our kids and generations to come. All of this is a profoundly spiritual experience for me as I approach 60. Also for next month, I will make a trip to Varick Street to look for the ship record of the arrival of the families of Joseph Rabinowitz and Lena Lincoff in New York.
After Gene and I struck out at the cemeteries, we drove around talking and ended up in Flushing, Queens, so I took him to see one of the forgotten pieces of New York history, a Quaker meeting house on Northern Boulevard built in Cape Cod style that goes back to the 1690's, and a site a few yeards away where the English Quaker settlers of Flushing (a Dutch name) in 1655 demanded religious liberty from Peter Stuyvesant, the leader of nearby New Amsterdam whose sovereingity extended well into Long Island and up the Hudson River to Albany. The plaque at the site makes the point that the origins of the First Amendment to the Constitution (at least the freedom of religion part) flow from that incident in Flushing. Its one of those examples of forgotten history that we pass a million times a day and are blissfully unaware of and I think it impacted Gene a bit. Flushing, long very Jewish, nowadays has become New York's largest Chinatown (and Koreatown and Japantown and a little distance away India, Pakistan and Afghantown and is a wonderful place to step out of prosaic American reality and be swept into an Asian one. After our excursion the two of us went to a Japanese/Korean restaurant and discussed Israel and the Palestinians for several hours. All in all a great day with my son, even if we did miss the great-greats.
Read more about Thoughts on the new revelations—and a glorious day with Gene
Traveling Docent Demos
Mountain View Cemetery
Jewish Berlin
Yosemite Waterfalls
Sonoma Wineries

redpajama_set_name: RedPajamaCommonCrawl


All of our products are produced in New Zealand by Hubris International Ltd. The main ingredients for our products are perna mussel extract and glucosamine.
Please take a moment to read our Privacy, Returns and Delivery policies.


To help protect AT&T subscribers against improper messaging activity, the SMS API requires free full access and special permission before it can be used.
Our RESTful APIs make sending SMS short code messages a snap.
To look under the hood, try our Sample Apps or Quickstart guide.
With free access to the SMS API, there's no reason to look elsewhere for your messaging needs.
Want to learn more? Dive into the SMS documentation, read the FAQs.
Developers love using the AT&T SMS API!
"The AT&T SMS API fit our needs perfectly. We cut our development time by 25%."
Help keep your users on track with well-timed, targeted texts.
Send your most loyal customers exclusive, limited-time deals.
Poll your customers about important issues.


This is a placeholder page for Debra Elia, which means this person is not currently on this site. We do suggest using the tools below to find Debra Elia.
You are visiting the placeholder page for Debra Elia. This page is here because someone used our placeholder utility to look for Debra Elia. We created this page automatically in hopes Debra Elia would find it. If you are not Debra Elia, but are an alumni of Indian Hills High School Oakland, NJ, register on this site for free now.


text:
February 27, 2018 / 5:12 PM / in a year
Pinterest hires former Google exec as its first COO
FILE PHOTO: A Pinterest banner hangs on the facade of the New York Stock Exchange, (NYSE) during the morning rush in the financial district in New York City, U.S., February 9, 2018. REUTERS/Brendan McDermid
(Reuters) - Image-based searching and sharing website Pinterest on Tuesday appointed Francoise Brougher, a former executive at Alphabet Inc, as its first chief operating officer.
Brougher, most recently the business lead at Square Inc, will be responsible for supervising Pinterest's operations around the world and will lead its sales.
Brougher, whose appointment is effective March 12, will be based out of Pinterest's headquarters in San Francisco and report to Chief Executive Officer Ben Silbermann.
The first COO announcement is part of the maturation of a company as it nears an initial public offering.
Pinterest has more than 200 million monthly active users worldwide collecting and pinning photos related to cooking, designing, travel and other interests on its website.
More than half of Pinterest users are from outside the United States.
The company, backed by Andreessen Horowitz, Fidelity Investments and Goldman Sachs among others, has a market valuation of more than $12 billion.
Reporting by Heather Somerville in San Francisco and Laharee Chatterjee in Bengaluru; Editing by Maju Samuel


text:
Clay Mining and Blending
Our Company: Clay Mining and Blending. Then and Now
It started with the Simutron Computer invented by Hugh Walton. Then there was English China Clays (ECL) which was in a mess. I spoke to a man who knew the Stock Exchange back then. He said that they had "Made an Announcement". Virtually dead in the water.
This man, Hugh. Hugh was a brave man, they said. He did consultancy to sort it out. He supplied Analogue Computers to do the job. He was an Engineer and Mathematician and he was stubborn. I spoke to another man who knew English China Clays. He said Hugh was brave. He might not get paid if they went bust, he said. Hugh saved them.
The Managers were not bad men. Their company was out of control. It was the clay which was out of control and they were fighting it. Not working with it. Working it is the way you work clay. Ask a Potter. That is how our company was born. In the clay of Cornwall.
I Joined Hugh in 1979. This story is a short one. About the services, technology, and drive. And the mind of Hugh, and much later, me. He saved ECL from insolvency.
From their own press release:
"Making a Stock market company solvent again. Solving a labour dispute. Optimising their blending, hour by hour. Rather than weekly. Giving management back control of their company."
I will repeat that as they did: According to one of the company's own PR blasts, the investment of £187,000 in two analogue computers and our services repaid the investment every 6 weeks. That's £1.9 million today. Every 6 weeks. That is £16.47 Million a year in added profits.
This is how thing have changed between then and now. Computer technology and IT has taken 44 years to catch up.
Running optimisation problems on modern PCs give a single answer to a single question. An experienced person, like one of our team, can tell you one hundred additional things from the result. And from the figures the program produces. They tell us whether it is profitable to include a product in your line up or not. But you are the CEO or a manager and you must decide. That is a hard decision – to ditch something you have made for 40 years because, in the balance, it was found wanting. Not profitable. That is the way of our maths. Hard choices. So, we make those choices easier.
We have patented a unique analogue interface, which you, the CEO or manager, can play with. You can get a feel for what your company does and can do if you are in control of things, rather than them being in control of you. If you want to drop a product, it will be you who decides that from what the model tells you.
It is so cutting edge, it does what the Simutron did, in 1974. It gives you feedback and control. You stop wrestling with clay and you work it. Just like that potter. It has taken this digital world 44 years to catch up. At least it has if you are a manager of a middle-sized company. All the big boys in the FTSE use it, so why don't you?
Their costs of use would crush you, but ours are modest. A man said that we had paid for ourselves before we left the meeting room. In a bitchy-business world, that is a nice thing to say.
Nobel's and Medals -How this all came about
In 1974, a Russian called Kantorovich won a Nobel Prize for Economics for discovering the maths we use. An American called Dantzig also was awarded medals and bursaries by Jerry Ford in America in the same year for the same thing. There is no Nobel for Maths. There is quite a bit of Nobel Prize Winning Maths buried in our Optimisation Engine.
Back to Clay
The past was the past. They had three then six pits. They had been able to guess and use a rule of thumb and experience to mix clays for the day. Most mixes were accepted by most customers. Most were profitable to make and to sell.
Then ECC, they added pit after pit to meet fancy demands from customers. They blended from all the pits. Suddenly they could make any clay that the market demanded. Suddenly, company profits plummeted.
Cost engineering, job losses and fewer hours solved nothing. The not very militant local trades unions, especially those working the pits gradually became very angry. Loyal customers complained and started to withhold payments. They were hanging on by a thread. They didn't understand what had gone wrong. We did, and Hugh knew it from day one.
Pits, Pits, Pits and then More Pits
Clay blending from a few pits is quite easy. The men know the pits well. They know the blend that the bosses demand.
It gets difficult when you have many pits. And strict customer demands. ECL had gone from 3 pits to 15 by 1974. What they got wrong was that blending from 15 pits offered them a fool's paradise. A seemingly infinite number of ways to match a customer's needs. But no one knew how profitable that blending was. We solved that by optimsation and cost minimization.
No one knew how to blend up to 15 types of clay into 20 different products. And they needed it doing 4 times a day. With the results now, not next week.
So we started with the chemist's reports. Then we looked at the needs for the day. What did the customers demand? And then we looked at all 15 pits. And the solution was in Linear Programming. We had a computer which would do the blend-cost minimization in 10 minutes, so we demonstrated it. Whatever they threw at it, it came out with the lowest cost blend. The optimal profit.
Next came the model and what smart managers and smart clay pit workers could do with it.
That was when the directors placed their huge orders. That was when they told the Stock Exchange that they were out of danger and that was when they issued that historic press release. And it did so until 2004 when ECC invested tens of millions in new software and a full operations research unit to run the software. They still cannot play with knobs to interact with a model of their company, so we are under discussions.


Company, which would become a leading manufacturer of horse-drawn carriages.
company, producing approximately 50,000 horse-drawn vehicles a year.
large Buick complex in Flint. In three short years Buick led the U.S.
to merge and form one large company. Negotiations began in New York with J.
instead of stock. and along with Reo pulled out of the deal.
settled on "General Motors" as the new name for his company.
Next, Durant completed a deal with financially troubled Oakland Company.
like Henry Ford, would only settle for cash to the tune of $4.5 million.
acquired or incurred a substantial interest in almost 30 auto makers.
exchange for Du Pont's paying off Durant's debts.
Durant's automotive career in 1933.
a remarkable era in automotive excellence.


It was a beautiful Sunday today here in Lexington, Kentucky! Julianne and I had plenty of wonderful produce from Bountiful Baskets yesterday and so we put together an amazingly good lunch with the use of my wonderful big green egg grill.
Fresh corn, PURPLE potatoes, huge asparagus, a unique avocado bruschetta (fresh avocado, endive, tomatoes, radishes, green onions and basil) on Bountiful Basket sourdough and for dessert — grilled fresh pineapple! Anything missing? I don't think so!
One of the joys of bountiful baskets participation is the unique items that we get almost every time. This time around it was the purple potatoes. I've never had purple potatoes. But these not only tasted good, they looked good – they looked unique and exciting!
Shortly after we had the potatoes on the grill, Julianne prepared these massive stalks of asparagus with her themed garlic mixture and these were added to the grill.
All of this was cooking I shucked some corn. This is corn from California and it was amazing corn. Thick, heavy and really tasty looking!
Sweet Corn…doesn't that look good?
Ultimately, we had a meal fit for a King (and his queen!!) No meat, nothing per packaged — ALL fresh goodness!!
While finishing up the asparagus, we also put some fresh pineapple on the grill. This was our dessert and it was absolutely sweet as can be.
Grilled Pineapple — look at those stripes!
After a lunch like this, we were both feeling great, but took a nap anyway.
It was a wonderful afternoon!!


The Top 100 British Shore Dives, Revised Edition 2017, is the work of Anita Sherwood who produced the highly acclaimed DVD, "British Sea Life". Her photographic skill and artistry are beautifully exhibited in this excellent book.
The sites included are in sections headed East and West Scotland, Cornwall, Devon, Dorset, South East England, East England and Wales. There is also a selection of fresh water dives and a marine life identification section.
Containing many insider tips on the locations, best entry points with detailed photographs and maps, all presented in a style that entices you to browse through and discover the richness and diversity of the dive sites described. Information includes a write up of each dive and about sixteen other key points, such as Air fill, Hazards, B&B, Coastguard and Tourist info. Top 100 British Shore Dives, a superbly informative and handy guide showcasing many of the most popular shore dive sites around the British coastline.
Hinchcliffe books are a wholesale supplier of dive and marine guides and books.From wreck diving guides to presentation books, hinchcliff provides an excellent catalogue of titles, one will certainly take your fancy.
The Red Sea Invertebrates divers guide is another fantastic title from the well renowned scuba diving author Dr Peter Vine. A superb incite into the vast subject of red sea invertebrates. This clear and concise guide is ideal for divers to read up before at trip to the Red Sea.


text:
Learn Antiques Team February 1, 2019 International News, Learn, News
James Bond memorabilia auctions include shocking letter from the saintly Roger Moore
Suave and sophisticated are the terms that come to mind when referring to the late, great and saintly James Bond actor Roger Moore. A raised eyebrow perhaps. But certainly not the word 'bollocks'.
Extracted from Learn Antiques Gazette | Tom Derbyshire
So it comes as a bit of a shock to see a letter written by Moore which is among of a group of 007 collectables being offered as part of the regular Entertainment & Memorabilia Auction being held by West Midlands saleroom Aston's on January 17.
The lots have been consigned by the son of the late Brian Bailey. Chris Aston from the Dudley auction house says: "He was a British accountant whose career took him to Hollywood – not a place most people would expect to end up when pursuing a career in finance.
"He worked closely with stars such as Moore on James Bond films like Moonraker, The Spy Who Loved Me, Live and Let Die and The Man with the Golden Gun."
Seventeen Bailey lots feature in the auction.
Aston adds: "My personal favourite item of the collection is this framed letter from Roger Moore to Brian Bailey which simply reads 'Bollocks!' We can only imagine that this must be in response to Brian rejecting one of Roger's expense claims…"
This letter is estimated at £300-500.
Another stand-out item, estimated at £4000-6000, is a Moonraker laser rifle created especially for the futuristic 1979 film. "This is one of only a few surviving examples of these props," says Aston. It belonged to Bailey, who was the production accountant and is named in the end credits of Moonraker.
Estimated at £3000-5000 is a dressing gown from the 1973 film Live and Let Diemade in Switzerland expressly for A Sulka & Company Ltd, London. The gown is worn by Moore in the closing scene where he fights with Tee Hee in the train carriage – about six minutes screen time. (Apologies for lack of spoiler alert for the one person in the world who hasn't seen the movie.)
Poster popularity
Bond film posters are a gift that keep on giving for auction houses with the most popular examples in the best condition regularly making thousands.
In the January 17 sale, but separate from the Bailey lots, Aston's is offering a From Russia with Love (1964) original British Quad first release poster estimated at £800-1200 and a Goldfinger (1964) Original British Quad design for £600-1000.
Bond and Beyond
Meanwhile, again reflecting the strength of the Bond memorabilia market, Surrey saleroom Ewbank's has dubbed its February 7 auction Bond and Beyond.
Alastair McCrea, Ewbank's entertainment and memorabilia specialist, says: "The Bond sale was put on due to demand. We always have a great interest in any Bond items we auction and sellers know it is a great time to sell.
"This is our first auction titled Bond and Beyond. There are about 200 lots from a number of sources but the auction does have one large collection (approxinately 80 lots). We plan to do more in the future as the franchise continues to grow, possibly at the time of release of Bond 25."
A British Quad poster for another of the Sean Connery Bond outings, You Only Live Twice (1967), is guided at £1000-1500.
A rather more unusual promotional poster telling observers that 'Bond Drives an Aston…Naturally', a dealership promotion linked with Thunderball (the first 1965 release), is estimated at £1000-1500. This design was consigned to Ewbank's by an official Aston Martin family dealership and has been in their possession since issue in the 1960's when it was given to them by Aston Martin. A signed letter of authenticity from the dealership will be supplied to the purchaser.
Keeping on the theme of 'curious', a Gilbert Action Figure depicting Sean Connery in Thunderball, boxed with accessories, about 12in (30cm) high, is estimated at £150-250, and 10 Gilbert Movie Characters in a box set from 1965, in shrink wrap, are guided at £80-120.
My personal favourite is estimated at £100-150: a Gilbert Oddjob action puppet from 1965, on original card, about 13in (33cm) high.
Miss Lonelyhearts is cherished
ALVAR AALTO: A Designer You Can Look Up To


text:
Home International WHO warns, Coronavirus crisis may get 'worse and worse and worse'
WHO warns, Coronavirus crisis may get 'worse and worse and worse'
The new coronavirus pandemic raging around the globe will worsen if countries fail to adhere to strict healthcare precautions, the World Health Organisation (WHO) warned on Monday.
"Let me be blunt, too many countries are headed in the wrong direction, the virus remains public enemy number one," WHO director general Tedros Adhanom Ghebreyesus told a virtual briefing from the UN agency's headquarters in Geneva.
"If basics are not followed, the only way this pandemic is going to go – it is going to get worse and worse and worse."
Global infections stand at 13 million, according to a Reuters tally, with more than half a million deaths.
Tedros, whose leadership has been heavily criticised by US President Donald Trump, said that of 230,000 new cases on Sunday, 80 per cent were from 10 nations, and 50 per cent from just two countries.
The US and Brazil are the countries worst hit.
"There will be no return to the old normal for the foreseeable future … There is a lot to be concerned about," Tedros added, in some of his strongest comments of recent weeks.
Tedros said the WHO had still not received formal notification of the US pullout announced by Trump. The US president says the WHO pandered to China, where the Covid-19 disease was first detected, at the start of the crisis.
Trump, who wore a protective face mask for the first time in public at the weekend, has himself been accused by political opponents of not taking the coronavirus seriously enough, something he denies.
A WHO advance team has gone to China to investigate the origins of the new coronavirus, first discovered in the city of Wuhan. The team's members are in quarantine, as per standard procedure, before they begin work with Chinese scientists, WHO emergencies head Mike Ryan said.
Previous article14 – 22 July, Bengaluru will be under lockdown
Next articleUAE will not allow children's under 12 alone to fly from India
IMF chief: India took 'very decisive' move to fight with coronavirus pandemic
89-yr-old man, 72-yr-old wife recover from coronavirus in UAE
Israeli top court hears case on Netanyahu's political future
Coronavirus: We feel safe, say UAE residents.
New US rent caps already eroding values of apartments
Pakistanis return from China as flights resume
The cost of keeping the mind healthy in UAE
Tear gas fired at pro-Iran protesters outside US embassy in Baghdad
Rare Harvest Moon tonight: What does it mean, India timings, how...
China Cables: One mosque for every 530 Muslims in Xinjiang, says...
Fight against COVID-19 is mother of all World Cups: Ravi Shastri.


text:
Bit.Trip Core, marketed as BIT.TRIP CORE, is a 2009 arcade-style rhythm game developed by Gaijin Games and published by Aksys Games for the Wii's WiiWare download service. It is the second game in the Bit.Trip series, directly succeeding Bit.Trip Beat and preceding Bit.Trip Void, Bit.Trip Runner, Bit.Trip Fate and Bit.Trip Flux.

Gameplay

Bit.Trip Core is played with the Wii Remote controller held sideways. Players control the 'core', a plus-shaped ship located in the centre of the screen. The object of the game is to aim the core's lasers with the four directions on the D-Pad and fire the laser with the 2 Button in order to collect multi-colored dots known as 'beats'. There are three levels in total, named "Discovery", "Exploration" and "Control" respectively, each approximately 15 minutes in length. On the Steam version, players control the Core with the WASD keys and fire using ENTER.

As the player builds up a score multiplier by collecting beats in a row without missing, the game transitions into Mega and Super modes, making alterations to the level's graphics and music. In addition, bombs can be acquired and used with a press of the 1 Button, which is useful for clearing the screen of beats during difficult sections. If the player misses several beats, a Nether meter fills - this puts the game into a silent, black-and-white phase. This can be escaped from if the player collects beats, but further misses before escaping the Nether will result in a Game Over.

Development
Gaijin Games began development on Bit.Trip Core even before the release of Bit.Trip Beat. The game was inspired by Cosmic Ark, an Atari 2600 game that was a personal favourite of designer Alex Neuse. After going through several iterations of the game's design, which the team thought would be way too confusing, they settled on a system that shared some similarities with rhythm games such as Guitar Hero. Meanwhile, the controls were influenced by feedback from playtesters.

The game was later bundled with the other five Bit.Trip games as Bit.Trip Complete for the Wii in 2011. A Nintendo Switch port released on December 25, 2020.

References

2009 video games
MacOS games
Music video games
Video game sequels
WiiWare games
Nintendo 3DS games
Nintendo 3DS eShop games
Nintendo Switch games
Windows games
Multiplayer and single-player video games
Choice Provisions games
Video games developed in the United States
QubicGames games

redpajama_set_name: RedPajamaWikipedia


We're upgrading and selling TrailRider with range of over 60kms on a full charge with DaVinci wheelchair. Chair is in great condition and everything sold just as you see it. Includes charger and basic cushion. A helmet is recommended to be used as this thing is FAST!
The combo is almost $20,000 and the DaVinci can be installed onto another wheelchair.


text:
Home ETHIOFORUM Ethiopian Daily News .. ኢትዮ ዜናዎች
Ethiopia Opposition Accuses Government of Using Aid for Vote
Daily Ethiopian News, አዳዲስ ዜናዎች።
** When you post a News please include the Source link.
For More Ethiopian News please visit the Home Page
http://ethiopiaforums.com/
Unread post by ኦሽንoc » 11 Nov 2009 20:58
Ethiopia Opposition Accuses Government of Using Aid for Votes
By Jason McLure
Nov. 10 (Bloomberg) -- Ethiopia's opposition today accused Prime Minister Meles Zenawi's government of using its access to foreign-funded, anti-poverty programs to gain support for the ruling Ethiopian People's Revolutionary Democratic Front. Members of the opposition are routinely denied benefits to relief food, microfinance loans and access to civil service jobs, the Forum for Democratic Dialogue, a coalition of eight political parties said.
"Our members, regardless of qualifying to benefit from these services, are by and large denied access," Beyene Petros, a member of parliament from the FDD-affiliated United Ethiopian Democratic Forces, said in a phone interview today. "What they say is this is the EPRDF's and let Beyene Petros get it for you. That's the kind of challenge our members are facing."
Meles Zenawi
Among the affected programs is Ethiopia's Safety Net welfare program, which provides food and cash to 7.6 million people in the country's poorest regions, according to a press release from the FDD. The program is financed by donors including the U.S, the EU, the World Bank and the U.K.
University graduates have to register with the ruling party in order to secure jobs in the civil service or as teachers in Ethiopia's educational system, which is funded in part by European aid agencies, said Beyene.
A spokesman for Meles' EPRDF, which has ruled Ethiopia since 1991, rejected the allegations.
"These programs are not dependent on party membership," said Sekuture Getachew, a spokesman for the ruling EPRDF, said in a phone interview today from the capital, Addis Ababa. "They are given according to known specifications and criteria. We don't have this intention to take people hostage for their jobs or for their opportunities."
Willing to Negotiate
The EPRDF is willing to negotiate with the FDD on issues related to national elections scheduled for May, Sekuture said. It is not willing to negotiate on the issue of jailed opposition leader Birtukan Mideksa, nor on the composition of the country's national electoral board, he said.
"Birtukan is not a political issue," he said.
Birtukan, who was jailed following Ethiopia's disputed 2005 elections along with other opposition leaders, was released under a pardon agreement in 2007. She was jailed again in December after the government accused her of violating terms of her pardon, though her supporters say she was jailed because she was viewed as a political threat to the ruling party.
Groups including International Crisis Group, Human Rights Watch and Amnesty International have criticized Ethiopia for what they say are its worsening record on human rights and democratic freedoms.
To contact the reporter on this story: Jason McLure in Addis Ababa via Johannesburg at pmrichardson@bloomberg.net" onclick="window.open(this.href);return false"
Read More Ehiopian News Click Here
Return to "Ethiopian Daily News .. ኢትዮ ዜናዎች"


text:
Apple pumps $1 billion into Uber's China rival Didi Chuxing
by Sophia Yan @sophia_yan May 13, 2016: 10:30 AM ET
Apple invests in Uber's rival in China
Apple is plowing a whopping $1 billion into Uber's big Chinese rival, Didi Chuxing, in a move that ups the stakes in a fierce battle for customers in the world's most populous country.
The huge sum makes Apple (AAPL) a strategic investor in Didi alongside Chinese tech giants Tencent (TCEHY) and Alibaba (BABA), which have already thrown their weight behind the company.
Didi has been engaged in an all-out war against Uber in China. The Chinese company has long claimed the upper hand, as it was operating well before Uber got into China.
"The endorsement from Apple is an enormous encouragement and inspiration for our four-year-old company," said founder and CEO Cheng Wei.
Didi offers numerous services: booking buses or private cars, taxi-hailing, ride-sharing, and even a test drive options, where customers can take high-end cars out for a quick spin.
Related: Uber hires top Ford exec in self-driving car quest
The company now completes more than 11 million rides a day, and boasts 300 million users in more than 400 Chinese cities. It also says it holds 87% of the private car market and 99% of the taxi-hailing sector.
"We are extremely impressed by the business they've built and their excellent leadership team, and we look forward to supporting them as they grow," said Apple CEO Tim Cook.
Didi President Jean Liu said the deal happened with "lightning speed" after meetings between the two sides in California late last month.
Apple's investment is part of a new round of fundraising that Liu described as "oversubscribed." Earlier this year, the company was reportedly valued at $20 billion.
For Apple, some observers speculated the investment could be a way for the U.S. company to test new products in China, including a rumored car-related project. Others suggested the Didi partnership may help smooth Apple's relationship with the Chinese government.
Liu said there are "many exciting areas" the two companies could work on together but declined to talk about specific ones.
The tie-up deepens the challenges Uber faces in China, where it operates in about 50 cities.
Despite its dominant position in China, Didi has faced some challenges. Just last week, one of its drivers was arrested on suspicion of robbing and killing a female passenger. In the past six months, two Didi drivers were also sentenced to prison for crimes including rape and robbery.
Related: Driver for Uber's Chinese rival arrested
Uber has faced its own problems with violent behavior from some of its drivers around the world. One went on a deadly shooting spree in Kalamazoo, Michigan, in February, although none of the victims were an Uber fare. And in November, an Indian court sentenced to life in prison a man who raped a woman who had requested a ride through Uber.
--With reporting by Hope King
CNNMoney (Hong Kong) First published May 12, 2016: 11:04 PM ET


text:
Home»Scholarship»International Entrance Awards at Langara College 2022-2023
International Entrance Awards at Langara College 2022-2023
By Benita on February 28, 2022 Scholarship
Intending to provide financial assistance for high achieving and talented students, Langara College is now accepting applications for the International Entrance Awards for the academic year 2022-2023.
The educational grant is available to be undertaken in the Undergraduate degree coursework at the Langara College by international students will be covered under the award amount from this grant. Students must have achieved an IELTS score of 7.0 and 76% from their previous institution to be eligible to receive this award.
About Langara College
Langara College is a public degree-granting college in Vancouver, British Columbia, Canada, which serves approximately 22,000 students annually through its university, career, and continuing studies programs.
Why choose to study at Langara College? Langara College provides students with the academic and experiential foundation to chart their course to further education, professional and personal development, and career success.
Brief Details of the International Entrance Awards at Langara College 2022-2023
Institution: Langara College
Degree Level: Undergraduate Degree
To be taken at: Canada
Application Deadline: The application deadline for the Spring 2023 Semester is May 31, 2022, at 4:00 pm.
Eligible Requirements
To be eligible, the applicants must meet all the following/given criteria:
The applicants must be approved for admission to Langara as an international student.
The applicants must have met all admission requirements and received an offer of admission and have,e a B+ average, equivalent to a GPA of 3.33 or 76% from their previous institution (high school or post-secondary).
The students must submit scores of the following English language proficiency tests: IELTS – 7.0
The students successful selected by Langara College will be provided an award to support their undergraduate studies in Canada.
How to Apply: Admission applications to Langara College must be made on its application portal. Students interested to participate to win the award can scroll down on this page and fill out the available scholarship form
Copy of your Offer of Admission letter
Copy of IELTS score, if applicable
Copies of transcripts from previous institutions showing a minimum average of B+ (or equivalent)
Two references
Previous ArticleUniversity of Guelph Hardy International Student Scholarship Grants 2022-2023
Next Article University of Bedfordshire International Academic Merit Grants 2022-2023


text:
BellaOnline Forums Religion and Spirituality Dreams What did you dream about last night?
Re: What did you dream about last night?
Lori-Dreams #891813 05/14/15 03:28 AM
Grand-Métis, Quebec, Canada
Nancy Roussy
Highest Posting Power Known to Humanity
I remember one dream (had to write it down since i did not have electricity when i got up - thankfully it came back before my tennis match and i also had enough time to do my morning beauty routine which was done in a record time while going downstairs 3 times).
A couple had argued and the man slept on the coach. The next day that couple had a nice day and the man thought he did not have to sleep again on the coach, he fell asleep on it and while he was sleeping the wife brought him his pillow and he saw that when he woke up. Then it was a Dog on the coach and soon after I arrived and cuddled with the Dog. I asked him if he wanted to go on a vacation and he was excited about it. I gave a few suggestions then decided on going camping. So we went camping and I even was taking my showers with solar camping showers, the Dog would check if people could see when I was taking the showers. For that trip I only saw the camping ground and two showers, during the second people were coming closer and the Dog growled to warn me. Then I was in a gun fight and soon I was in my Saint-Hubert living room, I had two guns in my hands and I stopped then closed my eyes trying to guess where the people shooting at me or/and others were at (during that time there were people there looking at me). Then I started shooting on the ceiling, someone was in one of the bedroom (the 1 right above the living room) and after a while I was shooting blanks, the man came down the stairs (i was there too at the bottom) thinking he had me then I pointed a gun right at his head and I told him he was (do not remember exactly what i said - should of written that down too). Before I shot him (i was pointing the gun right at his forehead) I woke up.
What did you dream about last night? Lori-Dreams 02/27/13 01:51 PM
Re: What did you dream about last night? Lori-Dreams 02/27/13 01:55 PM
Re: What did you dream about last night? jenniechan 02/28/13 12:04 AM
Re: What did you dream about last night? Sunday 02/28/13 10:56 PM
Re: What did you dream about last night? Nancy Roussy 03/01/13 11:39 PM
Re: What did you dream about last night? Debbie-SpiritualityEditor 03/03/13 08:45 PM
Re: What did you dream about last night? Debbie-SpiritualityEditor 03/04/13 08:08 AM
Re: What did you dream about last night? Meredeth King 03/06/13 09:30 PM
Re: What did you dream about last night? Jilly 03/07/13 06:36 PM
Re: What did you dream about last night? Lori - Marriage 03/09/13 09:39 PM
Re: What did you dream about last night? Nancy Roussy 03/11/13 10:42 AM
Re: What did you dream about last night? Connie - ADD/Sandwiches/Reading 03/12/13 09:23 PM
Re: What did you dream about last night? Tina - Living Simply 03/13/13 05:30 PM
Re: What did you dream about last night? mahunter2127 03/18/13 11:45 PM
Re: What did you dream about last night? Lori-Dreams 03/19/13 11:21 AM
Re: What did you dream about last night? Yvonnie-Inspired 03/19/13 09:50 AM
Re: What did you dream about last night? Yvonnie-Inspired 03/21/13 12:57 PM
Re: What did you dream about last night? Lisa LowCarb 03/27/13 04:00 PM
Re: What did you dream about last night? Elleise - Clairvoyance 03/28/13 09:44 PM
Re: What did you dream about last night? Elleise - Clairvoyance 03/31/13 12:19 AM
Re: What did you dream about last night? Horror_Movies_Editor 04/06/13 03:35 PM
Re: What did you dream about last night? Horror_Movies_Editor 04/07/13 10:13 AM
Re: What did you dream about last night? Dr. Hershey-MH 04/08/13 11:27 AM
Re: What did you dream about last night? Dr. Hershey-MH 04/10/13 12:48 PM
Re: What did you dream about last night? stardrifting 04/25/13 04:46 PM
Re: What did you dream about last night? Jilly 05/10/13 03:17 AM
Re: What did you dream about last night? golden feather 05/22/13 05:23 AM
Re: What did you dream about last night? loongdragon 05/22/13 05:37 AM
Re: What did you dream about last night? loongdragon 05/22/13 04:07 PM
Re: What did you dream about last night? Ally-Home/Hols/USA Cook 06/17/13 08:57 PM
Re: What did you dream about last night? KrisD 06/25/13 02:58 AM
Re: What did you dream about last night? Anjel37 07/01/13 04:40 PM
Re: What did you dream about last night? Burt B. 07/15/13 01:11 PM
Re: What did you dream about last night? Burt B. 07/23/13 09:42 AM
Re: What did you dream about last night? Chelle Marriage - Marriage Editor 07/28/13 12:51 PM
Re: What did you dream about last night? LindaM55 07/28/13 04:01 PM
Re: What did you dream about last night? Isabel - Mexican Food 07/31/13 06:36 AM
Re: What did you dream about last night? Launa- Children's Books/Crafts Editor 10/21/13 04:27 AM
Re: What did you dream about last night? daves101 04/24/14 10:30 AM
Re: What did you dream about last night? rachcf 07/07/14 04:30 PM
Re: What did you dream about last night? "Rosie" 08/27/14 04:54 PM
Re: What did you dream about last night? "Rosie" 08/28/14 04:41 AM
Re: What did you dream about last night? Edie - MysteryBooksEd 08/28/14 07:34 PM
Re: What did you dream about last night? Jana - Creativity Editor 12/27/14 04:39 PM
Re: What did you dream about last night? Angie 01/08/15 02:38 PM
Re: What did you dream about last night? Dreams-Chi 01/28/15 03:11 PM
Re: What did you dream about last night? Angie 02/17/15 09:52 AM
Re: What did you dream about last night? Sheryl T 02/18/15 04:21 PM
Re: What did you dream about last night? Dreams-Chi 03/04/15 11:40 AM
Re: What did you dream about last night? Sheryl T 03/14/15 10:58 AM
Re: What did you dream about last night? Jana - Creativity Editor 03/20/15 03:03 AM
Re: What did you dream about last night? Deanna - New Age 04/13/15 02:58 PM
Re: What did you dream about last night? Alice - Weight Loss 04/22/15 06:49 AM
Re: What did you dream about last night? Anu D - Orchids 05/11/15 01:25 AM
Re: What did you dream about last night? Korie - Folklore//Knitting/Yoga Editor 05/11/15 11:30 PM
Re: What did you dream about last night? Encore DT 05/22/15 05:03 PM
Re: What did you dream about last night? Valerie Hispanic Culture 05/23/15 08:12 PM
Re: What did you dream about last night? stardrifting 06/16/15 11:38 AM
Re: What did you dream about last night? DeEden 08/01/15 08:58 AM
Re: What did you dream about last night? BB -Body Care 01/14/16 01:14 PM
Re: What did you dream about last night? Styxx 02/17/16 01:03 AM
Re: What did you dream about last night? Michelle - Short Stories 03/14/16 05:48 PM


text:
Q: Can't access authorized page I should access to an admin page as the role of the user is admin but I can't because the token can't be verified and this message displays

"message": "No token provided!"

but the access token is provided
"id": 2,
"username": "admin1",
"email": "admin@example.com",
"roles": [
    "ROLE_ADMIN"
],
"accessToken": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6MiwiaWF0IjoxNjQxNDE0OTQ4LCJleHAiOjE2NDE1MDEzNDh9.kd7oC8clIsSPMBdwQHWBoUvCmkXOP5dLcu_0xZUAvwA"

This is my code:
const jwt = require("jsonwebtoken");
const config = require("../config/authConfig.js");
const db = require("../models");
const User = db.user;

verifyToken = (req, res, next) => {
    let token = req.headers["x-access-token"];

    if (!token) {
        return res.status(403).send({
            message: "No token provided!"
        });
    }

    jwt.verify(token, config.secret, (err, decoded) => {
        if (err) {
            return res.status(401).send({
                message: "Unauthorized!"
            });
        }
        req.userId = decoded.id;
        next();
    });
};

isAdmin = (req, res, next) => {
    User.findByPk(req.userId).then(user => {
        user.getRoles().then(roles => {
            for (let i = 0; i < roles.length; i++) {
                if (roles[i].name === "admin") {
                    next();
                    return;
                }
            }

            res.status(403).send({
                message: "Require Admin Role!"
            });

            return;
        });
    });
};

isModerator = (req, res, next) => {
    User.findByPk(req.userId).then(user => {
        user.getRoles().then(roles => {
            for (let i = 0; i < roles.length; i++) {
                if (roles[i].name === "moderator") {
                   next();
                   return;
                }
            }

            res.status(403).send({
                message: "Require Moderator Role!"
            });
        });
    });
};

isModeratorOrAdmin = (req, res, next) => {
User.findByPk(req.userId).then(user => {
    user.getRoles().then(roles => {
    for (let i = 0; i < roles.length; i++) {
        if (roles[i].name === "moderator") {
        next();
        return;
        }

        if (roles[i].name === "admin") {
        next();
        return;
        }
    }

    res.status(403).send({
        message: "Require Moderator or Admin Role!"
    });
    });
});
};

const authJwt = {
verifyToken: verifyToken,
isAdmin: isAdmin,
isModerator: isModerator,
isModeratorOrAdmin: isModeratorOrAdmin
};
module.exports = authJwt;


text:
Q: NiFi doesn't start on MacOS Big Sur I have installed NiFi using Homebrew following the instructions on this page.
Once I go start NiFi using
nifi start

I get the following:
Java home: /usr/local/opt/openjdk@11/libexec/openjdk.jdk/Contents/Home
NiFi home: /usr/local/Cellar/nifi/1.15.0/libexec

Bootstrap Config File: /usr/local/Cellar/nifi/1.15.0/libexec/conf/bootstrap.conf

Error: Could not find or load main class org.apache.nifi.bootstrap.RunNiFi
Caused by: java.lang.ClassNotFoundException: org.apache.nifi.bootstrap.RunNiFi

I also see this error in the nifi-app.log
2021-12-08 13:06:37,463 ERROR [Write-Ahead Local State Provider Maintenance] o.a.n.c.s.p.l.WriteAheadLocalStateProvider Failed to checkpoint Write-Ahead Log used to stor$
java.io.FileNotFoundException: ./state/local/partition-0/1.journal (No such file or directory)
        at java.base/java.io.FileOutputStream.open0(Native Method)
        at java.base/java.io.FileOutputStream.open(FileOutputStream.java:298)
        at java.base/java.io.FileOutputStream.<init>(FileOutputStream.java:237)
        at java.base/java.io.FileOutputStream.<init>(FileOutputStream.java:187)
        at org.wali.MinimalLockingWriteAheadLog$Partition.rollover(MinimalLockingWriteAheadLog.java:788)
        at org.wali.MinimalLockingWriteAheadLog.checkpoint(MinimalLockingWriteAheadLog.java:534)
        at org.apache.nifi.controller.state.providers.local.WriteAheadLocalStateProvider$CheckpointTask.run(WriteAheadLocalStateProvider.java:286)
        at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:515)
        at java.base/java.util.concurrent.FutureTask.runAndReset(FutureTask.java:305)
        at java.base/java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:305)
        at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
        at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
        at java.base/java.lang.Thread.run(Thread.java:829)

Any ideas?

A: I got the same error. Mine was due to the 8443 being occupied. I think, you can either find what's using the 8443 or you can try to change the port nifi.web.https.port=8443 in ./bin/conf/nifi.properties to something else. I hope it helps if you are still facing the issues.


I was given £10 gift voucher by a friend for my birthday earlier in September so I ordered a bunch of books! The Lindsey Kelk book is one I've been looking forward to for ages and the others just sounded good!
I'm dreading Christmas – the build up has already begun and it's depressing! A Christmas tree has appeared in my office this week and I don't know why! When I went out with my family tonight, I spotted a Christmas tree in someone's living room…. it's way too early, people!
I finally finished the challenge, despite being rubbish at posting everyday and getting distracted!


text:
The People (Director of Public Prosecutions) v A. McD
Judgment Irish Reports Cited authorities 22 Cited in 8 Precedent Map Related
Docket Number: REDACTION REQUIRED [99/2014], [S.C. No. 99 of 2014]
Judge: Mr. Justice William M. McKechnie
Denham C.J.
O'Donnell J.
O'Malley J.
REDACTION REQUIRED
[99/2014]
IN THE MATTER OF AN APPEAL PURSUANT TO SECTION 23 OF THE CRIMINAL PROCEDURE ACT 2010
Between /
THE DIRECTOR OF PUBLIC PROSECUTIONS
Prosecutor/Appellant
A. McD.
Accused/Respondent
Evidence – Re-trial – Burglary – Appellant seeking re-trial – Whether trial judge erroneously excluded compelling evidence
Facts: The accused/respondent, in early 2014, at Dublin Circuit Criminal Court, was found not guilty by a jury, on a direction of the trial judge, in respect of offences of burglary, endangerment and arson. The prosecutor/appellant, the DPP, took objection to the evidential rulings which directly led to the non-guilty verdicts being returned. She decided to invoke the provisions of s. 23 of the Criminal Procedure Act 2010, so as to appeal to the Supreme Court from the rulings. She claimed that the trial judge, in acceding to the applications made on behalf of the then accused, erroneously excluded compelling evidence within the meaning of section 23(3)(a) and (14) of the 2010 Act. That evidence was twofold in nature: firstly, certain CCTV footage which the trial judge ruled inadmissible during the course of a voir dire; and secondly, a certain memorandum of interview which was excluded, when the issue of its admissibility arose, on the basis that the provisions of s. 19 of the Criminal Justice Act 1984 had been wrongfully invoked and that there was therefore a doubt as to whether the accused person's responses in the interview had been given voluntarily. As there was no further evidence of value against the accused, the trial judge directed the jury accordingly. The DPP also sought to have the accused re-tried for the offences.
Held by McKechnie J that the ruling of the trial judge was erroneous in a point of law and that, as a result, what was excluded from the jury's consideration, namely, the CCTV footage and/or the memorandum of interview, could correctly be considered as compelling evidence within the meaning of that term as contained in s. 23 of the 2010 Act. In addition, McKechnie J held that no reasons of a significant nature were advanced as to why a re-trial should not take place.
McKechnie J held that she would accordingly order a re-trial.
Appeal allowed.
JUDGMENT of Mr. Justice William M. McKechnie delivered on the 14th day of December, 2016
Legal Context:
In early 2014, at Dublin Circuit Criminal Court, the accused/respondent was found not guilty by a jury, on a direction of the trial judge, in respect of the following three offences, namely:-
(1) Count 1 – Burglary:
that on the 19th August, 2011, he entered the building known as the car park of a certain apartment complex in the inner part of Dublin City (identified by name and location in the indictment) as a trespasser and did commit an arrestable offence to wit: arson, contrary to section 12(1)(b) and (3) of the Criminal Justice (Theft and Fraud Offences) Act 2001;
(2) Count 2 – Endangerment:
that on the same occasion and at the same place he intentionally or recklessly engaged in conduct to wit: the setting alight of a particular motor vehicle, which created a substantial risk of death or serious harm to another, contrary to section 13 of the Non-Fatal Offences Against the Person Act 1997; and
(3) Count 6 – Arson:
that again on the same occasion and at the same place he did, without lawful excuse, damage certain specified property by fire, intending to damage the same or being reckless as to whether such property would be damaged, contrary to section 2(2) of the Criminal Damage Act 1991.
A nolle prosecui was entered in respect of the other counts on the indictment.
The DPP took objection to the preceding evidential rulings which directly led to the non-guilty verdicts being returned. She decided to invoke the provisions of section 23 of the Criminal Procedure Act 2010 ('the 2010 Act'), so as to appeal to this Court from the rulings so made. In broad terms she claims that the learned trial judge, in acceding to the applications made on behalf of the then accused person, erroneously excluded 'compelling evidence' within the meaning of section 23(3)(a) and (14) of the said 2010 Act. That evidence was twofold in nature: first, certain CCTV footage which the trial judge ruled inadmissible during the course of a voir dire; and, secondly, a certain memorandum of interview which was excluded, when the issue of its admissibility arose, on the basis that the provisions of section 19 of the Criminal Justice Act 1984 had been wrongfully invoked and that there was therefore a doubt as to whether the accused person's responses in the interview had been given voluntarily. As there was no further evidence of value against the accused, the trial judge directed the jury accordingly. As this is a 'with prejudice' appeal, the DPP also seeks to have the accused re-tried for the offences above described.
Factual Background:
At approximately 9.10pm on the 19th August, 2011, a number of gardaí, in response to a call from a member of the public, arrived at the apartment complex in question. One such member, whom I shall call Garda Smith, observed a male, now known to be the respondent, on the inside of a gate to the car park underneath the apartment building. He was attempting to open the gate, but was unable to do so. He acknowledged that he was not a resident in the apartment block and said that he was simply trying to get out. At that point, Garda Smith, who earlier had been conscious of smelling smoke, observed that a car was on fire within the car park itself.
A short time thereafter, the accused was arrested and subsequently detained pursuant to section 4 of the Criminal Justice Act 1984 ('the 1984 Act'), which detention was extended once in accordance with the provisions of that section. During this detention, in which a number of items of his clothing were taken for examination, the accused was interviewed on three occasions. Nothing of evidential value derived from the first two interviews; during the third, however, he accepted that he was at the scene of the crime and that he was a trespasser on the premises in question, but denied that he had any responsibility for setting fire to the vehicle. He was released without charge at 12.30pm on the 20th August, 2011.
On the 24th August, 2011, Garda Smith obtained CCTV footage which appeared to show the incident in the car park and a man setting fire to the motor vehicle. He believed that this was the same man as the person he had first encountered on arriving at the complex. Sometime afterwards he obtained a piece of forensic information regarding the presence of petrol vapour on a petrol cap found beside the burned out car. Armed with this new evidence, Garda Smith obtained, on the 14th November, 2011, a warrant under section 10 of the 1984 Act, which authorised the re-arrest of the accused in the context of this incident. That warrant was executed some two days later.
On the 16th November, 2011, the accused, having been re-arrested, was interviewed on a number of occasions, one of which features heavily in this case. Thereafter he was charged with certain offences arising out of the incident above described, including the three specific charges set out at para. 1, supra. On arraignment, pleas of not guilty were entered in respect of all such charges. The essential evidence upon which the DPP proposed to rely at trial was the CCTV footage of the incident, as well as a memorandum of the third interview conducted on the 16th November, 2011, (sometimes referred to as the 'section 19 interview'). In effect, as events show, without this evidence there was no other basis which could possibly justify a continuation of the prosecution.
The Objections:
The trial of the accused commenced before Her Honour Judge Berkeley in early 2014. At the outset of the hearing, after the jury had been sworn in but before counsel's opening address, the trial judge agreed to hear and determine an objection to the admissibility of the said CCTV footage, and for that purpose embarked upon a voir dire. Subsequent to her ruling on that issue (para. 17, infra), the case proceeded on the further evidence available until Day 3 of the trial, when objection was made to the admissibility of the said memorandum on the basis that section 19 of the 1984 Act, as substituted by section 29 of the Criminal Justice Act 2007, had been wrongly invoked. Consequently there were two discrete admissibility rulings made at the trial which remain, apart from the procedure adopted, the essential issues on this appeal. One can perhaps add a third, which is that even if the section 19 objection is a good one, does this automatically render the resulting statement involuntary. Finally, depending on this Court's decision on these points, the consequential issue of a re-trial may also have to be considered. First, however, a reference to the statutory provision by which the case has arrived at this Court.
The Criminal Procedure Act 2010:
By Notice of Appeal dated the 4th March, 2014, the DPP, in the grounds of appeal, described her challenge, inter alia, as relating to:-
'1. A Ruling made by the Trial Judge [which] erroneously excluded compelling evidence of the guilt of the Accused (within the meaning of Section 23(14) of the Criminal Procedure Act 2010), namely CCTV footage allegedly showing the Accused in the act of committing the offences with which he was charged.
2. A Ruling made by the Trial Judge [which] erroneously excluded compelling evidence of the guilt of the Accused (within the meaning of Section 23(14) of the Criminal Procedure Act 2010), namely evidence of Replies made by the Accused in the course of interview.'
As is therefore quite evident, the vehicle by which the instant...


text:
You are here: Home / Columns / 2004 Columns / May 9, 2004: An Inside Look at G-8 Summit Protest Planning
May 9, 2004: An Inside Look at G-8 Summit Protest Planning
Rap! Rap! Rap! "This session of the G-8 Summit protest planners will come to order. Welcome to our special steering committee, the Committee for Rebellion, Unrest and Destruction, or CRUD. Remember, ladies and gentlemen and those of you somewhere in between, we want to be ready to shine when the world leaders come to Sea Island in a few weeks. We want the world to know that we are CRUD." (Yeah! Clap! Clap! Clap!)
"Now, let's get down to specifics. I want to go around the room and have you introduce yourselves and tell us about your protest plans. Let us start with the young woman dressed as a hot dog bun and slathering herself with mustard."
"Yes, Mr. and/or Ms. Chairperson, my name is Buffy Bloomers. I represent all the liberal weenies who hate George Bush." (Hurrah! Clap! Clap! Clap!) "We want to restore integrity to the White House. So Bill Clinton was a skirt chaser who cheats at golf. So what? That's better than having someone in the White House who didn't win the election fair and square. Al Gore should be president because he invented the Internet." (Whoopee! Clap! Clap! Clap!)
"Well said, Ms. Bloomers. And you, sir, in the ski mask?"
"This isn't a ski mask, Mr. and/or Ms. Chairperson. It is a symbol of the hopelessness of the proletariat oppressed by the worldwide military-industrial complex controlled by Dick Cheney and Beetle Bailey." (Right on! Clap! Clap! Clap!) "Besides, when we throw rocks through store windows, this symbol makes it difficult for the police to identify us."
"And why would you throw rocks through store windows?"
"Because we believe strongly in world peace." (Yes! Clap! Clap! Clap!)
"Interesting. Let me recognize the man in the gray wool suit with the 'Sonny Lied' sign."
"My name is Leon. I thought this was a protest meeting about the state flag, but I am obviously in the wrong room. You folks are weirder than a possum chasing its tail. I'm outta here." (Boooo!)
"Sorry, Leon. Let's hear from the pimply faced kid in the front row. Tell us about you and your organization."
"Mr. and/or Ms. Chairperson, I am the leader of the Global Committee Against the Environmental Policies of the International Monetary Fund." (Hurrah! Clap! Clap! Clap!)
"Wonderful. And just what are the environmental policies of the International Monetary Fund?"
"I have no idea. It just sounded like a neat thing to protest. Besides, I have never been to Sea Island in June." (Ha ha! Clap! Clap! Clap!)
"Thanks, pimply faced kid. Now, here is CRUD's public relations director, Puffin Weeds, to bring us up to date on media coverage."
"Thank you, Mr. and/or Ms. Chairperson. There will be thousands of media people covering the G-8 Summit, and they don't have the foggiest notion what is going on, but to justify their expense accounts they have to report on something. That's where we come in. We have a number of photo-ops planned. For example, we will hang banners daily from the Sidney Lanier Bridge, protesting everything from the plight of the Siberian Yak to the visual pollution caused by hanging banners from the Sidney Lanier Bridge." (Fantastic! Clap! Clap! Clap!) "We are also going to organize a march to protest how good we have it in the United States. It's just not fair. Why can't we be more like Cuba?" (Yes! Yes! Amen to that!)
"I see a weird-looking guy in the back of the room, dressed in a blue blazer, khakis and docksiders. Forgive me for saying so, but you don't look like CRUD."
"I take that as a compliment. My name is Dick Yarbrough. I represent People Having Onerous Opinions of Extremist Yahoos, or PHOOEY. On behalf of my loyal followers, we say PHOOEY on you all. (Gasp!) You are nothing but a bunch of publicity-seeking, self-righteous phonies. (Gasp!) I hope all the sand gnats in South Georgia fly up your nose and hold a protest march on your sinuses." (Gasp! Gasp!)
"Mr. Yarbrough, sticks and stones may break our bones, but your words will never hurt us. We are CRUD and nothing you say will change that. Meeting dismissed!" (Yeah! Clap! Clap! Clap!)


text:
China Lake is a lake in Kennebec County, Maine. Located northeast of the state capital of Augusta, China Lake is situated in the towns of China and Vassalboro. China Lake has two large basins connected by a narrow neck. The elongated eastern basin with an average depth of less than  is entirely within the town of China, and has an irregular shoreline heavily developed with residences and seasonal cottages. The more nearly circular western basin extending into East Vassalboro is as deep as , and shoreline development around the western basin has been discouraged to allow use as a water supply for Waterville and Winslow. The western basin overflows into Outlet Stream in the town of Vassalboro. Outlet Stream flows  north to discharge into the Sebasticook River in Winslow  upstream of the Kennebec River.

Summer water temperatures in China Lake range from  near the surface to  in the deepest pools. Nutrient loading from shoreline development causes annual algal blooms with nocturnal depression of dissolved oxygen concentrations. These conditions have become unsuitable for historic populations of Atlantic salmon and lake trout. Introduced brown trout have adapted to lake conditions, and brook trout fishing has been sustained by stocking legal-size fish from surplus hatchery production. China Lake is also known locally for producing some of the most productive Largemouth Bass fishing in Maine, with several large tournaments held each summer. Other fish found in the lake include smallmouth bass, chain pickerel, white perch, yellow perch, sunfish, creek chub, white sucker, hornpout, and American eel. Public boat launch facilities are available at the north end of the eastern basin and in Vassalboro near the outlet of the western basin.

References

Lakes of Kennebec County, Maine
China, Maine
Vassalboro, Maine
Reservoirs in Maine


text:
Q: Jest onFailure hook I have a test suite running using Jest. I would like to trigger a hook after any failed test, ideally with the context of the test still available.
Specifically, I am using Puppeteer via jest-puppeteer. The goal is to take a screenshot of the page after a test failure, before the page is closed in the tearDown function.
What's the best way to achieve that?
An example of my test suite:
describe('My tests', () => {
    beforeAll(async () => {
        await page.goto('http://example.com');
    });

    // TODO I need something like this
    onFailure(async (something) => {
        page.takeScrenshot();
    });

    test('My example test', async () => {
        return await page.waitFor('.example-selector');
    });
});

I have found that there is onTestFailure option when setting up a test-runner, is it possible to leverage that?

A: Yes, you can use the onTestFailure option when setting up Jest to trigger a hook after any failed test. This option accepts a callback function that will be called with the test result object as an argument, which contains information about the failed test, such as its title and error message.
Here is an example of how you can use the onTestFailure option to take a screenshot of the page after a test failure:
const jestPuppeteer = require('jest-puppeteer');

jest.setTimeout(30000);

process.on('unhandledRejection', (reason, p) => {
  console.error('Unhandled Rejection at: Promise', p, 'reason:', reason);
});

const config = {
  launch: {
    headless: true,
    slowMo: 100,
    args: ['--no-sandbox']
  },
  server: {
    command: 'node server.js',
    port: 4444,
    launchTimeout: 10000,
    debug: true
  },
  onTestFailure: async (testResult) => {
    await page.screenshot({path: `./screenshots/${testResult.testFilePath}-${testResult.fullName}.png`});
  },
};

module.exports = jestPuppeteer.configure(config);
This will call the onTestFailure function after any failed test with the test result object and you could use the testFilePath and fullName to create the file name to save the screenshot.
Note that, for the above example to work, you need to have page object available in the scope of onTestFailure function, if you are using Jest-puppeteer you have that variable available.
You could also consider using afterEach to close the browser after each test and add a conditional to check if the test failed, and take the screenshot in that case.
describe('My tests', () => {
  let page;
  beforeAll(async () => {
    page = await browser.newPage();
    await page.goto('http://example.com');
  });

  afterEach(async () => {
    if (test.hasFailed()) {
      await page.screenshot({path: `./screenshots/${testResult.testFilePath}-${testResult.fullName}.png`});
    }
    await page.close();
  });

  test('My example test', async () => {
    return await page.waitFor('.example-selector');
  });
});

this should help.


Photo courtesy of British Virgin Islands Tourism Board.
The British Virgin Islands Port Authority (BVIPA) has secured a $35 million loan to help fund a $52 million expansion of the Tortola cruise ship pier, according to local press reports. BVIP officials signed an agreement last week with First Caribbean International Bank, according to the Virgin Islands Daily News website.
Construction on the new pier is scheduled to begin in August. The expansion will include the extension, strengthening and widening of the existing Tortola pier, and incorporate the development of a boardwalk, the enhancement of the excursion dock facility, in addition to dredging and land reclamation.
The re-developed pier will also feature a five-acre land-side development with commercial, retail, entertainment and green spaces, according to BVIPA. Work on the expansion began in May, with the creation of a new staging area for taxis and some demolition work, according to Claude Skelton-Cline, BVIP's managing director.
Earlier this year BVIP announced cruise passenger traffic agreements with Disney Cruise Line and Norwegian Cruise Line that will bring an additional 425,000 annual visitors to the territory by 2015. The British Virgin Islands hosted 340,000 cruise ship passengers in 2013, down from 571,000 in 2008, a decline officials say is due to an inability to accommodate larger cruise ships.
The project will create "a unique and modern cruise pier facility that delivers a memorable, world-class and environmentally compatible sustainable development," according to a BVIP statement.


Our beloved teether blankie combines the sensory qualities of hard and soft. Young graspers enjoy holding the wooden ring and smooshing the soft gauze blankie in their hands. When baby begins teething, the wooden ring provides a soothing, hard-but-not-too-hard, natural surface for biting. As your child grows, the small square unties from the wooden ring to become a cloth napkin or favorite little lovie.
+ Untie gauze square from maple ring and machine wash fabric on cold, delicate cycle. Tumble dry low. Wipe wooden ring with soap and damp cloth.
+ Wooden ring made in U.S.


Canadian government has decided to send troops to Ukraine in a non-combat role, CTV News reported, citing official sources. The troops could arrive in the country in the coming weeks or months, but the details of the mission are still being worked out.
The Canadian soldiers are likely to be sent for a training mission and could cooperate with American soldiers, the report said.
"While the government is still working out the details, sources told CTV News a training mission is one of the options on the table. Canada is likely to work closely with American allies who are already in the region," CTV News reporter Mercedes Stephenson said.
The Conservative government has been leaning towards a more significant Canadian involvement in the Ukrainian crisis for the past few months.
In February, Canada updated the list of its sanctions against Russia with travel bans slapped on 37 Russian and Ukrainian individuals. It also applied economic sanctions against 17 Russian and Ukrainian companies, which included Russian oil giant Rosneft.
In December, Canada signed an agreement to send its military police to Ukraine to "look into the possibilities of cooperation," while it also looked to help the government in Kiev with security issues.
Meanwhile, Canada's Toronto Symphony Orchestra (TSO) barred a Ukrainian-born pianist from playing in a scheduled program for expressing views on the situation in Ukraine via Twitter.
The orchestra dropped pianist Valentina Lisitsa who was due to play a concerto by Rachmaninoff. The hashtag #LetValentinaPlay surged in popularity on social media, and thousands of supporters spoke out for the artist, who was offered to be paid not to play.