text:
Town of Hopkinton, Rhode Island, USA
Minutes-and-Agendas
Town Ordinance and Charter
Building and Zoning
GIS-IT
On-Line GIS
Property Valuation Database
Online Water Payments
Hopkinton Outdoors
View & Pay Taxes
CDBG Public Hearing November 1, 2017
PUBLIC HEARING NOTICE
PY 17 Community Development Block Grant (CDBG) Program
The Towns of East Greenwich, West Greenwich, Exeter, Hopkinton, North Kingstown, Charlestown, Richmond, Narragansett and South Kingstown (the "Towns") will conduct a regional Public Hearing on their intent to file applications (individually) with the State of Rhode Island, Commerce Secretary, Office of Housing and Community Development (OHCD) for CDBG funds in the Program Year (PY) '17 Program. This Hearing is being held in conformance with U. S. Department of Housing and Urban Development (HUD) and OHCD regulations requiring that local residents be informed of such intent to apply and be given the opportunity to ask and have questions answered. The Hearing will include the presentation of local community development and housing needs and include discussion of past activity under the CDBG program. As it is the intent of the Towns to apply for funds for residential/housing rehabilitation under the State Set Aside fund (funds held at the state level and requested on a house by house basis), the Hearing will also include a description of how the local residential rehabilitation programs are operated. There are two other Set Aside funds available; one for Affordable Housing Creation or Preservation and one for Economic Development (including job training). These two funds will also be discussed and the public is advised that the Towns may entertain applications for these funds as well. Finally, a discussion will be held concerning the State of Rhode Island Action Plan for the CDBG Program in general.
The Public Hearing will be held on Wednesday, 1 November, 2017 at 4:00 P. M. in the Council Chambers at the Richmond Town Hall, 5 Richmond Townhouse Road (intersection of routes 138 and 112), Richmond, RI. Individuals requiring interpreter assistance should contact the Town Clerk at (401) 539-9000 ext 9, at least three business days prior to the Hearing.
Geoffrey A. Marchant
Community Development Consortium Director
Copyright © 2020 Town of Hopkinton, Rhode Island USA. All rights reserved.
Hopkinton Town Hall • 1 Town House Road • Hopkinton, RI 02833
Phone (401) 377-7777 • Fax (401) 377-7788


Create your own adventures with this collectible Pokemon plush! Each 8-inch push is tough enough for battle and soft enough for bedtime! Easy to take wherever you go! Officially licensed. Makes a great gift to any Pokemon fan! Got to Catch 'Em All!


Every business starts with an awesome product or service, something unique that no one else is offering. But you need to get the word out there. Without a steady stream of customers and ways to ensure your business continues to grow, you are in a tough position. Check out these few simple methods of getting your business noticed.
More and more consumers are turning to the world of social media when they are looking for goods and services. It's not enough to just harp on about how great your business is – you need to think of ways to actively encourage people to follow your accounts. Sure, it's important to let people know what you are offering, but you should also mix this information in with interesting links and news items directly related to your industry sector. If you are linking this information with your own blog posts, all the better. Just think about it this way: nobody wants to be friends with the person who is constantly talking about themselves.
And, also set up an Instagram account. While many businesses stick exclusively to Facebook and Twitter, Instagram is becoming bigger than ever and could be a great way of tapping into a market that is being neglected.
It's important for SEO that your website has links back to it from various sources around the web, but these should be obtained on a free basis. Paid links are a link, and search engines are starting to wise up about them and punishing websites with lower rankings. If you have some partner organisations, try to get them to post your links up or alternatively, have a go at some guest blogging on the sites of a few trusted sources.
Branding is hugely important in any modern business. Your logo and colour scheme are what people will start to associate with your, and it gives you much more of a professional look if you have a strong brand. Get some branded business cards made up, clearly displaying your contact information. Take a look at Hoxton Mix if you are looking for a virtual office in London to give your business an edge. Make sure you have ample material with your brand on it including your website, stationery and anything clients are likely to get their hands on.
Whether this is by hiring a PR professional or learning some tricks of the trade yourself, PR has been proven to reach audiences that direct advertising and marketing cannot. PR works by getting third party publications on board to promote your business, creating a sense of trust amongst consumers. If a perceived objective third party is talking about how fantastic your business is, people are much more likely to sit up and take notice. If your business is big enough, it may be worth outsourcing your PR needs to an agency that can do all the legwork for you.
Previous Post: Business: Why Flying Solo Is Awesome!


Meet new customers swiftly with a rewarding campaign in US Virgin Islands!
Our team, from it's debuts until now, grew into a specialist in matchmaking. Marketers who would like to find the peerless digital agency for their assignment in video marketing will now manage to do so, thanks to a superior, effective and costless service.
Both in your locality and somewhere else will our team manage to help you find the most skilled movie production company. Because our team knows a myriad of agencies worldwide. our team is thus the fitting practice to set up a fruitful communication operation somewhere else as well as in US Virgin Islands.
What kind of activities can a movie production company develop?
movie production companies have loads of distinct competences, for instance, they are highly skilled in corporate video production and videomarketing optimalisation. Calling a movie production company for your next activity in US Virgin Islands will enable your company construct an efficient and lucid video marketing strategy for your firm.
To be lucrative in, for example, an assignment in corporate video production or in commercial production, is working together with a expert bureau in video marketing of paramount importance. And your firm probably realizes that there is a flood of expert agencies like that in the world. So keep everything simple and reach out to us.
We also can spell out a perk with the famous proverb: time is money! Why waste time on an project that your company does not comprehend. Keep concentrated on your main business and don't jeopardize your business with the construction of an activity that your enterprise doesn't fully grasp.
Obviously, identifying the most adapted movie production company is demanding. Our software is for you thus a solid chance to encounter the finest agency in US Virgin Islands. Call our team and we will do each thing in our power to identify the ideal bureau expert in video marketing for your firm.


text:
Cinema Listings
Gallagher's daughter doesn't look back in anger
Updated / Sunday, 16 Jun 2019 12:47
Moorish: "I don't have any anger. I'm 21 now. I'm actually thankful for how I was brought up with my mum and how my life's been".
Liam Gallagher's daughter Molly Moorish has said there is no bad blood between the pair after meeting for the first time last year.
The 21-year-old said she feels no anger towards the former Oasis singer and that it "all happened the way it was meant to happen".
Moorish, who has worked as a model, was raised by her mother Lisa Moorish, who fronted the indie band Kill City in the mid 2000s.
Speaking to The Sunday Times Magazine, she said: "I don't have any anger. I'm 21 now. I'm actually thankful for how I was brought up with my mum and how my life's been.
"I wouldn't be who I am now if.... It's all happened the way it was meant to happen. We just got on and I'm happy to have him now."
Gallagher said he regretted not meeting her sooner but added that "you can't live in the past".
The 46-year-old rocker said he looked forward to giving her "some super love".
Recalling their first meeting, he said: "Me and Molly met in a pub across the road. Then we came here, got really drunk and that was really good."
Asked if he had felt nervous, he replied: "Yeah, man, there were tears and all that....
"It's a shame it didn't happen earlier, but you can't live in the past - you just have to draw the line and get stuck in with some super love going forward."
Gallagher recently penned a song for his daughter titled Now That I've Found You, which will appear on his forthcoming second solo album, Why Me? Why Not, which is due for release in September.
Asked if he planned to meet his fourth child, Gemma, six, who he shares with journalist Liza Ghorbani, Gallagher, who also has two sons, 19-year-old Lennon and 17-year-old Gene, said: "Yeah - I mean, I guess so. It'll just have to happen naturally."
The 46-year-old rocker also admitted that while he is still not on speaking terms with his brother and former band mate Noel, he does miss him.
"Even if I hate him, I miss him at the same time. I miss what we had," he said.
For more music news, click here
molly moorish

redpajama_set_name: RedPajamaCommonCrawl


Ewa-Marine C-Z100 SLR cape Cameras Underwater Ltd.
The camera is fixed directly into the front port by means of the ewa-marine CA77 adapter. Due to this adapter system the cape will always remain properly positioned in front of the lens. There is also a view finder window made from a special, clear material to allow a good pre-view while protecting the camera boddy against rain dust and dirt. This view finder section is fixed to the camera via a set of elastic strings. Due to these two systems the cape will always remain properly positioned over the lens and the viewfinder.


text:
Home > California > Monterey County
Carmel River Elementary School
Monte Verde St. And 15th Ave.
(School attendance zone shown in map)
www.carmelunified.org
Carmel River Elementary School serves 457 students in grades Kindergarten-5.
The percentage of students achieving proficiency in math is 76% (which is higher than the California state average of 39%) for the 2017-18 school year. The percentage of students achieving proficiency in reading/language arts is 79% (which is higher than the California state average of 50%) for the 2017-18 school year.
Carmel River Elementary School placed in the top 10% of all schools in California for overall test scores (math proficiency is top 5%, and reading proficiency is top 10%) for the 2017-18 school year.
The student:teacher ratio of 20:1 is lower than the California state level of 23:1.
Minority enrollment is 33% of the student body (majority Hispanic and Asian), which is lower than the California state average of 77% (majority Hispanic).
Carmel River Elementary School places among the top 20% of public schools in California for:
Overall Rank Highest overall rank (Top 10%)
Math Proficiency Highest math proficiency (Top 5%)
Reading/Language Arts Proficiency Highest reading/language arts proficiency (Top 10%)
Carmel River Elementary School's student population of 457 students has stayed relatively flat over five school years.
The teacher population of 23 teachers has stayed relatively flat over five school years.
Grades Offered Grades Kindergarten-5
Total Students 457 students
Carmel River Elementary School is ranked within the top 10% of all 9,602 schools in California (based off of combined math and reading proficiency testing data) for the 2017-18 school year.
The diversity score of Carmel River Elementary School is 0.52, which is less than the diversity score at state average of 0.64. The school's diversity has stayed relatively flat over five school years.
Definition of Terms 2017-2018 School Year Data This School State Level (CA)
Overall Testing Rank #508 out of 9602 schools
Student : Teacher Ratio 20:1 23:1
School District Name Carmel Unified School District
Source: 2017-2018 (latest school year available) NCES, CA Dept. of Education
The nearest high school to Carmel River Elementary School is Carmel High School (1.2 miles away)
The nearest middle school and elementary school is Carmel Middle School (1.6 miles away)
Carmel Carmel High School
3600 Ocean Ave.
(831) 624-1821 1.2 9-12 867
Carmel Carmel Middle School
4380 Carmel Valley Rd.
(831) 624-2785 1.6 6-8 589
Monterey Monte Vista
251 Soledad Dr.
(831) 392-3890 3.3 K-5 372
Monterey Walter Colton
100 Toda Vista Dr.
Monterey La Mesa Elementary School
1 La Mesa Way
See more public schools near to Carmel River Elementary School
Review Carmel River Elementary School. Reviews should be a few sentences in length. Please include any comments on:
Grades: Kindergarten-5
Students: 457 students
Student:Teacher Ratio: 20:1
Minority Enrollment: 33%
Overall Testing Rank: Top 10% in CA
Math Proficiency: 76% (Top 5%)
Reading Proficiency: 79% (Top 10%)
Diversity Score: 0.52 (Top 50%)
Bulldozer operator dies in Monterey County fire; 34 homes destroyed
posted on July 25, 2016 at 05:12:00 am
Strike teams from the Bay Area are in Monterey County to control the fast-moving wildfire ... Hundreds of residents packed ...
How many miles is it from California to Nevada? Fifth-graders at Carmel River Elementary School, in Carmel, California, ...
Top Ranked Public Schools in the US
A Relevant History of Public Education in the United States
Pros and Cons of Sports Competition at the High School Level
Public School vs. Private School
School by Type (CA):
Blue Ribbon (395) Magnet (516) Charter (1,267) Special Education (156) Vocational (69) Alternative (1,075) School districts (1,098)
Private schools in California Boarding schools in California
California Dept. of Education website


text:
package tkt.atlas.helloworld.webclient;

import io.dropwizard.testing.junit.DropwizardClientRule;
import org.junit.Assert;
import org.junit.Before;
import org.junit.ClassRule;
import org.junit.Test;
import tkt.atlas.helloworld.api.HelloWorldService;
import tkt.atlas.helloworld.api.domain.Person;
import tkt.atlas.helloworld.webclient.helper.HelloWorldTestHelper;
import tkt.atlas.helloworld.webservice.jaxrs.HelloWorldResource;

import java.io.IOException;
import java.util.Date;
import java.util.List;

import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotNull;
import static org.mockito.Matchers.any;
import static org.mockito.Matchers.anyString;
import static org.mockito.Mockito.*;

public class RemoteClientTest {

    private static HelloWorldService service = mock(HelloWorldService.class);

    private HelloWorldRemoteClient client;

    @ClassRule
    public static final DropwizardClientRule dropwizard = new DropwizardClientRule(
            new HelloWorldResource(service));

    @Before
    public void setup() {

        final String url = dropwizard.baseUri().toString() + "/";

        this.client = new HelloWorldRemoteClient(url);

    }

    @Test
    public void testCreatePerson() throws IOException {

        final String expectedId = "12345";

        when(service.createPerson(any(Person.class))).thenReturn(expectedId);

        final String actualId = client.createPerson(new Person("Mr Noddy"));

        assertEquals(expectedId, actualId);

    }

    @Test
    public void testReadPerson() throws IOException {

        final String expectedId = "12345";

        when(service.readPerson(any(String.class))).thenReturn(new Person("Mr Noddy") {{
            setId(expectedId);
            setUpdatedAt(new Date());
            setUpdatedBy("Tester");
        }});

        final Person actualPerson = client.readPerson(expectedId);

        Assert.assertNotNull(actualPerson);
        Assert.assertEquals(expectedId, actualPerson.getId());
        Assert.assertEquals("Mr Noddy", actualPerson.getName());

    }

    @Test
    public void testUpdatePerson() throws IOException {

        final String id = "12345";

        final Person roundtrip = new Person("Mr Noddy") {{
            setId(id);
            setUpdatedAt(new Date());
            setUpdatedBy("Tester");
        }};

        when(service.updatePerson(any(Person.class))).thenReturn(roundtrip);

        final Person actualPerson = client.updatePerson(roundtrip);

        Assert.assertNotNull(actualPerson);
        Assert.assertEquals(id, actualPerson.getId());
        Assert.assertEquals("Mr Noddy", actualPerson.getName());

    }

    @Test
    public void testDeletePerson() throws IOException {

        final String id = "12345";

        doNothing().when(service).deletePerson(anyString());

        client.deletePerson(id);

    }

    @Test
    public void testListPersons() throws IOException {

        final List<Person> expected = new HelloWorldTestHelper().getTestPersons();

        when(service.listPersons()).thenReturn(expected);

        final List<Person> actual = client.listPersons();

        assertNotNull(actual);
        assertEquals(2, actual.size());
        assertEquals(expected.get(0).getName(), actual.get(0).getName());
        assertEquals(expected.get(0).getId(), actual.get(0).getId());

    }

}

redpajama_set_name: RedPajamaGithub


text:
General outline and financial impact
Chapter 1 - Excise on alcoholic beverages
Excise Laws Amendment Bill (No. 1) 2002
Excise Laws Amendment Act (No. 1) 2002
Excise Tariff Amendment Bill (No. 2) 2002
Excise Tariff Amendment Act (No. 2) 2002
Explanatory Memorandum
(Circulated by authority of the Treasurer, the Hon Peter Costello, MP)
Excise on alcoholic beverages
These bills amend the excise legislation to deal with the case where manufacturers take advantage of the tolerance allowed in food labelling by lowering the alcohol content of a product while labelling the product at a higher alcohol strength. The amendments reduce the competitive advantage gained by manufacturers adopting this practice.
The Excise Laws Amendment Bill (No. 1) 2002 amends the Excise Act 1901 (Excise Act) to enable excise to be charged on the higher of the labelled alcohol content or the actual alcohol content of alcoholic beverages, and to allow the CEO (Commissioner of Taxation) to determine rules for working out the percentage by volume of alcohol in the beverage. This bill inserts a definition of alcoholic beverages and provides for certain unlabelled alcoholic beverages to be treated as labelled.
Consequential amendments will be made to the Distillation Act 1901 and the Spirits Act 1906 and, in Excise Tariff Amendment Bill (No. 2) 2002, to the Excise Tariff Act 1921 . The amendments add references in these Acts to the new provisions in the Excise Actand repeal a redundant provision in the Distillation Act 1901 .
Date of effect: The proposed alterations contained in these bills will take effect from 7.30pm on 14 May 2002, by legal time in the Australian Capital Territory (Budget night).
Proposal announced: The proposal was announced by the Minister for Revenue and Assistant Treasurer on 14 May 2002 via Media Release.
Financial impact: The expected net revenue gain from the imposition of excise on the higher of labelled or actual alcoholic strength is $4.3 million in 2002-2003, $4.6 million in 2003-2004, $4.9 million in 2004-2005, and $5.1 million in 2005-2006.
Compliance cost impact: Where products are labelled at a higher than actual alcoholic strength the manufacturer will be required to label the product to reflect the actual alcoholic strength or pay excise duty on the labelled alcoholic strength. Additional compliance cost will occur only where a manufacturer chooses to relabel a product to reflect the actual alcohol content of the product.


text:
Q: How to register type in the IoC container from an "Area" in ASP.NET MVC 5 app? I am trying to setup dependency injection in my ASP.NET MVC 5 app using Unity.Mvc. I followed this tutorial which explains that the class UnityConfig has a method called RegisterTypes which allows me to register my type into the container.
However, I am using Area in my project. some of my Areas need to be able to also register types into the container. These types in my area will only be used by my area but still need to be registered.
How can I register-types into my IoC container directly from my area?

A: You can create a separate class that inherits from UnityContainerExtension and place it in your area, like this:
public class MyAreaContainerExtension : UnityContainerExtension
{
    protected override void Initialize()
    {
        Container.RegisterType<IDoesSomething, DoesSomething>();
    }
}

Then in your startup,
container.AddNewExtension<MyAreaContainerExtension>();

Or if your extension has constructor parameters you pass to it, like configuration data it needs or instances it should use, you can create an instance of the extension and then do
container.AddExtension(theExtensionInstanceICreated);

It's a nice practice because it allows you to keep component registration closer to the classes being registered instead of having one gigantic file with dozens or even a hundred or more registrations.
Another benefit of this approach is that as component registrations become complicated you can write unit tests for these extensions that add the extension to a container and then resolve objects from the container.
You could have other components which must be registered in order for the types registered in this extension to work, but you don't want to duplicate the registrations in your extension. In that case you could make it explicit by specifying what types must already be registered, something like this:
public class MyAreaContainerExtension : UnityContainerExtension
{
    protected override void Initialize()
    {
        AssertRequiredRegistrations();
        Container.RegisterType<IDoesSomething, DoesSomething>();
    }

    private void AssertRequiredRegistrations()
    {
        AssertRequiredRegistration(typeof(ISomeOtherType));
    }

    private void AssertRequiredRegistration(Type type)
    {
        if(!Container.IsRegistered(type))
            throw new Exception($"Type {type.FullName} must be registered with the container.");
    }
}

redpajama_set_name: RedPajamaStackExchange


I had to leave at 4:00 am in the morning in order to make it to Taj Yeshwantpur in time to drop off my luggage. Luckily Mogit was with me and taking care of some of the logistics became easier with the extra pair of hands. The race organisers fitted our bikes with the bib number.
The luggage van that left at 5:30. I received my stuff at Mysore once I had checked into the hotel. Also visible are cyclists doing last minute check-ups and race organisers fastening bibs to the cycle. My bib number is 80.
The tour organisers had also arranged for breakfast at Taj, Yeshwantpur.
Taj provided us with an array of South Indian dishes, scrambled eggs, and assorted breads for breakfast.
The flag-off happened at 6:30 am. Some of the more accomplished riders just zoomed past me. These were the guys who have been a part of the racing circuits in India and abroad. People like me are mere mortals!
Right off the bat I realised that my cyclocomputer wasn't showing any readings. After about 6 km, I stopped only to realise that I had fitted my front wheel the other way (and hence the sensor was far from the magnet). This is usually not a problem unless the tyre specifically mentions a direction of rotation. My tyres have those markings.
I was the king of punctures again! Well, this time I helped out a few of the guys with their punctures. En route, I found a lot of them stranded on the sides with some nasty puncture. One guy, Siddharth Chopra, had a really bad day and ended up with three flats. He took his wheels to a shop here in Mysore and got his rim tape and tyres changed.
The support system of TfN is too good. There are motorbikes and cars constantly patrolling the roads. In fact, there was a time when I ran out of water. These guys quickly arranged some for me. These guys were also the ones who helped out the riders stranded beside the road due to a mechanical or just a flat.
We are supposed to mark our attendance at each of the four support stations on each day of the ride. This is where one can fuel themselves up with some dry fruits, electrolytes, biscuits or plain old bananas.
This is a support station. There were four such stations en route where we could fill our bottles and our stomach.
Arrangement was made to provide us with some simple South Indian style lunch at Malavalli police station. I cautiously did not eat too much. Meanwhile, Lord Venky announced that he was going to have mutton at some Military Hotel near the end of Bannur. He asked others if they wanted to join. He does this every year and calls the team Biriyani Express.
The lunch. The guy with his helmet on is Lord Venky.
There are few things that can drain you out.
Unluckily, I had all four. The last 25 kms were excruciating. The effect of the sunscreen had worn off. Not to mention the last 10 kms of cycling through the roads and by lanes of Mysore to reach our hotel room were draining the last bits of energy in me.
I was also carrying my camera. It was a liability. I did not realise this until these last 25 kms. The idea is to keep oneself as light as possible and rely on the support stations and the patrol for all supplies.
This is the only photograph of a scenery I could take. These are the Ramnagaram hills (famous for being featured on Sholay).
Yesterday, during the briefing, Sridhar mentioned that this tour is about meditation – you, the road and your bike. Everything else is a distraction. I realised how true that is. I am going to pack my camera inside my luggage and only click photographs with my phone. It's not like I have been capturing masterpieces anyway.


There is a happy ending to the story of the former Arjowiggins mill in Wizernes in France, which was mothballed in 2015. The mill - now operating under the name of Wizpaper - will soon restart operations.
The company told EUWID it planned to start production of recycled corrugated case material in the coming weeks. The capacity of the machine is reportedly around 180,000 tpy.
The PM formerly produced woodfree coated paper and had a capacity of 140,000 tpy. In September 2018, entrepreneur Henri Bréban acquired the mill, which is located near Saint-Omer in northern France, from Sequana with the intention of rebuilding it to make corrugated case material. Bréban already owns the two printing and packaging firms Express Packaging and Express Découpe, which are not far away from the Wizpaper site.
Find the full article the Wizpaper mill in EUWID Pulp and Paper issue no 13/2019, which will be available to our e-paper and print subscribers as of 27 March.


Meet Aaron and Santana Block. For those that don't know them, both currently serve with the Westmoreland Volunteer Fire Department. Our happy couple is expecting this September, and thanks to fire fighter magic had a memorable baby reveal.
We were both working there and everyone told him he needed to meet the other red headed emt, we finally met and have been together since! We got married September 2nd of 2017. The baby is due September 5th!
Aaron served for the Oriskany Fire Department from 2009-2016 then joined Westmoreland. He's currently a lieutenant. Santana has been with Westmoreland for 6 years. Currently Santana is 18 weeks, and right around the time you are able to find out the babies gender. For the firefighter couple, with some magic from the fire department, they were able to use fire hoses to find out if the baby would be a boy or girl.
We wanted to do something that makes sense for us both! Obviously we have both been in the fire/ems service before we even met so it just made sense!"
My husband was right! He knew it was a girl and I thought boy, but we are so thrilled!"


The increased GHG emissions and rising environmental concerns globally have driven countries to rethink the use of fossil fuels in transportation. The only feasible replacement for fossil fuel-powered vehicles is EVs, which include BEVs, HEVs, and PHEVs. Many countries are setting up mandates to moderate the transition of the automotive industry from diesel and petrol vehicles to EVs. Globally, governments have introduced several incentives for vehicle owners to increase the adoption of EVs. The key market vendors are increasing their efforts to produce more prismatic lithium-ion batteries, catering to the growing demand from the automotive industry. The increased sales of EVs, would drive the sales of prismatic lithium-ion batteries, thereby contributing to the growth of the market. Technavio's analysts have predicted that the electric vehicle (EV) battery market will register a CAGR of close to 23% by 2023.
The automotive industry is witnessing significant R&D activities in various domains, including next-generation batteries for EVs and public charging infrastructure, to drive EV adoption. Next-generation batteries include solid-state batteries, which are considered safer than lithium-ion batteries, with low battery leakage risks and high charging rates. These batteries have a high capacity, which increases the mileage per charge in EVs.
The shift in the use of lithium batteries from portable electronic devices to automotive vehicles is driven by the growing need to incorporate high-capacity batteries and stationary storage in EVs and industrial equipment. Lithium-ion batteries have become the most preferred battery systems in these vehicles because of improvements in cost, energy and power density, battery lifecycle, and performance.
For the detailed list of factors that will drive and challenge the growth of the electric vehicle (EV) battery market during the 2019-2023, view our report.


text:
Florida's Covid-19 cases surge for fifth day as Trump pledges outbreak coming under control
SPH Brightcove Video
The Sunshine State has recorded over 10,000 new Covid-19 cases for five straight days, and nationwide every metric including hospitalisation rates and deaths are rising.
The virus has claimed over 140,000 US lives in total since the pandemic started. PHOTO: AFP
https://str.sg/JeTc
WASHINGTON (REUTERS) - Florida reported over 12,000 new cases of Covid-19 on Sunday (July 19), the fifth day in a row the state has announced over 10,000 new infections, even as US President Donald Trump pledged that the virus was coming under control.
The virus has claimed over 140,000 US lives total since the pandemic started, and Florida, California, Texas and other southern and western states shatter records every day.
Despite record levels of new cases nationwide, the Trump administration is pushing for school to reopen in a few weeks and resisting a federal mandate to wear masks in public.
Trump defended his handling of the coronavirus pandemic in an interview broadcast on Sunday, including his statement that there were only embers of the virus popping up around the country.
"We have embers and we do have flames. Florida became more flame-like, but it's - it's going to be under control." Trump on "Fox News Sunday" repeated his assertion that the virus will eventually disappear.
"I'll be right eventually," he said. "It's going to disappear and I'll be right."
Experts at the Centers for Disease Control and Prevention (CDC) have warned cases and deaths could rise this autumn and winter.
Nearly all 20 forecasting models used by the CDC project rising deaths in the coming weeks.
Throughout the United States, every metric to measure the outbreak is going in the wrong direction - rising cases, deaths, hospitalisations and positivity rates of test results.
At least 14 states have reported record coronavirus hospitalizations so far in July, including Alabama, Arizona, Georgia, Florida, North Carolina, Nevada and Texas.
Trump said he did not agree with CDC Director Robert Redfield that this fall and winter will be one of the most difficult times in American public health, as hospitals deal with the seasonal flu on top of Covid cases. "I don't know and I don't think he knows," Trump said.
Trump also called Dr Anthony Fauci, the government's top infectious diseases expert, "a little bit of an alarmist."
Dr Fauci has warned that cases could soon top 100,000 a day if Americans do not come together to take steps necessary to halt the spread of the virus.
The country is averaging 60,000 new cases a day and reported a record one-day increase of 77,299 on Thursday.
What you need to know about S'pore's new Covid-19 vaccination strategy
Asia stepping up fight against more infectious Covid-19 variants
Hong Kong cements Covid-19 tests with centres just a 15-minute walk
Covid-19 wave looms in Europe amid vaccine fatigue and false sense of security
Long Covid remains a mystery, though theories are emerging
askST: What is excess death and what is Covid-19's true toll on the world?
Biden says pandemic is over; survivors and doctors disagree
No plans to include Covid-19 vaccinations in childhood immunisation schedule: Ong Ye Kung
Human development set back 5 years by Covid-19, other crises: UN report
Covid-19's harmful effects on the brain reverberate years later: Study


text:
import asyncio
import json
import websockets
import dateutil.parser
from datetime import datetime
from datetime import timedelta
import random

import discord
from discord.ext import commands

import utils
import checks

import traceback

from Weeabot import Weeabot

def twitch_formatter(field):
    return {
        'name': 'Twitch',
        'content': f'[{field["name"]}](https://www.twitch.tv/{field["name"]})'
    }

class Twitch(utils.SessionCog):
    """Check Twitch stream status for users who have linked their accounts.

    If a channel exists with the name 'twitch-streams', automatic updates will be posted there when a user goes live."""

    formatters = {'twitch_inline': twitch_formatter}

    def __init__(self, bot: Weeabot):
        super(Twitch, self).__init__(bot)
        self._ws = None
        self.reconnect = False
        self.next_connect = datetime.now()
        self.connecting = asyncio.Lock()
        self.listeners = []
        self.tasks = []
        self.updateloop()
        self.services = {
            "Twitch": f"""Create a channel named 'twitch-streams' to get notifications when server members go live.
            Members must use the {bot.command_prefix}addtwitch command to get notifications about their streams."""
        }

    @property
    def channels(self):
        return [
            c for c in
            [
                s.get_channel(
                    self.bot.server_configs[s.id].get('twitch_channel')
                )
                for s in self.bot.servers
            ]
            if c is not None
        ]

    def __unload(self):
        self.stoploop()

    def startloop(self):
        if len(self.tasks) == 0:
            self.tasks.append(self.bot.loop.create_task(self.dispatcher()))
            self.tasks.append(self.bot.loop.create_task(self.heartbeat()))
            self.tasks.append(self.bot.loop.create_task(self.getstreams()))

    def stoploop(self):
        for t in self.tasks:
            t.cancel()
        self.tasks = []
        self.reconnect = True

    def updateloop(self):
        if len(self.channels):
            self.startloop()
        else:
            self.stoploop()

    async def on_channel_delete(self, channel):
        self.updateloop()

    async def on_channel_create(self, channel):
        self.updateloop()

    async def on_channel_update(self, before, after):
        self.updateloop()

    @commands.command(pass_context=True)
    @checks.profiles()
    async def addtwitch(self, ctx, twitch_username: str):
        """Add your twitch name to your profile.

        Automatic updates when you go live will be posted in the twitch stream channel'.
        If the channel doesn't exist, this feature is disabled."""
        headers = {"accept": "application:vnd.twitchtv.v5+json", "Client-ID": utils.tokens['twitch_id']}
        url = 'https://api.twitch.tv/kraken/search/channels'
        params = {'query': twitch_username}
        async with self.session.get(url=url, headers=headers, params=params) as r:
            chan = (await r.json())['channels'][0]
            if await self.bot.confirm(f"Closest account found: <{chan['url']}>\nIs this correct?"):
                await self.bot.profiles.put_by_id(ctx.message.author.id, 'twitch', {
                    'name': twitch_username.lower(),
                    'id': chan['_id']
                })
                await self.send_listen()
                await self.bot.affirmative()

    @commands.command(pass_context=True)
    @checks.is_server_owner()
    async def twitch_channel(self, ctx):
        """Set the channel twitch streams will be posted to.

        All users in this server who have set their twitch account with the bot
        will have links posted here when they go live."""
        channel = ctx.message.channel
        if channel.server.id not in self.bot.server_configs:
            self.bot.server_configs[channel.server.id] = {}
        self.bot.server_configs[channel.server.id]['twitch_channel'] = channel.id
        await self.bot.affirmative()
        self.bot.dump_server_configs()

    def t_users(self):
        return {
            p['twitch']['name'].lower(): {'did': u, 'tid': p['twitch']['id']}
            for u, p in self.bot.profiles.all().items()
            if 'twitch' in p
        }

    async def update_stream(self, messages, did, tid):
        headers = {"accept": "application:vnd.twitchtv.v5+json", "Client-ID": utils.tokens['twitch_id']}

        try:
            # get stream data. retry a few times if the api is delayed
            url = f'https://api.twitch.tv/kraken/streams/{tid}'
            stream = None
            for i in range(15):
                async with self.session.get(url=url, headers=headers) as r:
                    stream = (await r.json())['stream']
                if stream:
                    break
                else:
                    print('couldnt get stream, retying soon...')
                    await asyncio.sleep(20)
            if stream is None:
                for m in messages:
                    mem = m.server.get_member(did)
                    await self.bot.edit_message(m, embed=discord.Embed(
                                description='Waiting for Twitch API...'
                            ).set_author(
                                name=f"{mem.display_name} started streaming",
                                icon_url=mem.avatar_url or mem.default_avatar_url,
                                url=f'https://www.twitch.tv/{self.bot.profiles.get_by_id(did)["twitch"]["name"]}'
                            ))

            # get box art
            api = 'https://api.twitch.tv/kraken/search/games'
            params = {'query': stream["game"]}
            async with self.session.get(api, params=params, headers=headers) as r:
                box = (await r.json())['games'][0]['box']['large']

            # send messages to each twitch stream if the user is in that server
            for m in messages:
                mem = m.server.get_member(did)
                if mem is not None:
                    e = discord.Embed(
                        title=stream['channel']['status'],
                        url=stream['channel']['url'],
                        description=f'**Game** | {stream["game"]}',
                        timestamp=discord.utils.parse_time(
                            dateutil.parser.parse(stream['created_at']).isoformat())
                    ).set_image(
                        url=stream['preview']['medium'] + f'?rand={stream["_id"]}'
                    ).set_thumbnail(
                        url=box
                    ).set_author(
                        name=f"{mem.display_name} started streaming",
                        icon_url=stream['channel']['logo'] or mem.avatar_url or mem.default_avatar_url
                    )
                    try:
                        await self.bot.edit_message(m, embed=e)
                    except discord.HTTPException as ex:
                        print(ex.response)
        except:
            traceback.print_exc()

    async def send_listen(self, ws=None):
        if ws is None:
            ws = await self.get_ws()
        await ws.send(json.dumps({
            'type': 'LISTEN',
            'nonce': f'Weeabot{random.randrange(200,300)}',
            'data': {
                'topics': [f'video-playback.{tname.lower()}' for tname in self.t_users().keys()]
            }
        }))

        # wait for response and handle errors
        r = json.loads(await ws.recv())
        if r['error']:
            print(f'error subscribing: {r["error"]}')
            return r['error']

    async def connect(self):
        if datetime.now() < self.next_connect:
            sleep = (self.next_connect - datetime.now()).seconds
            print(sleep)
            await asyncio.sleep(sleep)
        self.next_connect = datetime.now() + timedelta(seconds=120)
        print('connecting to twitch...')
        ws = await websockets.connect('wss://pubsub-edge.twitch.tv')

        if await self.send_listen(ws):
            self.stoploop()
        return ws

    async def get_ws(self):
        if self.reconnect:
            print('attempting reconnect')
            await self._ws.close()
            self._ws = None
            self.reconnect = False
        await self.connecting.acquire()
        if self._ws is None:
            self._ws = await self.connect()
        self.connecting.release()
        return self._ws

    async def recv(self, *args, **kwargs):
        ws = await self.get_ws()
        return await ws.recv(*args, **kwargs)

    async def send(self, *args, **kwargs):
        ws = await self.get_ws()
        return await ws.send(*args, **kwargs)

    async def dispatcher(self):
        while not self.bot.is_closed:
            r = json.loads(await self.recv())
            self.dispatch(r)

    def dispatch(self, r):
        t = r['type']
        # print(f'Twitch event received: {r}')

        # special reconnect case
        if t == 'RECONNECT':
            self.reconnect = True
            return

        removed = []
        li = [l for l in self.listeners if t in l[1]]
        for l in li:
            removed.append(l)
            l[0].set_result(r)

        self.listeners = [l for l in self.listeners if l not in removed]

    async def heartbeat(self):
        while not self.bot.is_closed:
            # initiate heartbeat
            await self.send(json.dumps({"type": "PING"}))

            # wait for response or time out
            try:
                await self.wait_for_event("PONG", timeout=10)
            except asyncio.TimeoutError:
                print('PONG timeout')
                self.reconnect = True
            else:
                await asyncio.sleep(240)

    def wait_for_event(self, *events, timeout=None):
        f = self.bot.loop.create_future()
        self.listeners.append((f, events))

        return asyncio.wait_for(f, timeout, loop=self.bot.loop)

    async def getstreams(self):
        while not self.bot.is_closed:
            try:
                r = await self.wait_for_event("MESSAGE")
                name = r['data']['topic'].split('.')[1]
                message = json.loads(r['data']['message'])

                # check message type
                if message['type'] == 'stream-up':

                    # get user ids
                    us = self.t_users()
                    did = us[name]['did']
                    tid = us[name]['tid']

                    # send initial messages
                    messages = []
                    for c in self.channels:
                        mem = c.server.get_member(did)
                        if mem is not None:  # handle users leaving guilds
                            messages.append(await self.bot.send_message(c, embed=discord.Embed(
                                description='Waiting for Twitch API...'
                            ).set_author(
                                name=f"{mem.display_name} started streaming",
                                icon_url=mem.avatar_url or mem.default_avatar_url,
                                url=f'https://www.twitch.tv/{name}'
                            )))

                    self.bot.loop.create_task(self.update_stream(messages, did, tid))
            except:
                traceback.print_exc()

def setup(bot):
    bot.add_cog(Twitch(bot))


text:
Stelis alba är en orkidéart som beskrevs av Carl Sigismund Kunth. Stelis alba ingår i släktet Stelis och familjen orkidéer. Inga underarter finns listade i Catalogue of Life.

Källor

Orkidéer
alba

redpajama_set_name: RedPajamaWikipedia


text:
Tag Archives: Jonathan Watson
Jonathan Watson (c.1718—1803), of Rendlesham in Suffolk was one of the gentleman members of the Royal Society, rather than a scientist. I really know little about his background. In 1747 he married Elizabeth Bullock, of the large and prominent local Bullock family – her brother John was to become Sheriff of Essex, as her grandfather had been before him, and their eldest son, Jonathan Josiah Christopher Watson later inherited the Bullock family manor of Faulkbourn in Essex and took the name Bullock.
In 1763, he was elected Fellow the Royal Society, his citation reading:
Jonathan Watson Esqr of Rendlesham in the County of Suffolk being a gentleman very studious of natural philosoph[y] and desirous of being made a Fellow of the Royal Society, We whose names are underwritten do certify of our personal knowledge, that we think him a fit person to be admitted to that honour
In 1764, he appeared as a subscriber to the second, enlarged, edition of John Kirby's Suffolk Traveller, and it is presumably this link, together with the Suffolk connections, that induced him to support Joshua Kirby's candidacy for fellow in 1767. Sometime shortly thereafter, he moved with his family to Virginia, where he apparently had inherited an estate of a couple of thousand acres from his father. A prominent landowner, he appears in the Vestry Book of Petsworth Parish as Major Jonathan Watson, and is appointed church warden and Vestry man. He was also a Justice of the Peace in Gloucester County. He evidently visited England at least once during his American period as he is recorded in the Virginia Gazette of 22 August 1771 arriving from London after a voyage of 'nine weeks passage'.
The 1770s was a difficult time for prominent landowning loyalists and eventually he was forced to sell his holdings cheaply and return to England with his family, probably in 1775.
Another who got into difficulties at the same time was Rev. Samuel Henley, the professor of Moral Philosophy at the College of William and Mary. Henley had an eclectic background, being raised as a Dissenting Minister before veering to the Church of England just in time to be hired in England for the vacant professorship in 1770. To begin with his conservative outlook had the support of local worthies, but his eccentric theology and contentious nature finally lost him his job, apartments, books and papers in 1775. Henley was a great antiquarian, and Jonathan Watson managed to save a few prints of his; most of the rest were lost in a later fire at the college, although in the 1780s Thomas Jefferson wrote to Henley saying that he also had managed to save some papers.
Homeless and jobless, Henley sailed for England where he married Jonathan Watson's daughter Mary Elizabeth in 1776. He was appointed as an assistant master at Harrow school and later presented as rector of Rendlesham, although he seems to have lived mostly at Harrrow.
Watson himself lived the life of a country squire, becoming a Justice of the Peace in Suffolk, Deputy Lieutenant of the county, and a Major in the East Suffolk Militia before dying at the age of 84 in 1803.
This entry was posted in People and tagged Elizabeth Bullock, Faulkbourne, Gloucester County, Jonathan Watson, Rendlesham, Royal Society, Samuel Henley, Virginia on June 23, 2014 by dmelville2012.
Joshua Kirby, F.R.S.
Joshua Kirby was elected a Fellow of the Royal Society on 26 March 1767. His election card is now, as the Royal Society says on its web page, barely legible, but they do manage a transcription of his citation:
Joshua Kirby of Kew in the County of Surry [sic] Esq. Designer in Perspective to their Majesties, & Author of Brook Taylor's Method of Perspective made easy, &c & of other considerable Improvements in that Science, being very desirous of the honor of Election into the Royal Society; We whose names are underwritten, recommend him on our personal Knowledge, as a Gentleman likely to prove a useful Member
How useful a member he was is unclear, as he seems to have had little to do with the Society, although he did sponsor two Fellows, Andrew Joseph Planta, and John Lodge Cowley. Kirby himself was proposed by:
John Perceval (1711 – 1770), 2nd Earl of Egmont;
Rev. Gregory Sharpe (1713—1771);
Rev. Thomas Forster (? – 1785), Rector of Halesworth, Suffolk;
John Bevis;
John Smeaton (1724—1792), Engineer;
Sir Charles Frederick (1709—1785);
Thomas Anguish (1724—1785), barrister, originally from Beccles in Suffolk;
Jonathan Watson (c. 1718—1803), of Rendlesham, Suffolk;
Leonard Morse (?—1808);
Rev. Henry Stebbing (1716—1787), Chaplain in Ordinary to King George III.
This entry was posted in Kirby, London, People and tagged Beccles, Charles Frederick, Earl of Egmont, FRS, Gregory Sharpe, Halesworth, Henry Stebbing, John Bevis, John Smeaton, Jonathan Watson, Leonard Morse, Rendlesham, Royal Society, Thomas Anguish, Thomas Forster on March 30, 2014 by dmelville2012.


Christmas is the time to be merry, but it is also the time for giving gifts and decorating your home. Here is a list of few amazing Christmas DIY that will add a bit of spice and flavor to your and your family's Holiday Season.
For the sewing enthusiasts, this DIY post is going to be amazing. We have made up a cool list of easy to sew DIY items which are absolutely lovable!
You don't just have to sit in that comfort zone, there are a lot to explore outdoors and you know what? they are just fun. If you need some inspiration, check out these great outdoor DIY projects and you just won't regret it.
There is no doubt that homes can never be complete without tables. There are so much you can do to make your home stand out and they don't really cost a fortune. I present to you 15 DIY tables you can make at home.
Homemade recipes could be what you need especially in a clod dry winter weather. The cost less and do not contain those polluting plastic microbeads. The following are 14 DIY homemade scrub recipes that will blow your mind.


text:
How to Turn Off Emergency (or AMBER) Alerts on iPhone
By Michael Andronico
Here's how to turn off iPhone alerts for an extreme weather warning, an AMBER alert, an evacuation notice or a national emergency.
Update Oct 3: New Presidential Text Alerts are being tested as part of a FEMA initiative.
Your iPhone's emergency alerts can save your life, but you might not want a deafening flash flood warning to go off when you're in the middle of work, or worse, fast asleep at night.
By default, the iPhone receives Wireless Emergency Alerts (WEA), which are sent to your carrier via groups like FEMA, the National Weather Service, the Department of Homeland Security and local public safety agencies.
With emergency alerts enabled, your iPhone will trigger a loud alarm whenever there's an extreme weather warning, an AMBER alert, an evacuation notice or a national emergency. While it's advisable to keep your phone alert-ready at most times, there's an easy fix for when you just want to enjoy some peace and quiet at home. Here's how to turn off emergency alerts on your iPhone.
1. Open Settings.
2. Scroll down and select Notification Center.
3. Scroll down to Government Alerts and slide left on the Emergency Alerts tab. You can also disable AMBER alerts from this section.
One thing to note is that, even if you disable Emergency Alerts, you will still receive so-called Presidential Alerts, which are alerts sent out from the White House via FEMA to warn of national emergencies.
Mike Andronico is an Associate Editor at Tom's Guide. When he's not writing about games, PCs and iOS, you can usually catch him playing Street Fighter. Follow Mike at @MikeAndronico. Follow us @TomsGuide, on Facebook and on Google+.
Michael Andronico
Mike Andronico is Senior Writer at CNNUnderscored. He was formerly Managing Editor at Tom's Guide, where he wrote extensively on gaming, as well as running the show on the news front. When not at work, you can usually catch him playing Street Fighter, devouring Twitch streams and trying to convince people that Hawkeye is the best Avenger.
Cunk on Earth is the best Netflix show you're not watching — and it's 100% on Rotten Tomatoes
Samsung Galaxy S23 Ultra vs Galaxy S22 Ultra: How the two flagships compare
Microsoft ChatGPT event news and updates: Bing and Edge get AI-powered search
I just went hands-on with the ChatGPT-powered Bing — this is scary good
Awesome Meta Quest 2 bundle deal gives you 2 games for free


text:
Note to CMO: A Good Story, Well Told—Screenwriting and Marketing
by Stephen Denny
Dear CMO:
Writing a compelling story is the inner game of marketing and is often the exclusive realm of your creative agencies. The client scowls during the presentation, asks if the logo could be bigger, and then selects the execution he thinks is the funniest. This symbiotic relationship holds up pretty well unless a client-side marketer sneaks behind the curtain for a look. Which I did.
Attending Robert McKee's STORY seminar has been on my "list" for years, along with other dubious goals (let's face it, getting an Oscar and hosting the Latin Grammies are going to take some work at this point). But because I come from a family of creatives, this was an itch that needed scratching.
McKee is a mash-up of Don Imus and Charlton Heston. His seminar consists of three 12-hour days. He doesn't accept interruptions. Removing rants against the president (one per hour), notes on the decline of Western Civilization (one every 15 minutes), and profanity (every third word), we could have been out of there after a day and a half. But context is everything and life itself is profane, so I won't complain.
The thing is, I don't aspire to write a screenplay. I invested 36 hours of lecture time because the development of "a good story, well told" is central to everything we marketers do. Everything else, to quote the professor, is "body and fender work."
For the sake of brevity, here are a few points to consider.
'Luke... I'm your father...'
Turning points are events during which progressively greater risks are taken and irreversible decisions are made. The protagonist's journey begins with a life-changing incident. The protagonist struggles against forces of antagonism. The quest drives the protagonist towards the possession (or not) of the object of desire. This journey is universal, in all cultures.
The flow from surprise, to curiosity, to insight, to new directions is the inner conversion turning an individual into a customer. Without surprise, the message is lost in the clutter. Without curiosity, there is no need to continue the dialog. Insight is the meeting of problems and solutions. New directions lead to the emotional life fulfilled.
'Give them what they want. But don't give it to them in the way they expect it'
"Character versus characterization" speaks to what you can observe versus what lies beneath, as shown by the choices your character makes under extreme pressure.
"Controlling ideas" are expressed by the single sentences that lay out the profound meaning of what you've written.
The "spine" describes the over-riding drive that compels your protagonist from beginning to end, connecting the scenes of your story.
And "image systems"—fire and blood in Macbeth, water in Diabolique, prison bars in Casablanca, all describe the subconscious elements hidden in plain sight that work their way into your audience's understanding.
All of us need to define what we are and what we're not, from the most mundane market requirement documents to the most conceptual branding development. The decisions you make under pressure—what you are when you have to decide without reflection—define your brand. Inconsistency kills brands.
'When the screenplay is written and the dialog is added, we can begin shooting'
Alfred Hitchcock's quote tells us to show, not tell. You can't explain cool, but you can be cool. Heavy-handed scripts are just as awful as badly developed copy, except they run an extra 115 minutes.
Here's a pet peeve that my old creative director used to call "jackassing"—you know, cubicle boy with his arms raised in the air, pumping his fists, and acting like his team just won the World Cup? Stop casting this guy, please. Stories need to show more than real life. They need to show life taken to its logical extreme—what McKee calls "the negation of the negation."
If our story begins at "performance parity"—the "our guys do about the same"—then our protagonist moves through the contrary value of "comparative advantage over peers" to the contradictory value of "uniquely successful." But you can't stop here with cubicle boy squinting his eyes and shouting "gooooal!" You must go to the logical extreme of "the expectation of success without the need for validation." So show me what happens to the guy after it's clear to him and everyone else that this success happens every day. Show me the swagger. Not the jackassing.
Here's an example from a meeting I had with Kellogg's not long ago. They didn't offer health club memberships or Weight Watchers discounts on Special K. They offered the logical extreme of what happens when you take care of yourself every day: Buy Special K and get a pair of jeans one size smaller than what you're wearing today.
Show it. Don't tell it.
If your life and work revolve around getting your point across to people who have other things to do, you're a storyteller by trade. Nurture your craft, throw most of your work away, and keep working it until you know it's extremely good work. Spend a long weekend in the audience with Robert McKee, if you have the chance, too.
How closely you pay attention to your story will often be the difference between a missed opportunity and a truly life-changing experience.
A good story, well told.
Stephen Denny is managing director at Denny Leinberger Strategy, which focuses on spotting business performance trends and giving clients the tools and insights to act on them so they can achieve real-world financial results. He is a co-author (with Paul Leinberger) of Unfiltered Marketing: 5 Rules to Win Back Trust, Credibility, and Customers in a Digitally Distracted World.
LinkedIn: Stephen Denny
Twitter: @Note_to_CMO


Ugh. What a bind. We really messed this one up from the beginning… thanks to the weird history of comics (sic) in America, we got a word like "comics," and its accompanying narrow definition. By contrast, Japan got "manga" and its accompanying broad definition.
Definitional trouble aside, I don't even like the word "comic," or the term "comic book." They're not, like, attractive in the mouth.
I agree that "graphic novel" doesn't cut it at all. Two words, total clunker, too narrow.
Actually, could we just call it all manga? It's a beautiful word, and it means exactly what we want it to mean: content made out of serial juxtaposed images.
Manga is a beautiful word.


Continuing our theme of the fantastic Mattel Masters of the Universe Classics line, today we feature Faker! Released way back at the New York Comic Con before you were able to score it from mattycollector.com, Faker is another popular character from the He-Man cannon to find form at the hands of the 4Horsemen in 2009. Created by Skeletor to resemble He-Man and generate chaos and confusion, he ended up with blue skin revealing him for the hoax he was, and showing that Skeletor is in general a lousy magician! Click the image below for the full bio, and some more packaged pictures of this excellent member of the 2009 MOTUC line!