text:
Listening to the picket line, with Cecilia Aldarondo
Posted on May 30, 2017 June 1, 2017
The workers at the Momentive plant near Albany, New York didn't get as much attention in the weeks surrounding Donald Trump's election as did those at Carrier in Indianapolis, but in many ways they are similar. While the Carrier plant was closing down, the workers there had faced repeated demands for givebacks in their contracts like the ones the Momentive workers fought against. And like Carrier, in the state from which Trump drew Vice-President Mike Pence, the Momentive plant too had a Trump connection: Steve Schwarzman, billionaire hedge-fund titan and Trump economic adviser, had been part of the team of private equity investors who owned the plant once it was spun off from GE. Yet when filmmaker Cecila Aldarondo began visiting the workers on the picket line they walked outside of Momentive for over 100 days, she found that many of them had voted for Trump. Her short film, Picket Line, is part of Our 100 Days, a short film initiative from Firelight Media and Field of Vision examining America after Trump, and we talked about stereotypes of Trump voters, the power of the union in resistance, and how to talk to people on the other side of the political line drawn by the 2016 election.
One of the things that has already sort of bothered me and troubled me a little bit is in seeing how people have reacted to the film since it was released, is people making knee-jerk statements about the white working class. Mostly people who think of themselves as liberal, who are rabid anti-Trumpers, who are essentially saying, "I am sick of hearing the story about the aggrieved white working class. These people are idiots," etc. and "Thanks for screwing us over." Something like this.
The first thing that I would say to that is, "First of all, this is not a universal… These people are not all white" and like you said, they are not all male. I would say this area is largely white, but there were a lot of people of color that I talked to for the film. I think that these sort of bumper-sticker narratives are things that people have been clinging to to explain very complicated and much longer-running issues around the growth of economic inequality, the erosion of union power in this country, etc.
Anyway, I just want to say, this is a film that really tries to challenge those kind of monolithic understandings of not just what happened, but what is happening to working people in this country. That includes all working people of all ethnicities, all genders, etc.
Resistance or revolution, with James Hayes
An equitable infrastructure plan, with Bishop Dwayne Royster


text:
Thomas Jane Adds Another Stephen King Adaptation To His Resume With 'From A Buick 8'
By Chris Evangelista/Dec. 4, 2019 5:00 pm EST
Thomas Jane has three Stephen King adaptations under his belt already: Dreamcatcher, The Mist and 1922. Now, he's ready to add another. Jane has teamed with producer Courtney Lauren Penn to form the content company Renegade Entertainment, and their first project is an adaptation of King's From a Buick 8. A From a Buick 8 movie was announced last year, set up at Hyde Park Entertainment, but that's no longer the case.
Deadline has the news that Thomas Jane and Courtney Lauren Penn have teamed to make a From a Buick 8 movie. The story doesn't explicitly state this, but it's assumed Jane will star in the film, which is adapted from the Stephen King novel of the same name. It's going to be ushered in under Jane and Penn's new Renegade Entertainment.
"From a Buick 8 is a thrilling and deeply personal project for us," said Jane and Penn, "as we explore a uniquely structured mystery spanning the 70s, 80s, 90s and post-9/11 era, centered around a son's search for the truth behind his father's sudden death. Along with first love and grief, terrifying and philosophic mysteries are spawned by inexplicable events connected to the titular car. We are honored that Stephen is supporting our vision of his brilliant, provocative novel."
King's novel is about a car that spits out monsters from another dimension, and even though that sounds rather silly, King managed to make the book emotional and earnest, as he often does. Here's the full book synopsis:
Since 1979, the state police of Troop D in rural Pennsylvania have kept a secret in the shed out behind the barracks. Ennis Rafferty and Curtis Wilcox had answered a strange call just down the road and came back with an abandoned 1953 Buick Roadmaster. Curt Wilcox knew old cars, and this one was...just wrong. As it turned out, the Buick 8 was worse than dangerous—and the members of Troop D decided that it would be better if the public never found out about it. Now, more than twenty years later, Curt's son Ned starts hanging around the barracks and is allowed into the Troop D family. And one day he discovers the family secret—a mystery that begins to stir once more, not only in the minds and hearts of these veteran troopers, but out in the shed as well, for there's more power under the hood than anyone can handle....
Late horror legends George A. Romero and Tobe Hooper were both attached to helm a film adaptation of From a Buick 8 at one point, but never director got the chance. Last year we reported that an adaptation was coming from Hyde Park Entertainment, with William Brent Bell handling the script. But that's no longer happening.
From a Buick 8 isn't what I'd call one of King's best novels, but it is compelling and different enough that it might result in an interesting movie. And while some folks may be burned out on Stephen King adaptations at this point, I'm still all-in.

redpajama_set_name: RedPajamaCommonCrawl


text:
Like Bush, But Without the Deep Understanding of the Issues
Rudy Giuliani on whether or not it's a problem that China owns so much of our federal debt: "the way to balance to books is to sell more overseas -- sell energy independence, sell health care."
John McCain on monetary policy: "I'm glad whenever they cut interest rates, I wish interest rates were zero."
Matthew Yglesias is a former writer and editor at The Atlantic.


Andy Croasdell is a seasoned professional in operations and business development in architecture and construction. Listen to how he applies the GTL Sale's Diamond in his everyday work. Check out this episode!
Ralph explains how you can differentiate yourself by thinking of yourself as a valuable product, rather than just trying to sell your technical skills. Check out this episode!
Deals that come from real tangible relationships are mutually beneficial. Ralph speaks about how important relationship building is from the beginning, and how even at at networking event you can start building the foundations of strong business relationships.
Ralph shares an excerpt from his sessions about the importance of knowing your value. Business development and personal branding skills hinge on selling based on value, not just your product or skills.
The first episode of Growth Through Learning. A series to help those who are seeking help in business development and personal branding skills. Join Ralph Kison, the founder of GTL and the myKison program as he reflects on the lessons found in his groundbreaking program.
What if you told stories to sell more?


Chris Warner is present in various forms, from the carefully displayed and laid out board of photos to a life-sized image that does the job of filling the groom-sized hole. Even his voice is present as Malcolm works sections of quotes from his time at Shortland Street into the act. Alongside the constant promises of attendance and self-reassurance that he will definitely be there, this overwhelming presence has the effect of making Chris Warner very much a character in the act. The show has the feeling of a double act that hasn't quite begun yet, with that constant awareness of the absent person. Nobody in the audience is expecting Chris Warner to turn up, mainly because he's a fictional character in the TV series 'Shortland Street' played by Michael Galvin but also because … well, it doesn't seem very likely. However, that's not stopping Malcolm from believing differently.
While we wait for Chris to turn up to the wedding the show goes on, Malcolm decides that Chris must want him to get better acquainted with the wedding guests and proceeds to tell us a whole lot about himself. From his experiences with the ringleaders at Scouts to his relationship with his family, the stories are surprising and brutally honest. As he justifies his opinions through his experiences, we laugh along and we see the gifted joke crafter that has seen him be picked as a 2016 Billy T nominee.
Malcolm's comedy has a seemingly youthful innocence, with a dirty underbelly of humour that hits from nowhere. It's an innocence that looks at the truth of a situation and sees a brighter, more positive side, or to put it another way, it looks at the truth and completely ignores it.
I'd love to tell you all about the show and what happens, but I fear telling you any more than I have would ruin the surprise reveals, and there are plenty. From the brilliant about face ending that had me in stitches to the growing stress regarding Chris Warner's absence that is evident on Malcolm's face, this is a show that you simply must see. This is THE Wedding of the NZ International Comedy Festival 2016, and one that everyone who attended will definitely be talking about. Don't miss out on the latest gossip and RSVP to your wedding invitation today!
James Malcolm's show Marry Me Chris Warner is on at BATS Theatre from Tues 3 May to Sat 7 May at 7pm.


text:
Qualcomm Snapdragon 855 Plus Announced
1 hr ago You Can Buy These Smartphones With Premium Features Under Rs. 25,000
5 hrs ago Facebook, HDFC Bank Join Hands With CSC To Empower Rural Women Entrepreneurs
9 hrs ago Xiaomi Mi Rechargeable LED Lamp Launched In India – Goes On Crowdfunding
11 hrs ago Apple iPhone SE And Three Other Models Will Not Be Avaialble For Sale In India: Report
News Partial Lunar Eclipse 2019: Stunning captures of Chandra Grahan from around the world
Sony Xperia XA2 Plus announced, will feature 18:9 display and 23MP rear camera and more
oi-Sandeep Sarkar
The device is backed by a Snapdragon 630 processor and offers two RAM variants including 4GB and 6GB.
By Sandeep Sarkar
Sony has announced its new mid-budget category smartphone Xperia XA2 Plus. The XA2 plus is the company's new addition to its previously available XA2 series which includes XA2 and XA2 Ultra smartphones. Unlike its previous models which feature the traditional 16:9 aspect ratio display, the XA2 features 18:9 aspect ratio edge-edge to display.
The company is marketing the new product with a tagline 'designed to entertain' as it features a 6-inch Full HD+ IPS LCD display that has a screen resolution of 2160 x 1080 pixels. The huge display and the screen resolution should make it apt for immersive video and media playback.
Sony Xperia XA2 Plus will ship with Android Oreo 8.0 out of the box. The device is backed by a Snapdragon 630 processor and offers two RAM variants including 4GB and 6GB. The 4GB RAM variant comes with a 32GB internal storage whereas the 6GB RAM variant comes with 64GB internal storage. The device features a hybrid microSD slot and the storage can be further expanded using a microSD card. However, it is still not clear that how much can the memory be expanded using the microSD card.
On the imaging front, the Xperia XA2 Plus features a 23MP rear camera which is coupled with a 24mm f/2.0 lens. The rear camera also comes with PDAF and LED flash. The device sports an 8MP sensor which comes with a f/2.4 aperture fixed-focus lens. The front camera supports various features such as HDR, panorama, face and smile detection along with touch-to-focus mode.
The connectivity aspects of the Xperia XA2 Plus include Bluetooth 5.0 along with the support for 4G LTE. The device has a USB Type-C for charging and data transfer and a 3.5 mm audio jack for connecting headphones with the device. The Xperia XA2 Plus is backed by a 3,580mAH Li-ion battery which comes with a support for Quick Charge 3.0. The device measures at 157mm x 75mm x 9.6mm and weighs 205 gms.
The device is expected to be available by late August, however, there is no information available on the pricing as of now. The Sony Xperia XA2 Plus will be available in a variety of color options including black, gold, green, and silver.
You Can Buy These Smartphones With Premium Features Under Rs. 25,000
Sony WH-XB900N With 30 Hours Battery Life Launched For Rs. 16,990 In India
Facebook, HDFC Bank Join Hands With CSC To Empower Rural Women Entrepreneurs
Sony Xperia 20 Renders And Specs Leaks Ahead Of 2019 Launch, Hints at Snapdragon 710 SoC
Xiaomi Mi Rechargeable LED Lamp Launched In India – Goes On Crowdfunding
Sony Announces The World's Smallest And Lightest Action Camera
Apple iPhone SE And Three Other Models Will Not Be Avaialble For Sale In India: Report
Sony WF-1000XM3 Truly Wireless Earbuds Launched With Active Noise Cancellation
Amazfit GTR Smartwatch With 24 days battery life Launched: Price, Specifications and More
Sony HT-Z9F Soundbar With Dolby Atmos Launched In India: Check All The Details Here
Xiaomi Introduces Redmi Note 7 New White Color Option
Sony Introduces Two New Wireless Neck-Band Style Headphones In India
Best Mobiles in India
Nubia Red Magic 3
To stay updated with latest technology news & gadget reviews, follow GizBot on Twitter, Facebook, YouTube and also subscribe to our notification.
Read More About: sony xperia news
Realme 3i Launched In India Starting From Rs. 7,999 – A Redmi 7A Rival
BSNL Brings Rs 96 Prepaid Plan — Offers Unlimited Calling, 100 SMS Per Day For 180 Days
Samsung Galaxy M40 Gets Cocktail Orange Edition In India – Amazon Prime Day Sale Offer You Can Get


"To co-ordinate, promote and develop Taekwondo in Barbados"
WHITE HALL, ST. PETER, Barbados - The Taekwondo Association of Barbados performed a live public demonstration during the community outreach 2019 IDSDP Multi-sport rally hosted by the Barbados Olympic Association. Those present included various Sports Officials, community leaders, athletes and residents, and they witnessed performances of Poomsaes, Self-defense, and Kyorugi. There were also drill demonstrations of various Taekwondo techniques and some of the youth on hand had an opportunity to try performing some of the drills.
Above, Alleyne and Lyte (centre in blue shirts) stand (L-R) with President Turton, Instructor Anthony Williams, 2017 WT President's Cup Gold Medalist - Liana Best Smith; Events Committee Chair Renee Best and Clubmate Joshua Simpson. Below, Master Williams sharing some guidance for Alleyne (backing) and Lyte.
CHRIST CHURCH, Barbados - Two of the Men's Senior National Team members - Askia Alleyne and Neilon Lyte were seen off at the Grantley Adams International Airport earlier this afternoon. They were on their way to Santo Domingo to compete for Barbados and earn a spot in the 2019 Lima, Peru Pan American Games - which itself is a qualifier for the 2020 Olympic Games.
On hand to lend support and see them off were members of the Executive Council, Technical Committee, and some of their Club mates from Williams Taekwondo Dojang. Their Instructor - Anthony Williams was present to provide final words of advice and expressed his pleasure with the present state of conditioning of the athletes. President Turton also expressed satisfaction with the Team's preparations and the significance of this outing, stating that it shows "Barbados is back!" He was happy that Taekwondo in Barbados was once again formally engaged in formal Olympic qualification Cycle having missed out on the process in 2015 and was looking forward to the Team representing the country well.
Alleyne is drawn against 18 of the best from Pan America in the Men's 80+kg Kyorugi whilst Lyte will compete against 23 of the best from Pan American region in the Men's under 68kg Kyorugi. Both Alleyne and Lyte are the reigning National Champions in their respective categories. Whilst Lyte is new to this level of competition, Alleyne returns having represented Barbados as far back as the 2005 US Open. He also participated in the 2017 World Taekwondo Championships Training Camp in Muju, South Korea. The team is set to return on Sunday 10 March 2019.
Above, action from the Men's Heavyweight exhibition contest. Below, all Kyorugi competitors and officials perform the Il Jang Poomsae in unison to the delight of all in attendance.
Click the button below for results from the competition.
BRIDGETOWN, Barbados - The 3rd Annual "Get Ya Feet Wet" Competition lived up to its name as the National Association kicked off its 2019 calendar of events with a well-contested event. Athletes showed keen edge and high spirits as they returned to competitive action following the Christmas Holidays.
There were also a number of new faces and players making their Kyorugi debuts. There was even a Guest Official as Master Zach Miner from Iowa, USA shared in Referee duties. He also paired with our newest Female Cadet 1st Poom, Liana Best-Smith of Williams' Taekwondo Dojang in a dual synchronized exhibition of the Koreo Poomsae which brought warm applause from those on hand. Also performed was the rare mass rendition of the Il Jang Poomsae, as all competitors, referees, judges and officals donned their Doboks and stepped onto the mat to perform the Poomsae in unison to the delight of all in attendance.
After the medal ceremony President Turton congratulated the athletes on their great work. He also highlighted the efforts of the Executive, Events and Referees Committees, encouraging all to maintain excellence. A representative from Azure Gourmet Skin Care products was also on hand as the company donated an Apple Monitor/ Screen for display of scores during the Association's Taekwondo Activities. We thanked Mr. Burnett for the donation and encouraged him to continue the pursuit of excellence as Taekwondo is about the journey and way of life which extends beyond the mat, Dojang and competition.
Registration is now closed for Sunday's 3rd Edition of the Annual "Get Ya Feet Wet" Tournament to be held at "Pax Hill", Girl Guides Head Quarters, Belmont Road, St. Michael - 10th February 2019.
BRIDGETOWN, Barbados - Congratulations is extended to students from the Williams Taekwondo Dojang on their recent promotions following successful grading at the Club on 14 December 2018. Amongst those being promoted was Liana Best-Smith who became the Association's newest female Cadet 1st Poom (Black Belt). Other successful examinees earned promotions to the ranks of Red Belt, Blue Belt and Green Belt. Students and Instructor alike are once again congratulated and encouraged to continue their excellent work!


I spent 5 days in Singapore, dodging the showers and enjoying the sunshine when it came out. This was the first leg of my summer trip. I will post the Bali and Java parts soon.
I have also added some new images to the Hong Kong gallery, as the summer weather has had plenty of clear sunny days.


Amarillo city commissioners are hearing from their constituents: Be mindful of a tax burden that is getting too much for many residents to bear.
The city budget process is slogging along and commissioners are talking openly about spending reductions over tax increases to make up for a revenue shortfall.
The city is considering a preliminary budget that would increase the municipal tax rate slightly, from 31.784 cents per $100 assessed valuation, a 1.92-percent increase.
But commissioners have discussed trimming $750,000 in capital improvement spending.
"We just can't ask for it right now," said City Commissioner Jim Simms.
So it might be that commissioners could do taxpayers a big favor by keeping the tax rate as low as possible while pondering how to keep the city running efficiently.
Commissioners are talking about the street repairs that need immediate attention. But are the potholes going to swallow vehicles? Hardly.
Indeed, a recent seal-coating of some residential streets has drawn some fire from residents irked over the gravel that's been sprayed from vehicles' tires against other vehicles and onto residents' yards.
The lesson here is that some work isn't always as appreciated as City Hall would like to believe it is. So, why not save the money?
Residents should not want to trim essential municipal services, nor are they saying they do. But their elected representatives and senior administrators at City Hall must be mindful of the total tax burden that residents are packing.
If the city can keep the tax rate low, then so much the better for those who are paying the bills.


text:
The Russell Sage Foundation has established a center where Visiting Scholars can pursue their writing and research. Each year, the Russell Sage Foundation invites a number of scholars to its New York headquarters to investigate topics in social and behavioral sciences. The Foundation particularly welcomes groups of scholars who wish to collaborate on a specific project during their residence at Russell Sage. While Visiting Scholars typically work on projects related to the Foundation's current programs, a number of scholars whose research falls outside the Foundation's active programs also participate.
These research projects, and other work conducted by the Visiting Scholars, constitute an important part of the Russell Sage Foundation's ongoing effort to analyze the shifting nature of social and economic life in the United States.
If you are interested in applying to be a Russell Sage Foundation Visiting Scholar, please see our guidelines on how to apply.
Learn More aboutVisiting Scholars Program
The Merton Scholar recognizes the enduring contributions of an eminent scholar to the social sciences. Read More
Established in 2015, the Foundation's Margaret Olivia Sage Scholars program provides the opportunity for distinguished social scientists to spend brief periods in residence at the Russell Sage Foundation. Read More
Visiting Journalists work in residence at the Foundation for a period of 2-4 months alongside resident Visiting Scholars who might help inform the development of their projects. Read More
On an occasional basis, the Foundation has one or two available office spaces and considers applications for short-term fellowships by scholars who are conducting research relevant to the Foundation's priority areas. Read More
RSF Affiliates Awarded Nobel Memorial Prize in Economic Science
Nine scholars affiliated with the Russell Sage Foundation are winners of the Nobel Memorial Prize in Economic Science. Established in 1968, the Nobel Prize in Economics annually recognizes outstanding contributions to the study of economics and is considered the most prestigious award in the field. Read More
The Russell Sage Foundation's Visiting Scholars Program provides a unique opportunity for select scholars in the social, economic and behavioral sciences to pursue their research and writing while in residence at the Foundation's New York headquarters. Read More
RSF: The Russell Sage Foundation Journal of the Social Sciences is a peer-reviewed, open-access journal of original empirical research articles by both established and emerging scholars.
The Russell Sage Foundation offers grants and positions in our Visiting Scholars program for research.


Published 04/23/2019 10:34:13 pm at 04/23/2019 10:34:13 pm in Best Power Drill For Home.
best power drill for home best power drill for home cordless drill home cordless drill buyers guide to get the best drill for home use cordless drill buyers guide to get the best drill for home use.
best cordless power drill for home use extellinfo best cordless power drill for home use ion ah power craft battery the best promotion cordless, best drill for home use best cordless drill for home use drill for best drill for home use best cordless drill for home use drill for home use india drill home depot canada, top best corded drill reviews corded drill reviews , best cordless power drill for home use extellinfo best cordless power drill for home use best cordless drill, home best of machinery dewalt drills, best hammer drill for home use buying advice and top reviews best hammer drill for home use buying advice and top reviews for , best cordless power drill for home use extellinfo best cordless power drill for home use for those looking for the best cordless drills under, the best random orbital sanders to buy in best impact wrenches for , best cordless drills and drivers the independent ace your diy projects with a triedandtested power tool suitable for all levels, the best cordless drills for home use best cordless drills, steve author at reallez home garden tips find the best v cordless drill for your money.


text:
Q: Apache Thrift: Returning a list/container I made a simple thrift file like this:
thrifttest.thrift
namespace cpp thrifttest
namespace d thrifttest
namespace java thrifttest
namespace php thrifttest
namespace perl thrifttest

service Test {

    list<i64> ping();

}

and in shell ran "thrift --gen cpp thrifttest.thrift"
However, when I looked at gen-cpp/Test_server.skeleton.cpp it made the i64 list a parameter, not a return type:
Test_server.skeleton.cpp (excerpt)
void ping(std::vector<int64_t> & _return) {
    // Your implementation goes here
    printf("ping\n");
}

and in my server.cpp program, after I make a function ping() that returns an "std::vector &", the compiler complains that

error: cannot allocate an object of abstract type 'TestHandler'
  server.cpp:30:7: note:   because the following virtual functions are pure within 'TestHandler':

this is the full code for server.cpp
server.cpp
#include <thrift/concurrency/ThreadManager.h>
#include <thrift/concurrency/PosixThreadFactory.h>
#include <thrift/protocol/TBinaryProtocol.h>
#include <thrift/server/TSimpleServer.h>
#include <thrift/server/TThreadPoolServer.h>
#include <thrift/server/TThreadedServer.h>
#include <thrift/transport/TServerSocket.h>
#include <thrift/transport/TTransportUtils.h>

#include <iostream>
#include <stdexcept>
#include <sstream>

#include "gen-cpp/Test.h"

using namespace std;
using namespace apache::thrift;
using namespace apache::thrift::protocol;
using namespace apache::thrift::transport;
using namespace apache::thrift::server;

using boost::shared_ptr;

using namespace thrifttest;

using namespace boost;

unsigned long giant[100];

class TestHandler : virtual public TestIf {
 public:
  TestHandler() {
      for (int i = 0; i < 100; i++) {
          giant[i] = -1;
      }
  }

  std::vector<int64_t> & ping() {
        return (std::vector<int64_t> &)giant;
    }

  void ping(std::vector<int64_t> & bla) {}
};

int main(int argc, char **argv) {

  shared_ptr<TestHandler> handler(new TestHandler());
  shared_ptr<TProcessor> processor(new TestProcessor(handler));
  shared_ptr<TServerTransport> serverTransport(new TServerSocket(port));
  shared_ptr<TTransportFactory> transportFactory(new TBufferedTransportFactory());
  shared_ptr<TProtocolFactory> protocolFactory(new TBinaryProtocolFactory());

  TSimpleServer server(processor,
                       serverTransport,
                       transportFactory,
                       protocolFactory);

  printf("Starting the server...\n");
  server.serve();
  printf("done.\n");
  return 0;
}

A: I accidentally came across an article (StackOverflow: Handling Apache Thrift List Map Return Types in C) that discussed this exact issue (though the answer didn't work in my case). Turns out, thrift uses a pass-by-reference syntax, even though "Thrift uses a pass by value model" - Gupta. So here's an example:
.thrift file
service Test {

    list<string> ping();
}

Server side
void ping(std::vector<string> & _return) {
    _return.push_back("hello");    //initialize the vector _return with values "hello","world"
    _return.push_back("world");
}

Client side
std::vector<string> result;     //create vector "result" for storing the values
client.ping(result);
printf("%s %s!\n", result[0].c_str(), result[1].c_str());   //c_str() turns the vector string into a C-style string

Client output (after starting server)

hello world!

and thank you Thrift for the lack of documentation, I had a blast!  #4hoursgoogling&crying

A: Aside from your question, there are a few drawbacks with returning a container class directly.
Instead, I would wrap the container into a struct and return that one. This way you can add any fields later without the need for a new service method. Furthermore, the container itself can be omitted if that becomes necessary - you can't return a NULL container for technical reasons with Thrift.

redpajama_set_name: RedPajamaStackExchange


Geophysical Monograph 54, 291−297, 1989.
We describe an instrument capable of imaging the time-varying features of the entire outer corona (from near the Sun to beyond 90° elongation) via the Thomson-scattered diffuse solar light. This "all sky"imager works on a spin-stabilized spacecraft, preferably in deep space. The design for such an imager, which can for example study solar mass ejections at great distances from the Sun, must deal wih spurious signals from stray light, zodiacal light, and stars to surface brightness levels below 1 S10 unit. The design discussed here envisions a set of three slit apertures, feeding one-dimensional detectors through a lens system; the spacecraft rotation allows a complete sky survey during each spin of the spacecraft. Data clocked into a computer memory complete the "image" of the whole sky. We have analyzed a "median filter" approach to reducing the effects of starlight, in real time, on the statistics of the residual diffuse background. The analysis also included simulations of spacecraft nutation, spin-phase timing error, and image quality in the necessary wide-field optics.


IWID spans across Southern,Western,and Northern region of India through its offices in Chennai and Bhopal.
Grassroots Communities including the rural ,tribal and urban poor.
Professionals such as Law practioners, Media Personnel, Academecians, Researchers,Trainers and Students.


text:
Dawn Castillo
Director, Division of Safety Research | NIOSH
Dawn Castillo is the Director of the Division of Safety Research at the National Institute for Occupational Safety and Health (NIOSH) in Morgantown, West Virginia. The Division serves as the focal point for traumatic occupational injury research and prevention programs at NIOSH. The Division also houses the NIOSH Center for Occupational Robotics Research. Ms. Castillo is an epidemiologist. She has authored numerous articles, book chapters, and technical documents on a variety of occupational injury topics, including occupational injuries among young workers, older workers, fire fighters, and workplace violence. Ms. Castillo received her B.S. in Biology from the University of California, Irvine and her Masters of Public Health in epidemiology from the University of California, Los Angeles.


text:
Beauty Chevron Right
Health & Fitness Chevron Right
Olympic Swimmer Dana Vollmer Lives for Bubble Baths — and We Can Relate
By Victoria Moorhouse
Updated May 07, 2016 @ 7:45 pm
Credit: Ian MacNicol / Getty Images
I'll be honest. I wasn't feeling so hot the day I sat down with Olympic swimmer Dana Vollmer. It was one of those days where nothing seemed to go smoothly: the subway was delayed, my coffee spilled all over my sweater, and the gloomy weather had the best of me. Basically, my confidence wasn't nearly where it should have been.
But spend 10 minutes with Dana, an incredible athlete who has four gold medals to her name and became the first woman to ever swim the 100-meter butterfly in under 56 seconds, and it's hard not to feel empowered, inspired, and totally refreshed.
At least that's how I felt after sitting down with Dana in celebration of P&G's new Thank You Mom video for the 2016 Olympic games, "Strong," and to talk about health, wellness, off days, beauty faves, and, of course, confidence. Here's a breakdown on our chat.
Her mom taught her a lot about confidence.
Given the theme of P&G's new video and the proximately our interview was to Mother's Day, I had to ask what Dana learned about courage and confidence from her mom.
"Over the years, it's been a roller coaster of a journey — as every Olympian's story is — so there's definitely low moments where it's nice to have someone who helps you look beyond the sport," Dana tells me.
"She [her mother] was always really good at letting me see how much I've got to travel and being in school and the friends that I had — keeping me grounded and keeping things in perspective. All of that goes into when you're standing behind the blocks, knowing this isn't life or death. This is hopefully 55 seconds of my life. That goes by so fast and to really appreciate every moment of it. Is it going to hurt? Yeah, it always does. That's part of it — to just really love every moment that you're doing it," she says.
Are you tearing up? Because I am.
The cure to an off day? Bubble baths.
Dana, you are all of us. When this athlete is feeling down, she tells me she enlists the power of a bubble bath. "I love a bubble bath and just laying there and trying to just detox — letting it go and bringing it back to knowing that it's my perspective that's usually making the situation hard," she said.
This is on top of cooking herself a healthy meal and getting more sleep. Can you say #RoleModel?
Credit: Courtesy
Staying hydrated is everything.
Dana told me that her mom taught her the importance of staying hydrated.
"Hydration affects everything about your life," she says. "I notice when I'm dehydrated how cracked my lips get and I tend to breakout more. When I'm not hydrated, I don't have as much energy."
Dana's mom's advice for the win — again.
RELATED: How to Curb PMS Symptoms with Your Diet
She's got to be strategic with her beauty routine.
You think applying beauty products wouldn't be that big of a deal, but Dana needs to be very particular about when she applies her SPF.
She says she applies it about 45 minutes before she swims so it doesn't make her cap and goggles slide around. Have you ever swam with water in your goggles? It's not fun.
As for chlorine and her hair? "I've seen hair products that you can put in and then my cap does come off, so I do try to get my hair wet before I get in — let it soak up the clean water instead of soaking up the chlorinated water," she says.
She has quite a few methods for recovering from tough workouts.
And we're not just talking about using a roller.
"I like laying on the ground and putting a tennis ball between my shoulder blades. It's kind of deeper than just a roller. But I love doing epsom salt baths. I will get a big bottle of water and get in an epsom salt bath and just sit in it for like 15 minutes. Those are my main go-to recovery [methods]," she says.
RELATED: Why You Need This Healthy Green Smoothie in Your Life ASAP
Dana's advice for achieving your dreams? Tune out the negativity and go after what you want.
"I've always felt like you've got to not listen to people who want to say negative things about you. I know that's incredibly hard, but the only person that matters in how you feel about yourself is yourself. Trying to stay in-tune to that but figuring out what makes you happy — what workouts make you happy," she says.
"…There's not one way to reach a dream. There are tons of people who are going to judge your process. It's going to work for you if you love it — just filling your days with what make you happy. Then, I feel like you're going to love the journey on the way to that dream and it's going to make the dream even better."


Deep Laundry Sink have 30 picture of decorating ideas, it's including Deep Laundry Sink Unbelievable Undermount Mud Room Utility Sinks By Just Decorating Ideas 1. Deep Laundry Sink Prodigious Integra Room Mud Sinks By Just Decorating Ideas 2. Deep Laundry Sink Incredible Cabinet Mounted And Freestanding Utility Sinks Made In Decorating Ideas 3. Deep Laundry Sink Unthinkable Apron Cast Iron Nursery Ideas Why Choosing Decorating 4. Deep Laundry Sink Unbelievable New Only 250 Including Cabinet Why So Cheap Decorating Ideas 5.


Looking for the right Scrum Master to work with your Agile team? Then this post is for you. I talk about two things in this post – Why a Team Leader may not be a right fit for the job and Five Questions to ask yourself when conducting a Scrum Master interview.
In a few teams I worked with, there was a misconception – a Team Leader is the right Scrum Master. Many times, I have seen this assumption fail. The main reason is the difference in competency and skills required for a Scrum Master – from those of a Team Leader or a Project Manager.
Another common mistake during recruitment is what I call, a Certification Bias.
If a person holds a certification like CSM (Certified Scrum Master), he or she is preferred for the role. Remember, any certification introduces a person to certain skills. Whether the person is truly capable of acquiring these skills and use them in their job, is a completely different topic. It is true that they have a better chance of being the right Scrum Master. But it is not always true.
Now that you are convinced (hopefully) that the current designation or certification doesn't qualify a candidate to be a Scrum Master, let's look at five questions.
Ask yourself these questions, if you are either interviewing an external candidate or evaluating an internal candidate. Positive answers may suggest that the candidate fits the bill.
Q1: Is the candidate a Good Listener?
What has listening to do with a Scrum Master? In fact, a lot I would say.
If you closely observe a daily standup meeting of an experienced Agile team, you may find the Scrum Master being extremely quiet. It doesn't mean lack of participation. It means that he is listening to others and will pitch in as needed. Active listening is an important attribute to look for in a Scrum Master candidate. Do remember this question in your interviews.
Q2: Is the candidate a Good Facilitator?
Have you ever watched an Orchestra? If yes, have you paid close attention to the Conductor? He is the person who normally holds a baton and makes hand gestures to the music band. He makes sure that the tempo is set, correct entries are made by the individuals and ensures a great overall performance.
A Scrum Master plays exactly the same role in an Agile team.
He is reasonably detached from the team and doesn't get the hands dirty. But, like an Orchestra Conductor, he ensures that everyone understands and move towards the common objectives. He takes the responsibility to ensure a successful delivery of the complete show.
Your interview must include some probing or questions to understand if the candidate can play this role.
Q3: Can the candidate be Passively Authoritative?
Okay, I cooked up the term – Passive Authority! It refers to someone who can be passive most of the time and let the team drive the show while making necessary minor adjustments along the way. But if things are way off the target, this person puts on the "Authority" hat. He makes assertive decisions and control individuals to set things back on track.
Passive Authority is a Scrum Master's preferred attribute.
Agile teams are empowered and can self-organise themselves in most occasions. But when they cannot, the Scrum Master must pitch in and use his authority. In times of illness, command-and-control can be used as a medicine in sufficient dosage.
In your interview, probe for hints and find if the candidate can use his authority when demanded by the situation.
Q4: Does the candidate have Good Communication Skills?
A Scrum Master acts as an entry point into an Agile team.
He is responsible for sending out relevant information about the team progress, in suitable formats, to other stakeholders in the project. He is also responsible for acting as a filter and bringing right information into the team. Just like a filter, he must prevent the noise and less useful information from entering the team.
Good Communication skills greatly help with these responsibilities. Language skills are just one part of effective communication. Choosing the right format and applying rational thought are other important attributes to consider.
Make sure the candidate has these skills before making him the Scrum Master of your Agile team.
Q5: Can the candidate pick up subtle signals?
In a team, people don't always speak things out. There are several ways to understand non-spoken realities: observing the body language, paying close attention to the words used, judging the attitude are some of them.
The Scrum Master must be smart enough to pick these signals. He must be able to understand the project trend and not just be a reader of metrics.
For example, if there are big variations in the velocity between iterations, the Scrum Master must use his mind, delve further and understand the root cause. Reporting the deviation to management team is only half job done.
So make sure to look for this attribute in your candidate.
Let me recap everything we discussed in this post.
Is the candidate a Good Listener?
Is the candidate a Good Facilitator?
Can the candidate be Passively Authoritative?
Can the candidate pick up subtle signals?
What in your opinion are other essential characteristics in a Scrum Master? Do share it as comments to this post. We are listening!
Scrum is a methodology that allows a team to self-organize and make changes quickly, in accordance with agile principles. The scrum master manages the process for how information is exchanged. Scrum master are hired for full as well as for part time. The article is very informative as the list of questions given is very useful.
Thanks for sharing such an informative article and Keep sharing.!!!


Luxuriously soft and thick, the Colorado collection of area rugs is the perfect touch to your living space. Traditional floral patterns of antique oriental rugs are created in a warm palette of earth tones, adding style and comfort to any space.
Fast delivery, love the rug, good quality, pretty color, perfect size, easy to order.


text:
Orangeberry Book of the Day - Fermanagh Gems by Dianne Ascroft
Among its many appealing features County Fermanagh in Northern Ireland has pleasing landscapes, a rich history and talented local artisans. Six gems have been selected to feature in this collection of articles: a natural wonder, enduring or innovative institutions and a gifted craftsman. Some are well-known, others might be called hidden gems; each deserves to be allowed to shine.
Each article is a snapshot of a Fermanagh place, institution or person at a significant moment in its existence. We will visit Marble Arch Caves on the twenty-fifth anniversary of the opening of its show cave, Belleek Pottery on its 150th anniversary, the Graan monastery during its centenary year, Headhunters Railway Museum at the end of its first decade and Frankie McPhillips, a craftsman who has carried on the Irish fly-tying tradition for the past thirty-five years.
Each of these articles was originally published individually in Ireland's Own magazine.
Buy Now @ Amazon & Amazon UK
Genre – NonFiction Travel
More details about the author
Connect with Dianne Ascroft on Facebook & Twitter
Blog http://dianneascroft.wordpress.com/


text:
Q: How to Get Correct Path After Cropping the Image? I want to Crop the Capture/Selected Image and Upload it on to server.
What Problem I am Facing : After Cropping the Image i am not getting actual path for that Cropped Image. i have done my code below way. i am croping the image correctly also everything works fine here but imageview is not displaying original image instead of cropped image.
However when i have fetched bitmap with   Bitmap photo = extras.getParcelable("data"); inside onActivityResult() i am getting Cropped image displayed in imageview.but not getting able to absolute path for that Cropped Image.
Can Anybody please guide me where i am lacking. i have tried with many SO links but not able to get exact solution for my issue.
Here is My Code :
public class MainActivity extends Activity {
    private Uri mImageCaptureUri;
    private ImageView mImageView;

    private static final int PICK_FROM_CAMERA = 1;
    private static final int CROP_FROM_CAMERA = 2;
    private static final int PICK_FROM_FILE = 3;

    private String selectedImagePath = "";
    boolean GallaryPhotoSelected = false;

    public static String Finalmedia = "";

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        setContentView(R.layout.main);

        final String[] items = new String[] { "Take from camera",
                "Select from gallery" };
        ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,
                android.R.layout.select_dialog_item, items);
        AlertDialog.Builder builder = new AlertDialog.Builder(this);

        builder.setTitle("Select Image");
        builder.setAdapter(adapter, new DialogInterface.OnClickListener() {
            public void onClick(DialogInterface dialog, int item) { // pick from
                                                                    // camera
                if (item == 0) {
                    Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);

                    mImageCaptureUri = Uri.fromFile(new File(Environment
                            .getExternalStorageDirectory(), "tmp_avatar_"
                            + String.valueOf(System.currentTimeMillis())
                            + ".jpg"));

                    intent.putExtra(android.provider.MediaStore.EXTRA_OUTPUT,
                            mImageCaptureUri);

                    try {
                        intent.putExtra("return-data", true);

                        startActivityForResult(intent, PICK_FROM_CAMERA);
                    } catch (ActivityNotFoundException e) {
                        e.printStackTrace();
                    }
                } else { // pick from file
                    Intent intent = new Intent();

                    intent.setType("image/*");
                    intent.setAction(Intent.ACTION_GET_CONTENT);

                    startActivityForResult(Intent.createChooser(intent,
                            "Complete action using"), PICK_FROM_FILE);
                }
            }
        });

        final AlertDialog dialog = builder.create();

        Button button = (Button) findViewById(R.id.btn_crop);
        mImageView = (ImageView) findViewById(R.id.iv_photo);

        button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                dialog.show();
            }
        });
    }

    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        if (resultCode != RESULT_OK)
            return;

        switch (requestCode) {
        case PICK_FROM_CAMERA:
            doCrop();

            break;

        case PICK_FROM_FILE:
            mImageCaptureUri = data.getData();
            Log.i("TAG",
                    "After Crop mImageCaptureUri " + mImageCaptureUri.getPath());
            GallaryPhotoSelected = true;
            doCrop();

            break;

        case CROP_FROM_CAMERA:
            Bundle extras = data.getExtras();

            selectedImagePath = mImageCaptureUri.getPath();

            Log.i("TAG", "After Crop selectedImagePath " + selectedImagePath);

            if (GallaryPhotoSelected) {
                selectedImagePath = getRealPathFromURI(mImageCaptureUri);
                Log.i("TAG", "Absolute Path " + selectedImagePath);
                GallaryPhotoSelected = true;
            }

            Finalmedia = selectedImagePath;

            Log.i("TAG", "Finalmedia Path " + Finalmedia);

            if (extras != null) {
                Bitmap photo = extras.getParcelable("data");

                Bitmap bm = BitmapFactory.decodeFile(Finalmedia);

                mImageView.setImageBitmap(bm);
            }

            // File f = new File(mImageCaptureUri.getPath());
            //
            // if (f.exists()) f.delete();

            break;

        }
    }

    public static Bitmap decodeFile(String path) {
        int orientation;
        try {
            if (path == null) {
                return null;
            }
            // decode image size
            BitmapFactory.Options o = new BitmapFactory.Options();
            o.inJustDecodeBounds = true;
            // Find the correct scale value. It should be the power of 2.
            final int REQUIRED_SIZE = 70;
            int width_tmp = o.outWidth, height_tmp = o.outHeight;
            int scale = 2;
            // while (true) {
            // if (width_tmp / 2 < REQUIRED_SIZE
            // || height_tmp / 2 < REQUIRED_SIZE)
            // break;
            // width_tmp /= 2;
            // height_tmp /= 2;
            // scale++;
            // }
            // decode with inSampleSize
            BitmapFactory.Options o2 = new BitmapFactory.Options();
            o2.inSampleSize = scale;
            Bitmap bm = BitmapFactory.decodeFile(path, o2);
            Bitmap bitmap = bm;

            ExifInterface exif = new ExifInterface(path);

            orientation = exif
                    .getAttributeInt(ExifInterface.TAG_ORIENTATION, 1);

            Log.e("ExifInteface .........", "rotation =" + orientation);

            // exif.setAttribute(ExifInterface.ORIENTATION_ROTATE_90, 90);

            Log.e("orientation", "" + orientation);
            Matrix m = new Matrix();

            if ((orientation == ExifInterface.ORIENTATION_ROTATE_180)) {
                m.postRotate(180);
                // m.postScale((float) bm.getWidth(), (float) bm.getHeight());
                // if(m.preRotate(90)){
                Log.e("in orientation", "" + orientation);
                bitmap = Bitmap.createBitmap(bm, 0, 0, bm.getWidth(),
                        bm.getHeight(), m, true);
                return bitmap;
            } else if (orientation == ExifInterface.ORIENTATION_ROTATE_90) {
                m.postRotate(90);
                Log.e("in orientation", "" + orientation);
                bitmap = Bitmap.createBitmap(bm, 0, 0, bm.getWidth(),
                        bm.getHeight(), m, true);
                return bitmap;
            } else if (orientation == ExifInterface.ORIENTATION_ROTATE_270) {
                m.postRotate(270);
                Log.e("in orientation", "" + orientation);
                bitmap = Bitmap.createBitmap(bm, 0, 0, bm.getWidth(),
                        bm.getHeight(), m, true);
                return bitmap;
            }
            return bitmap;
        } catch (Exception e) {
            return null;
        }

    }

    public String getRealPathFromURI(Uri contentUri) {
        String[] proj = { MediaStore.Images.Media.DATA };
        Cursor cursor = managedQuery(contentUri, proj, null, null, null);
        int column_index = cursor
                .getColumnIndexOrThrow(MediaStore.Images.Media.DATA);
        cursor.moveToFirst();
        return cursor.getString(column_index);
    }

    private void doCrop() {
        final ArrayList<CropOption> cropOptions = new ArrayList<CropOption>();

        Intent intent = new Intent("com.android.camera.action.CROP");
        intent.setType("image/*");

        List<ResolveInfo> list = getPackageManager().queryIntentActivities(
                intent, 0);

        int size = list.size();

        if (size == 0) {
            Toast.makeText(this, "Can not find image crop app",
                    Toast.LENGTH_SHORT).show();

            return;
        } else {
            intent.setData(mImageCaptureUri);

            intent.putExtra("outputX", 200);
            intent.putExtra("outputY", 200);
            intent.putExtra("aspectX", 1);
            intent.putExtra("aspectY", 1);
            intent.putExtra("scale", true);
            intent.putExtra("return-data", true);

            if (size == 1) {
                Intent i = new Intent(intent);
                ResolveInfo res = list.get(0);

                i.setComponent(new ComponentName(res.activityInfo.packageName,
                        res.activityInfo.name));

                startActivityForResult(i, CROP_FROM_CAMERA);
            } else {
                for (ResolveInfo res : list) {
                    final CropOption co = new CropOption();

                    co.title = getPackageManager().getApplicationLabel(
                            res.activityInfo.applicationInfo);
                    co.icon = getPackageManager().getApplicationIcon(
                            res.activityInfo.applicationInfo);
                    co.appIntent = new Intent(intent);

                    co.appIntent
                            .setComponent(new ComponentName(
                                    res.activityInfo.packageName,
                                    res.activityInfo.name));

                    cropOptions.add(co);
                }

                CropOptionAdapter adapter = new CropOptionAdapter(
                        getApplicationContext(), cropOptions);

                AlertDialog.Builder builder = new AlertDialog.Builder(this);
                builder.setTitle("Choose Crop App");
                builder.setAdapter(adapter,
                        new DialogInterface.OnClickListener() {
                            public void onClick(DialogInterface dialog, int item) {
                                startActivityForResult(
                                        cropOptions.get(item).appIntent,
                                        CROP_FROM_CAMERA);
                            }
                        });

                builder.setOnCancelListener(new DialogInterface.OnCancelListener() {
                    @Override
                    public void onCancel(DialogInterface dialog) {

                        if (mImageCaptureUri != null) {
                            getContentResolver().delete(mImageCaptureUri, null,
                                    null);
                            mImageCaptureUri = null;
                        }
                    }
                });

                AlertDialog alert = builder.create();

                alert.show();
            }
        }
    }
}

A: After spending hours on this issue i finally make it work by Below Way if some one is having this problem in future.
public class MainActivity extends Activity {
    private Uri mImageCaptureUri;
    private ImageView mImageView;

    private static final int PICK_FROM_CAMERA = 1;
    private static final int CROP_FROM_CAMERA = 2;
    private static final int PICK_FROM_FILE = 3;

    private String selectedImagePath = "";
    boolean GallaryPhotoSelected = false;

    public static String Finalmedia = "";

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        setContentView(R.layout.main);

        final String[] items = new String[] { "Take from camera",
                "Select from gallery" };
        ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,
                android.R.layout.select_dialog_item, items);
        AlertDialog.Builder builder = new AlertDialog.Builder(this);

        builder.setTitle("Select Image");
        builder.setAdapter(adapter, new DialogInterface.OnClickListener() {
            public void onClick(DialogInterface dialog, int item) { // pick from
                                                                    // camera
                if (item == 0) {
                    String storageState = Environment.getExternalStorageState();

                    if (storageState.equals(Environment.MEDIA_MOUNTED)) {
                        Intent intent = new Intent(
                                MediaStore.ACTION_IMAGE_CAPTURE);
                        // intent.putExtra(android.provider.MediaStore.EXTRA_OUTPUT,
                        // mImageCaptureUri);
                        // if (hasImageCaptureBug()) {

                        String path = Environment.getExternalStorageDirectory()
                                .getName()
                                + File.separatorChar
                                + System.currentTimeMillis() + ".jpg";
                        File file = new File(path);
                        // mImageCaptureUri = Uri.fromFile(new File(
                        // Environment.getExternalStorageDirectory(),
                        // "tmp_avatar_"
                        // + String.valueOf(System
                        // .currentTimeMillis())
                        // + ".jpg"));
                        Log.i("TAG", "Final  path" + path);
                        try {
                            if (file.exists() == false) {
                                file.getParentFile().mkdirs();
                                file.createNewFile();
                            }

                        } catch (IOException e) {
                            Log.e("TAG", "Could not create file.", e);
                        }
                        mImageCaptureUri = Uri.fromFile(file);
                        intent.putExtra(
                                android.provider.MediaStore.EXTRA_OUTPUT,
                                mImageCaptureUri);
                        // } else {
                        // intent.putExtra(
                        // android.provider.MediaStore.EXTRA_OUTPUT,
                        // android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
                        // }

                        try {
                            // intent.putExtra("return-data", true);
                            startActivityForResult(intent, PICK_FROM_CAMERA);
                        } catch (ActivityNotFoundException e) {
                            e.printStackTrace();
                        }
                    } else {
                        new AlertDialog.Builder(MainActivity.this)
                                .setMessage(
                                        "External Storeage (SD Card) is required.\n\nCurrent state: "
                                                + storageState)
                                .setCancelable(true).create().show();
                    }

                } else { // pick from file
                    Intent intent = new Intent();

                    intent.setType("image/*");
                    intent.setAction(Intent.ACTION_GET_CONTENT);

                    startActivityForResult(Intent.createChooser(intent,
                            "Complete action using"), PICK_FROM_FILE);
                }
            }
        });

        final AlertDialog dialog = builder.create();

        Button button = (Button) findViewById(R.id.btn_crop);
        mImageView = (ImageView) findViewById(R.id.iv_photo);

        button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                dialog.show();
            }
        });
    }

    public boolean hasImageCaptureBug() {

        // list of known devices that have the bug
        ArrayList<String> devices = new ArrayList<String>();
        devices.add("android-devphone1/dream_devphone/dream");
        devices.add("generic/sdk/generic");
        devices.add("vodafone/vfpioneer/sapphire");
        devices.add("tmobile/kila/dream");
        devices.add("verizon/voles/sholes");
        devices.add("google_ion/google_ion/sapphire");

        return devices.contains(android.os.Build.BRAND + "/"
                + android.os.Build.PRODUCT + "/" + android.os.Build.DEVICE);

    }

    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        if (resultCode != RESULT_OK)
            return;

        switch (requestCode) {
        case PICK_FROM_CAMERA:
            Log.i("TAG", "Inside PICK_FROM_CAMERA");
            // mImageCaptureUri = data.getData();
            // Bitmap bm1 = (Bitmap) data.getExtras().get("data");
            // mImageView.setImageBitmap(bm1);
            // Bundle extras1 = data.getExtras();
            // Bitmap bm1 = (Bitmap) extras1.get("data");
            // mImageView.setImageBitmap(bm1);

            /*
             * try { if (hasImageCaptureBug()) { Log.i("TAG", "Inside Bug");
             * selectedImagePath = String.valueOf(System .currentTimeMillis()) +
             * ".jpg"; File fi = new File(
             * Environment.getExternalStorageDirectory(), selectedImagePath);
             * try { mImageCaptureUri = Uri
             * .parse(android.provider.MediaStore.Images.Media
             * .insertImage(getContentResolver(), fi.getAbsolutePath(), null,
             * null)); if (!fi.delete()) { Log.i("logMarker",
             * "Failed to delete " + fi); } } catch (FileNotFoundException e) {
             * e.printStackTrace(); } } else { mImageCaptureUri =
             * data.getData(); } } catch (Exception e) { Log.i("TAG",
             * "Inside Bug"); selectedImagePath =
             * String.valueOf(System.currentTimeMillis()) + ".jpg"; File fi =
             * new File(Environment.getExternalStorageDirectory(),
             * selectedImagePath); try { mImageCaptureUri = Uri
             * .parse(android.provider.MediaStore.Images.Media
             * .insertImage(getContentResolver(), fi.getAbsolutePath(), null,
             * null)); if (!fi.delete()) { Log.i("logMarker",
             * "Failed to delete " + fi); } } catch (FileNotFoundException e1) {
             * e1.printStackTrace(); } }
             */

            String path = mImageCaptureUri.getPath();
            Log.i("TAG",
                    "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!After capture path "
                            + path);

            doCrop();

            break;

        case PICK_FROM_FILE:
            mImageCaptureUri = data.getData();
            Log.i("TAG",
                    "After Crop mImageCaptureUri " + mImageCaptureUri.getPath());
            GallaryPhotoSelected = true;
            doCrop();

            break;

        case CROP_FROM_CAMERA:
            Bundle extras = data.getExtras();

            selectedImagePath = mImageCaptureUri.getPath();

            Log.i("TAG", "After Crop selectedImagePath " + selectedImagePath);

            if (GallaryPhotoSelected) {
                selectedImagePath = getRealPathFromURI(mImageCaptureUri);
                Log.i("TAG", "Absolute Path " + selectedImagePath);
                GallaryPhotoSelected = true;
            }

            Finalmedia = selectedImagePath;

            if (extras != null) {
                // Bitmap photo = extras.getParcelable("data");
                Log.i("TAG", "Inside Extra " + selectedImagePath);
                Bitmap photo = (Bitmap) extras.get("data");

                selectedImagePath = String.valueOf(System.currentTimeMillis())
                        + ".jpg";

                Log.i("TAG", "new selectedImagePath before file "
                        + selectedImagePath);

                File file = new File(Environment.getExternalStorageDirectory(),
                        selectedImagePath);

                try {
                    file.createNewFile();
                    FileOutputStream fos = new FileOutputStream(file);
                    photo.compress(Bitmap.CompressFormat.PNG, 95, fos);
                } catch (IOException e) {
                    // TODO Auto-generated catch block
                    Toast.makeText(this,
                            "Sorry, Camera Crashed-Please Report as Crash A.",
                            Toast.LENGTH_LONG).show();
                }

                selectedImagePath = Environment.getExternalStorageDirectory()
                        + "/" + selectedImagePath;
                Log.i("TAG", "After File Created  " + selectedImagePath);

                Bitmap bm = decodeFile(selectedImagePath);
                mImageView.setImageBitmap(bm);
            }

            /*
             * File f = new File(mImageCaptureUri.getPath());
             *
             * if (f.exists()) f.delete();
             */

            break;

        }
    }

    public static Bitmap decodeFile(String path) {
        int orientation;
        try {
            if (path == null) {
                return null;
            }
            // decode image size
            BitmapFactory.Options o = new BitmapFactory.Options();
            o.inJustDecodeBounds = true;
            // Find the correct scale value. It should be the power of 2.
            final int REQUIRED_SIZE = 70;
            int width_tmp = o.outWidth, height_tmp = o.outHeight;
            int scale = 1;
            // while (true) {
            // if (width_tmp / 2 < REQUIRED_SIZE
            // || height_tmp / 2 < REQUIRED_SIZE)
            // break;
            // width_tmp /= 2;
            // height_tmp /= 2;
            // scale++;
            // }
            // decode with inSampleSize
            BitmapFactory.Options o2 = new BitmapFactory.Options();
            o2.inSampleSize = scale;
            Bitmap bm = BitmapFactory.decodeFile(path, o2);
            Bitmap bitmap = bm;

            ExifInterface exif = new ExifInterface(path);

            orientation = exif
                    .getAttributeInt(ExifInterface.TAG_ORIENTATION, 1);

            Log.e("ExifInteface .........", "rotation =" + orientation);

            // exif.setAttribute(ExifInterface.ORIENTATION_ROTATE_90, 90);

            Log.e("orientation", "" + orientation);
            Matrix m = new Matrix();

            if ((orientation == ExifInterface.ORIENTATION_ROTATE_180)) {
                m.postRotate(180);
                // m.postScale((float) bm.getWidth(), (float) bm.getHeight());
                // if(m.preRotate(90)){
                Log.e("in orientation", "" + orientation);
                bitmap = Bitmap.createBitmap(bm, 0, 0, bm.getWidth(),
                        bm.getHeight(), m, true);
                return bitmap;
            } else if (orientation == ExifInterface.ORIENTATION_ROTATE_90) {
                m.postRotate(90);
                Log.e("in orientation", "" + orientation);
                bitmap = Bitmap.createBitmap(bm, 0, 0, bm.getWidth(),
                        bm.getHeight(), m, true);
                return bitmap;
            } else if (orientation == ExifInterface.ORIENTATION_ROTATE_270) {
                m.postRotate(270);
                Log.e("in orientation", "" + orientation);
                bitmap = Bitmap.createBitmap(bm, 0, 0, bm.getWidth(),
                        bm.getHeight(), m, true);
                return bitmap;
            }
            return bitmap;
        } catch (Exception e) {
            return null;
        }

    }

    public String getRealPathFromURI(Uri contentUri) {
        String[] proj = { MediaStore.Images.Media.DATA };
        Cursor cursor = managedQuery(contentUri, proj, null, null, null);
        int column_index = cursor
                .getColumnIndexOrThrow(MediaStore.Images.Media.DATA);
        cursor.moveToFirst();
        return cursor.getString(column_index);
    }

    private void doCrop() {
        final ArrayList<CropOption> cropOptions = new ArrayList<CropOption>();

        Intent intent = new Intent("com.android.camera.action.CROP");
        intent.setType("image/*");

        List<ResolveInfo> list = getPackageManager().queryIntentActivities(
                intent, 0);

        int size = list.size();

        if (size == 0) {
            Toast.makeText(this, "Can not find image crop app",
                    Toast.LENGTH_SHORT).show();

            return;
        } else {

            intent.setData(mImageCaptureUri);
            intent.setClassName("com.android.camera",
                    "com.android.camera.CropImage");
            intent.putExtra("outputX", 100);
            intent.putExtra("outputY", 100);
            intent.putExtra("aspectX", 1);
            intent.putExtra("aspectY", 1);
            intent.putExtra("scale", true);
            intent.putExtra("return-data", true);
            // startActivityForResult(intent, CROP_FROM_CAMERA);

            if (size == 1) {
                Intent i = new Intent(intent);
                ResolveInfo res = list.get(0);

                i.setComponent(new ComponentName(res.activityInfo.packageName,
                        res.activityInfo.name));

                startActivityForResult(i, CROP_FROM_CAMERA);
            } else {
                for (ResolveInfo res : list) {
                    final CropOption co = new CropOption();

                    co.title = getPackageManager().getApplicationLabel(
                            res.activityInfo.applicationInfo);
                    co.icon = getPackageManager().getApplicationIcon(
                            res.activityInfo.applicationInfo);
                    co.appIntent = new Intent(intent);

                    co.appIntent
                            .setComponent(new ComponentName(
                                    res.activityInfo.packageName,
                                    res.activityInfo.name));

                    cropOptions.add(co);
                }

                CropOptionAdapter adapter = new CropOptionAdapter(
                        getApplicationContext(), cropOptions);

                AlertDialog.Builder builder = new AlertDialog.Builder(this);
                builder.setTitle("Choose Crop App");
                builder.setAdapter(adapter,
                        new DialogInterface.OnClickListener() {
                            public void onClick(DialogInterface dialog, int item) {
                                startActivityForResult(
                                        cropOptions.get(item).appIntent,
                                        CROP_FROM_CAMERA);
                            }
                        });

                builder.setOnCancelListener(new DialogInterface.OnCancelListener() {
                    @Override
                    public void onCancel(DialogInterface dialog) {

                        if (mImageCaptureUri != null) {
                            getContentResolver().delete(mImageCaptureUri, null,
                                    null);
                            mImageCaptureUri = null;
                        }
                    }
                });

                AlertDialog alert = builder.create();

                alert.show();
            }
        }
    }
}


Philanthropy of any sort is to be encouraged and celebrated, but when it is married to scale, its impact increases manifold. The Akshaya Patra Foundation commemorating its 3-billionth meal, on Monday at Mathura with prime minister Narendra Modi present, is one such example of the societal impact of philanthropy-with-scale. What began as feeding children of just five schools in Bangalore—the school authorities thought it was a one-off like many people do on the birth or death anniversary of a loved one—in 2000 grew impressively, and became an integral part of the government's mid-day-meal scheme. Today, Akshaya Patra feeds 326.5 million meals (in FY18) through 37 kitchens and the plan is to raise this threefold by 2025; the 1.75 million children are spread across 15,786 schools in 12 states. And, apart from the children, Akshaya Patra feeds the beggars' colony in Bangalore, widows in Vrindaban, and it used to feed prisoners in the Bangalore jail, some 50,000 people every day during the Nepal earthquake in 2013-14 and 10,000 people every day during the Chennai floods in 2015. There are even mobile kitchens to feed 5,000-7,000 people every day during the Kumbh Mela, the NTR canteens in Andhra Pradesh feed 60,000 people at just Rs 5 per meal and 2,000 homeless are even fed every day outside the London School of Economics in the UK. The model is a mix of government subsidy—Akshaya Patra gets wheat and rice free from the Centre and some states pitch in with money—and donations; in FY18, government support worked out to Rs 204.5 crore as compared to Rs 252.6 crore of donations.
While states like Tamil Nadu have a long history of the government providing heavily subsidised meals going back to Kamaraj and MGR, what makes Akshaya Patra different is the sheer scale of operations and automation; to put the Akshaya Patra numbers in context, the RSS runs over 17,000 schools across the country with over 2.2 million children studying there. Because of its scale, Akshaya Patra has been able to automate its kitchens and put in place almost corporate-style standard operating procedures—one SOP is that the food has to be cooked at 90 degrees and be served to the kids in their schools at 62-65 degrees. The automation ensures not just volume and speed, but also hygiene, since there is very little human intervention—one automated cauldron of rice cooks enough for 1,000 children in 15 minutes, sambhar for 6,000 kids in 90 minutes and the roti-maker churns out 40,000 rotis per hour.
While Akshaya Patra is even looking at running schools and other forms of educational programmes in the future, its NTR-canteens offer a glimpse into how governments can shape their welfare programmes; the state government gives Akshaya Patra Rs 73 per day for three meals a day, so if some other government wants, such canteens can be a good way to ensure that no one in the state goes to bed hungry. A reasonable split between the Centre and the state and CSR-funding should make it affordable. Indeed, a welcome addition to this is the kind of subsidised insurance-based social security—like Ayushman Bharat insurance for medical treatment and Pradhan Mantri Suraksha Bima Yojana (PMSBY) and Pradhan Mantri Jeevan Jyoti Bima Yojana (PMJJBY) for accident and life insurance, respectively—being done by the Modi government; while 13.48 crore people have bought the accident policy, 5.33 crore have bought the life insurance one. With great scale of the type Akshaya Patra has for delivering freshly-cooked meals, and Aadhaar-based solutions to prevent theft and to deliver benefits more efficiently, India's social security is poised for a dramatic leap forward.
Source: FINANCIAL EXPRESS dated February 9, 2019.


text:
Microsoft Details Windows 8.1 Features
Microsoft will add a huge array of new features designed to let users customize their devices with Windows 8.1, the company's upcoming update for devices running Windows 8.
The features, which were detailed today on Blogging Windows¸ encompass practically the entire user experience of Windows 8 and seem to be designed to aim right at the issues that users have voiced concerns about since the operating system debuted last fall.
The updated Start Screen in Windows 8.1
For starters, Microsoft has now confirmed that the Start button will be returning in Windows 8.1, finally ending months of speculation that it would restore the button to its position on the taskbar. Microsoft seems to have removed the Start button in Windows 8 to encourage users to make use of the operating system's hot corners and every device's hardware Windows key.
Read: Reports- Boot to Desktop, Start Button on the way in Windows 8.1
Notably, the company will not be restoring the Start menu as it was in Windows 7. Instead the company will still require users to see the new Start screen, though they will have the option to forgo the screen's Live Tile view and opt for just a list of their applications.
Microsoft will also address the lack of personalization in Windows 8 with this update as well. Users will be able to create slideshows that appear on their device's lock screen. As rumored earlier this week, Microsoft will allow users to specify a background for their Start Screen and Desktop, which the company thinks will create a "greater sense of unity" for both environments. It'll also introduce many tweaks designed to make Windows 8.1 easier for use with a mouse and keyboard.
Read: Microsoft Confirms Windows 8.1 is a Free Update to Windows 8
Live Tiles will get two more sizes: a double size tile and a smaller size that only shows the app's icon. It's also introducing some changes to the way users categorize and resize those tiles.
Microsoft will introduce huge changes to the way the Search Charm, the operating systems universal search system, works. For starters this feature will now be able to search the files that are stored on a user's SkyDrive cloud storage area.
It will completely integrate Bing search into the search charm as well, negating the use for a native Bing application and positioning its search engine against rivals. The move isn't totally unheard of for Microsoft, it previously did the same thing with Windows Phone 8 and Windows Phone 7.
SkyDrive will get a boost from direct integration into Windows 8.1. Users will no longer need to install the desktop version of the SkyDrive application, instead Microsoft seems to have built syncing into the operating system, and users will be able manage how much SkyDrive storage they have or purchase more from the Settings area. On the topic of settings, Microsoft has moved more settings into the settings area so that users will have even less reasons to use the Desktop area's Control Panel.
The new multitasking options coming to Windows 8, in Windows 8.1
The company didn't share many screenshots of any of the new applications it plans to make available in Windows 8, however Movie Moments, a video editing tool, has already leaked. Microsoft did mention that it plans to release a completely redesigned Music application, a new Windows Store and a Photo app with editing tools. Microsoft says it will reveal more about them in posts down the road.
Other features will include:
Application updates will now install themselves in the background of Windows 8.1, though the operating system will still alert users to their presence.
Internet Explorer 11 will be included in the operating system and allow users to open more than one Internet Explorer instance at a time, allowing for better multitasking.
Users will be able to use Snap to split the applications they are working on to their heart's desire. Currently, the Snap feature forces users to have one application take up 70% of the screen while a second application takes up the rest.
Users will be able to have the Start Screen stay on one monitor while applications work on another. Users will also be able to open Metro-style applications on up to three monitors at one time.
Users can now take pictures with Windows devices directly from that device's lock screen.
Microsoft says it will have more to talk about during next week's TechEd North America conference. The company has already announced that it will make Windows 8.1 available to users sometime later in the year. A public preview of the update will be made available to users during Microsoft's BUILD conference, which starts June 26th.
Related Topics:MicrosoftWindowsWindows 8Windows 8.1Windows RT
scottbomb
The start menu is what we want and MS continues to ignore us. Linux with XFCE or KDE is getting more and more attractive as replacements to Windows.
blinkdt
No, actually, we do NOT want the traditional, cumbersome, click-click-click-click "there it is" Start menu. The ability to completely customize the Start screen–a la my phone and xBox–is really great. Please, join the other tribesman, let me know how that works for you.
Red Dead Redemption 2: Which Edition to Buy?


Prepare early. Info is the key. Maintain a tab of your key result areas [KRAs] and examine monthly. It is a great idea to pin it up somewhere so you can view it. Your boss isn't likely to recall conversations or verbal confirmations. If any deviation is taking place remember to maintain a document by shooting off an email. A debate is the very last thing you need at the time of that appraisal meeting. If your KRAs for this financial year are being fixed or are already repaired please go through them in detail. Check if your performance is conditional on something. If so, get it included or send a note in writing pointing this out.
Attempt to read up on your area of expertise. There are many online courses on offer now. Take up something which will add value to what you're doing. If you improve your knowledge soon you will have people around you asking for your view. Become the local expert, it can do you a lot of good on your career development.
It is also a choice that ought to never be deferred if it is needed. The last thing you need is a frog in the gastrointestinal tract. If you are good at what you are doing, then there are companies out there searching for people just like you. If you're unhappy with the company you are working in and if your contribution isn't being recognized go ahead and quit. If you are a disgruntled employee it will show on your job output and mindset. It turns into a vicious cycle and you end up doing injustice to yourself and your employer. Sticking with an employer is perfect if your move the corporate ladder is ensured.
Reasons for job jumping can be numerous, the most common being higher pay. Do not hop jobs for frivolous reasons like a better designation or even more take home pay. Do some analysis and ask around before you jump. See expansion prospects, training and how the business views promotion from within for senior posts.If your current organization gives you ample opportunity to grow and learn varied skills it's much better to stay with the organization. Ask yourself if you are doing exactly the identical job you were doing for the past several years, if the answer is yes then it might be time for you to stop and look for opportunities to widen your skill set. Hard work is recommended but do not sacrifice yourself at the corporate altar. Look after your health.
What goes around comes around. I guess at a very competitive the ubiquitous knife at the back is the most feared weapon. It's ideal to concentrate on your job and give results. If you get into office politics, soon a smarter guy will come around and you might end up being the victim. If you keep outside you'll be ignored and you've got more time to show your mettle on the job. If you are the goal, unwind, losing your cool is only likely to make the situation worse. Take it in your stride and speak it out, resolve it. If you are to blame, an apology may do wonders. Do not meddle in fights of feuding colleagues. Do not take sides. Let them resolve it themselves.
Maintaining knowledge to yourself will not make you a much better individual. If you feel that the best plan is to become indispensable then you're in for a big surprise. Nobody is crucial. Period. If you are a division or a project head ask yourself – if I depart tomorrow, will things operate smoothly? If the answer is yes, then you are really successful. It shows you have put systems in place and you also run your division/project well. If on the other hand you think there will be chaos then you are holding things too near your torso. The ideal way to learn is to teach others what you understand.
Gadgets, office gossip, social media, Internet, blogging, writing columns are all time killers. Keep these from eating your time away at work. Keep your workplace life and social life different. You will find that you're ready to finish your work early. It's true that you should have some pleasure in office but be aware of the time that you invest on it. Think twice before you dedicate a deadline for a job. Give notice beforehand if there's a delay. If there's a problem, nip it in the bud; go to your boss with a solution. Just a little bit of honesty can save yourself time and energy for all concerned. Do not think that the issue will get solved by itself.
Your career is the fountain of your own wealth. Manage it sensibly. There are many more variables that go into making a successful and satisfying career. If you have any pointers, please feel free to contribute.
The writer functions as the Nation Head for AGEM India Branch, the overseas branch office of the Euro 32 Million Spanish firm AGEM S.A.. He is in charge of their Indian operations and primarily engaged in sourcing of goods from India. He is also Consultant, International Business Development for QualiMed Systems, a quick upcoming medical equipment start-up. His curiosity about investment began when his father introduced him to the stock markets in the early nineties from the pre-Harshad Mehta era. In addition, he writes for the investment pillar"Money Matters".


text:
More on Yale and Peru
On Sunday, Peru's state news agency reported that Peruvian researchers have said Yale University researchers (i.e. Hiram Bingham) took more than 40,000 objects from Machu Picchu in the early part of the last century. This, the Peruvian news agency claimed, is 10 times more than the original estimate. Reuters has a summary in English.
Hernan Garrido Lecca released the inventory results to the state news agency. A team from Peru's National Institute of Culture traveled to Yale in March to take an inventory of the objects at the University. Part of the discrepancy here may involve how these objects are accounted. If a ceramic object is in 15 pieces for example, does it qualify as 1 object or 15? I'm not sure of the answer to that question, perhaps there is a standard in the museum community? This may account for the discrepancy, rather than any bad faith on Yale's part.
Some may remember Yale and Peru had a tentative agreement to settle the disposition of these objects, which resulted in a Memorandum of understanding back in September. That agreement appears to have been a good bargain for both parties.
Peru would receive title to the objects, many of the research pieces would remain in Connecticut under a 99-year lease, there would be an international traveling exhibitions, and finally Yale would help build a museum and research center in Cuzco. Such an institution would seem to be badly needed, as there are indications the current museum near the Aguas Calientes train station is not fit for purpose:
The doors were open to the air, which was moist from the nearby river, and the sole official was a caretaker who sold tickets and then exited the building. On display in the attractive (if unguarded) museum are the finds that Peruvian archaeologists have made at Machu Picchu in the years since Bingham's excavations.
In February, former first lady of Peru Eliane Karp-Toledo had harsh words for the Memorandum of Understanding and for Yale University. Despite what would seem to be a very good agreement for both sides, Karp-Toledo was very critical of Yale University, and indeed Hiram Bingham III who discovered the objects. She argued the objects were only to be taken from Peru for 12 months, and that legal title to all the objects must be returned to Peru. She claimed "Yale continues to deny Peru the right to its cultural patrimony, something Peru has demanded since 1920."
The repatriation claims are often tied to colonial mistreatment, and are often closely aligned with Indigenous-rights movements. Those may be good things, however in this case I am not sure what the current leaders of Peru would want to do differently or would seek. Yale has, it would appear, a very secure interest in the objects; and they are certainly not under any obligation to return them any time soon. By increasing the claims that Yale University has mistreated Peruvian heritage, I wonder if perhaps Peru may risk losing the bargaining chips which were gained in the 2007 MoU.
Author Derek FinchamPosted on April 16, 2008 Categories RepatriationTags Machu Picchu, Peru, Yale University
Previous Previous post: The Limited Effectiveness of the Art Loss Register
Next Next post: "…no more archeology than…collecting Indian arrowheads"


text:
Q: Theory behind Wolfenstein-style 3D rendering I'm currently working on a project about 3D rendering, and I'm trying to make simplistic program that can display a simple 3D room (static shading, no player movement, only rotation) with pygame
So far I've worked through the theory:

*

*Start with a list of coordinates for the X and Z of each "Node"

*Nodes are kept in an order which forms a closed loop, so that a pair of nodes will form either side of a wall

*The height of the wall is determined when it is rendered, being relative to distance from the camera

*Walls are rendered using painter's algorithm, so closer objects are drawn on top of further ones

*For shading "fake contrast", which brightens/darkens walls based on the gradient between it's two nodes

While it seems simple enough, the process behind translating the 3D coordinates into 2D points on the screen is proving the difficult for me to understand.
Googling this topic has so far only yeilded these equations:
screenX = (worldX/worldZ)
screenY = (worldY/worldZ)
Which seem flawed to me, as you would get a divide by zero error if any Z coordinate is 0.
So if anyone could help explain this, I'd be really greatful.

A: Well the
screenX = (worldX/worldZ)
screenY = (worldY/worldZ)

is not the whole stuff that is just the perspective division by z and it is not meant for DOOM or Wolfenstein techniques.
Well in Doom there is only single angle of viewing (you can turn left/right but cannot look up/down only duck or jump which is not the same). So we need to know our player position and direction px,py,pz,pangle. The z is needed only if you want to implement also z axis movement/looking...
If you are looking in a straight line (Red) all the object that cross that line in the 3D are projected to single x coordinate in the player screen...

So if we are looking at some direction (red) any object/point crossing/touching this red line will be place at the center of screen (in x axis). What is left from it will be rendered on the left and similarly whats on right will be rendered on the right too...
With perspective we need to define how large viewing angle we got...

This limits our view so any point touches the green line will be projected on the edge of view (in x axis). From this we can compute screen x coordinate sx of any point (x,y,z) directly:
// angle of point relative to player direction
sx = point_ang - pangle;
if (sx<-M_PI) sx+=2.0*M_PI;
if (sx>+M_PI) sx-=2.0*M_PI;
// scale to pixels
sx = screen_size_x/2 + sx*screen_size_x/FOVx

where screen_size_x is resolution of our view area and point ang is angle of point x,y,z relative to origin px,py,pz. You can compute it like this:
point_ang = atan2(y-py,x-px)

but if you truly do a DOOM ray-casting then you already got this angle.
Now we need to compute the screen y coordinate sy which is dependent on the distance from player and wall size. We can exploit triangle similarity.

so:
sy = screen_size_y/2 (+/-) wall_height*focal_length/distance

Where focal length is the distance at which wall with 100% height will cover exactly the whole screen in y axis. As you can see we dividing by distance which might be zero. Such state must be avoided so you need to make sure your rays will be evaluated at the next cell if standing directly on cell boundary.  Also we need to select the focal length so square wall will be projected as square.
Here a piece of code from mine Doom engine (putted all together):
double divide(double x,double y)
    {
    if ((y>=-1e-30)&&(y<=+1e-30)) return 0.0;
    return x/y;
    }
bool Doom3D::cell2screen(int &sx,int &sy,double x,double y,double z)
    {
    double a,l;
    // x,y relative to player
    x-=plrx;
    y-=plry;
    // convert z from [cell] to units
    z*=_Doom3D_cell_size;
    // angle -> sx
    a=atan2(y,x)-plra;
    if (a<-pi) a+=pi2;
    if (a>+pi) a-=pi2;
    sx=double(sxs2)*(1.0+(2.0*a/view_ang));
    // perpendicular distance -> sy
    l=sqrt((x*x)+(y*y))*cos(a);
    sy=sys2+divide((double(plrz+_Doom3D_cell_size)-z-z)*wall,l);
    // in front of player?
    return (fabs(a)<=0.5*pi);
    }

where:
_Doom3D_cell_size=100; // [units] cell cube size
view_ang=60.0*deg;     // FOVx
focus=0.25;            // [cells] view focal length (uncorrected)
wall=double(sxs)*(1.25+(0.288*a)+(2.04*a*a))*focus/double(_Doom3D_cell_size); // [px] projected wall size ratio size = height*wall/distance
sxs,sys = screen resolution
sxs2,sys2 = screen half resolution
pi=M_PI, pi2=2.0*M_PI

Do not forget to use perpendicular distances (multiplied by cos(a) as I did) otherwise serious fish-eye effect will occur. For more info see:

*

*Ray Casting with different height size