text:
To summarize, since the software crisis of the 1970s the industry has gone through far-reaching technical, economic and organizational changes. Work organization has evolved from the Tayloristic approach of the 1970s to a rather more flexible management style in the 1980s. However these changes have not been able to counter the continuing desynchronization of progress in hardware and software. The occupational structures in the industry remain fluid. The sexual division of labour in computing jobs does not seem to have crystallized, although women do tend to be clustered at the base of the hierarchic pyramid. Although they face difficulties in building their career paths, there seems to be room for upward mobility into more skilled occupations and development work. On the other hand, even in firms studied, which emphasize job stability, a trend towards diversifying work relations can already be foreseen. The growth in the outsourcing of less skilled activities, which are being turned into casual work, is likely to seriously jeopardize this window of career advancement for women.
With regard to software development work, at least in the short term, women may continue to have only a minor share of total employment. There are indications of gender polarization of the work, with men tending to be clustered closer to the machinery, where technical expertise associated with mainframes has been assigned a high social prestige. Small processor platforms (e.g. microcomputers, workstations) have so far had lower organizational prestige. These, and activities involving close interaction with users, seem to offer more conducive environments for women. Since the epoch of the powerful centralized mainframes is passing, and software is moving further from the machinery towards the modelling of problem-solving in close contact with users, women may well become core agents in the technical and social changes necessary for the further diffusion of information technologies. Whether this will have a significant effect on the overall profile of women's employment in developing countries will depend also on factors affecting the viability of indigenous software activities and, increasingly, deploying an internationally competitive software and computer services sector.
Field work methodology
This appendix briefly describes the methodology followed in the empirical investigation of the employment opportunities for women in software development work.
Software is a complex subject in both technological and economic terms, and an analysis of software-related occupations is even more difficult. In Brazil, the scarcity of data is a critical issue. No aggregate statistics about the computer services and software sector are available, and software-related occupations are not even recorded in the official statistics. Moreover, these occupations tend to be spread throughout the economy.
Because of lack of generalized data, and limitations in time and resources to undertake an extensive survey, it was decided to carry out case studies in large Brazilian user companies. Three large public firms granted access to their employment data and gave permission for primary data gathering through qualitative interviews with women working as software development staff. All information was to be kept strictly confidential.
Table 10.5 Basic features of the women interviewed
Year of admission
Firm ALPHA
SC Application analyst D
Economics, M.Sc Computer Science.
VM Application analyst D
IS Application analyst D
AM Application analyst B
ML Application analyst B
Diploma Computer Science
TC Application analyst A
MA Application analyst D
AP Computer programmer C
Firm BETA
AC EDP analyst III
Mathematics, M. Sc Computer Science.
EC EDP analyst III
Physics, M. Sc. Production Engineer
CL EDP analyst III
Telecommunications Engineer
VG EDP analyst II
AL EDP analyst II
Electric Engineer
KT EDP analyst I
Diploma Computer Science Business Administration
Firm GAMMA
EL EDP documenter
DE Computer programmer
LU EDP analyst
Note: EDP (electronic data processing) covers a broad range of job categories.
Seventeen women, all working in software-related activities, were inter viewed using open-ended questionnaire. Each interview lasted two to three hours. They were asked to approach the following subjects:
• To discuss their education and career history, at the technical and managerial levels.
• To express their opinions about segregation at work.
• To relate their difficulties and opportunities in relation to job mobility, internal and external to these companies.
• To discuss the relation between raising a family and following a professional career.
Some basic characteristics of the women interviewed are presented in Table 10.5. It is important to remark that ten of these women have been raising children, and that eight of them have had managerial experiences.
1 For analyses of the software evolution which focus on technological and economic forces see, for instance, Valdez, 1988, who offers a detailed historical approach, and Gaio, 1990, working within a neo-Schumpeterian theoretical framework.
2 OECD, 1984, Annex 2, reproduces a series of these 'stylised' estimates of the reversal of hardware/software cost ratios. These estimates were very popular from the late 1970s to the early 1980s.
3 For an in-depth analysis of the evolution of electronics components see, for instance, Dosi, 1984.
4 The labour process literature tends to claim that, once the gendering of work has been established, it becomes a persistent pattern which is quiescently accepted as a 'natural' sexual division of labour (e.g. Davies, 1979; Milkman, 1987).
5 The available analyses of women's employment in computing occupations tend to focus on data entry work, where women have always predominated. Very little attention has been given to gender patterns in software development jobs' There is some evidence that women have had only a minor portion of these jobs, and some scattered comments in the existing literature.
6 In India, according to Mitter and Pearson, 1992: p. 23, 'There is no overt discrimination in the field of software programming. There is a general consensus among the management that women stand a better chance of receiving a position of seniority in this area than in other fields of science and technology.' In the USA, Johnson, 1990, remarked that a recent survey of 100 corporate human resource directors highlighted systems analysts, managers and programmer analysts as the most promising jobs for women in computing.
7 Although it was not possible to get aggregate data on the question, and course titles are not standardized, in 1989-1991 the proportion of computer science and mathematics graduate degrees awarded to women ranged from 40 to 50 per cent in three respected Brazilian universities.
8 Kraft, 1979, hypothesised that, whilst women pioneered programming as a profession, they were then systematically excluded until its job content had been substantially deskilled to resemble clerical tasks. The vast majority of labour process analyses until the late 1980s and early 1990s concentrated on software development for mainframes. In this field, at least, the validity of Kraft's hypothesis is at least debatable. Firstly, even if we admit that there has been some fragmentation and deskilling, software development remains a science-based and design-intensive activity, with much lower degrees of formalization than industrial production systems. Secondly, although women's participation in this activity remains minor, it is an important source of employment and offers a viable 'window' of opportunities for women to get access to the 'soft' side of technological competence.
9 This section draws heavily on Gaio, 1992.
10 For examples of this quantitative approach, see Katz, 1987, IDC-C&L, 1987 and OECD, 1989.
11 Although the software industry remains fragmented, there is a tendency for revenues to concentrate in a small number of firms, mainly due to a significant level of acquisitions and the remarkable growth rates shown by some cross-industry packages for microcomputers (Katz, 1987). Recently, in the USA, above-average growth rates (about 4 per cent per year) can also be observed in emerging segments such as educational and entertainment packages (the so-called 'edutainment') for the home personal computer market.
12 With regard to Indian software exports, 1987 and 1989 figures and 1993 world market estimates are derived from Schware, 1992, pp. 148, 143, and the 1993 estimates are from Gargan, 1993, p. I . For detailed comparative analyses of the Indian and Brazilian experiences in software see, for instance, Mitter and Pearson, 1992 and Schware, 1992.
13 For studies of the evolution of the Brazilian informatics industry see, for example, Tapia, 1990, Evans, Frischtak and Tigre, 1991, Meyer-Stammer, 1992 and Schmitz and Cassiolato, 1992.
14 The import control scheme established in 1975 was restricted to transactions which involved remittance of payments, so that it had little impact on the intrafirm software transfers between local subsidiaries of MNCs and their parent companies. This was in fact the main channel of imports. In 1986, 74.5 per cent of the products registered in the Registry of Computer Programs were imported and traded by MNCs, while 24.9 per cent were locally developed products. Of the local products, 71.7 per cent were applications solutions.
15 For more details about the local firms exporting software, see Ponde, 1993.
16 For a detailed analysis of firm ALPHA, see Vasquez, 1993. The firm is linked to a federal Government institution, which is responsible for a significant part of the social services provided by the State. ALPHA provides computer services at the national level. In 1992, besides its headquarters in Rio, it had 22 regional data processing centres located in the main state capitals of Brazil. Historically, these regional centres have had very little autonomy, performing only the basic tasks of receiving the original documents from local users and the first phase of data entry.
In 1988, ALPHA started a process of decentralizing its operational capacity, despite considerable resistance from its main office because of the loss of institutional power. In 1992, one of its main positive outcomes was the decentralization of technical support, creating a more conducive environment for closer interaction with local users (e.g. training, hardware installation and maintenance and local software development). Nevertheless, the company still has a largely centralized structure inherited from the 'epoch' of mainframes. The vast majority of their computing and development resources are still located in Rio, including three of its five UNISYS mainframes. In addition, the firm has around 2,000 general-purpose micros. Its data entry is based on about 840 micros. Although it is still processing in a batch mode, ALPHA has a comprehensive telecommunications infrastructure.
17 For a thorough study of the evolution of software in BETA, with an emphasis on the adoption of process innovations, see Duarte Pinto, 1993. The firm has 35 EDP centres spread around Brazil. Its processing capacity consists of 39 mainframes (26 IBM and 13 DEC), 60 superminis and 331 workstations. It has a significant telecommunications infrastructure, including 16 satellite circuits.
18 Software development is usually carried out by teams, in the following, somewhat simplified, phases: analysis of the problem being modelled for computerization, including user needs and constraints, as well as economic and technical feasibility studies; the specification of the system requirements; the design of the system and its components; implementation and testing; and maintenance. This work also involves the preparation of supporting documents such as user's manuals, installation instructions, and procedures for operational activities.
ASSESPRO (1988), PERSSONA Survey, working paper, ASSESPRO, Rio de Janeiro
Braverman, H. (1974), Labor and Monopoly Capital: The Degradation of Work in the Twentieth Century, New York, Monthly Review Press
Brooks Jr, F.P. (1987), 'No Silver Bullet: Essence and Accidents of Software Engineering', Computer, April
Cockburn, C. (1985), Machinery of Dominance - Women, Men and Technical Know-how, London, Pluto Press
Correa, C.M. (1989), The Legal Protection of Software - Implications for Latecomer Strategies in Newly Industrialising Economies (NIEs) and Middle-income Countries (MICs), working paper, Paris, OECD
Davies, M. (1979), 'Woman's Place is at the Typewriter: the Feminization of the Clerical Labour Force', in Z. Eisenstein (ed.) Capital Patriarchy and the Case for Socialist Feminism, London, Monthly Review Press
DEPIN (1991), Panorama do Setor de Informatica, series estatisticas, Brasilia, Vol. 1, No. 1, SCT
Dosi, G. (1984), Technical Change and Industrial Transformation: the Theory and an Application to the Semiconductor Industry, London, MacMillan
Duarte Pinto, P.E. (1993), Um Estudo do Processo de Difus�o de Engenharia de Software: o cave da PETROBRAS, M.Sc. dissertation, Rio de Janeiro, COPPE/UFRJ
Ernst, D. (1981), The Software Market Conditioning Factors and Possible Future Trends - an Analysis Undertaken from a Third World Perspective, Vienna, UNIDO
Evans, P., Frischtak, C. and Tigre, P. (eds) (1991), A Informatica Brasileira em Transic�o: Politica Governamental e Tendencias Internacionais nos Anos 90, Rio de Janeiro, IEI, UFRJ
Friedman, A.L. (1986), Software Industry and Data Processing in the U.S.A.: Work Organisation and Employment Structure, report for the Directorate-General for Employment, Social Affairs and Education, Bristol, Commission of the European Communities
Friedman, A.L. and Cornford, D.S. (1989), Computer Systems Development: History Organisation and implementation, Chichester, Wiley &: Sons
Friedman, A.L. and Greenbaum, J. (1984), 'Wanted: Renaissance People', Data-mation, September
Gaio, F.J. (1990), The Development of Computer Software Technological Capabilities - a Case Study of Brazil, Ph.D. thesis, Brighton, Science Policy Research Unit, University of Sussex
Gaio, F.J. (1992), 'Software Strategies for Developing Countries: Lessons from the International and Brazilian experience', in H. Schmitz and J. Cassiolato (eds), Hi-tech for Industrial Development: Lessons from the Brazilian Experience in Electronics and Automation, London, Routledge
Gargan, E.A. (1993), 'India Booming as a Leader in Software for Computers', New York Times, 29 December
Hoffman, K. (1982), Microelectronics and Industry in the Third World: Policy issues and Research Priorities, working paper, Brighton, SPRU, University of Sussex
IDC-C&L (1987), Computer Services Industry 1986-1996 - a Decade of Opportunity, working paper, London, Department of Trade and Industry
Johnson, M. (1990), 'Women under glass', Computer World, 3 December
Katz, R. (1987), La Industria del Software en Estados Unidos: Structura y Comercializacion del Producto, Buenos Aires, CALAI
Kopetz, H. (1984), Guidelines for Software Production in Developing Countries, Vienna, UNIDO
Kraft. P. (1979), 'The Industrialization of Computer Programming: From Programming to 'Software Production', in A. Zimbalist (ed.) Case Studies on the Labor Process, New York, Monthly Review Press
Lundvall, B.A. (1988), 'Innovation as an Interactive Process: from User-Producer Interaction to the National System of Innovation', in G. Dosi, et al. (eds) Technical Change and Economic Theory, London and New York, Pinter Publishers
Meyer-Stammer, J. (1992), 'The End of Brazil's Informatics Policy', Science and Public Policy, April
Milkman, R. (1987), Gender at Work - The Dynamics of Job Segregation by Sex During World War II, Chicago, University of Illinois Press
Mitter, S. and Pearson, R. (1992), Global Information Processing: The Emergence of Software Services and Data Entry Jobs in Selected Developing Countries, working paper, Geneva, LO
Narasimhan, R. (1984), Guidelines for Software Development in Developing Countries, IS 439, Vienna, UNIDO
O'Connor, D.C. (1985), 'The Computer Industry in the Third World: Some Policy Options and Constraints', World Development, Vol. 13, No. 3, Elmsford, NY
OECD (1984), Software: A New Industry, working paper, No. 17, Paris, OECD
OECD (1989), The Internationalisation of Software and Computer Services, No. 17, Paris, OECD
Ponde, J.L. (1993), Competitividade da Industria de Software. working paper, Campinas, NEIT/IE/UNICAMP
Schmitz, H. and Cassiolato, J. (1992) (eds), Hi-tech for Industrial Development Lessons from the Brazilian Experience in Electronics and Automation, London, Routledge
Schware, R. (1992), 'Software Industry Strategies for Developing Countries: A "Walking on Two Legs" Proposition', World Development, Vol. 20, No.2, Elmsford, NY
SCSS ( 1981), Relatorio da Comiss�o Especial de Software e Servicos, Brasilia, SKI
SKI ( 1986), Diagnostico do Mercado de Software no Pais, working paper, Brasilia, SKI
SKI (1987), Panorama do Setor de Informatica, special edition, Vol. 7, No. 16, Brasilia, SKI
Soares, A. dos S. (1989), A Organiza��o do Trabalho Informatico, MBA dissertation, Sao Paulo, PUC-S.P
Tapia, J.R.B. ( 1990), 'Protecionismo ou Integra��o Competitiva? Os Caminhos da Politica de Informatica Brasileira pare os Anos Noventa', in Table Ronde Internationale Innovations Technologiques et Mutations Industrielles en Amerique Latine: Argentina, Brasil, Mexico e Venezuela, Paris, 12- IS December
Tierney, M. ( 1991), The Formation and Fragmentation of Computing as an Occupation: a Review of Shifting Expertise, Edinburgh PICT working paper No. 25, Edinburgh, Research Centre for Social Sciences, University of Edinburgh
UNIDO Secretariat (1983), Problems of Software in Developing Countries, Vienna, UNIDO
Valdez, M.E.P. (1988). A Gift from Pandora's Box: The Software Crisis. Ph.D. thesis, Edinburgh, University of Edinburgh
Vasquez, C.R. (1993), Evolu��o da Produ��o de Software: Novas Ocupa��es, Oportunidades de Emprego e o Trabalho da Mulher (Estudo do Caso DATAPREV), M.Sc. dissertation, Rio de Janeiro, COPPE/UFRJ


text:
Der Amphitheater-Gletscher ist ein mit Moränenschutt überlagerter Gletscher im ostantarktischen Viktorialand. Im Osten der Royal Society Range fließt er vom Talkessel The Amphitheatre in nördlicher Richtung zum Roaring Valley.

Die Untersuchungsmannschaft der New Zealand Geographical Society benannte ihn im Zuge einer von 1977 bis 1978 dauernden Forschungskampagne in Anlehnung an die Benennung des Talkessels, dessen Form an ein antikes Amphitheater erinnert.

Weblinks
  (englisch)
 Amphitheatre Glacier auf geographic.org (englisch)

Gletscher im Transantarktischen Gebirge
Royal Society Range

redpajama_set_name: RedPajamaWikipedia


text:
Dawn Kelly of The Nourish Spot in Jamaica
webadmin on August 5, 2021
Dawn Kelly has been the owner of The Nourish Spot located in Jamaica since 2017 and has been promoting healthy living through her small business ever since.
Kelly was inspired to open The Nourish Spot when she lost her job in 2015.
"I was home crying for a while because I had never in my life failed," said Kelly. "I went to school early, skipped the 3rd grade, went to college when I was 16 years old, and I graduated from Howard University. I've worked my whole life."
Kelly's business promotes healthy living through smoothies, salads, wraps, and many more other options.
"I was on my own health journey, I walked 10,000 steps everyday, and drank lots of water," added Kelly. "I was replacing bagels and cream cheese with smoothies because as a New Yorker I love my bagels and cream cheese."
The one thing that makes her store unique is that all her food and drink options are customizable "unlike Panera." Not only does Kelly serve the community with healthy options but her own employees are part of other programs like Summer Youth Employment (SYEP) and many other non-profits. One of her employees, Denzel, was an intern at SYEP from the Culinary Program and Kelly after hired him herself.
"I usually hire these young adults and pay them a fair wage after they finish their internships if they show that they're honest, passionate about food, and hospitality," said Kelly. "One thing I am proud of is that in 2020 the City had a Restaurant Relief Program that helped small businesses pay their employees $20 an hour for a few weeks and I got picked.
"They did it again for this year and I was picked again so my employees will be able to get $20 an hour for a few weeks again"
Just recently Queens Borough President Donovan Richards visited The Nourish Spot as part of the "Queens Shop Small" initiative to highlight small businesses in underserved communities. Kelly was granted a citation recognizing what she does as a local small business to uplift the surrounding community, from hiring local young people to opening the shop as a true community space and more.
The Unknown Vet
Most of us entered this summer season intending to make up for the one lost to COVID last year. I wonder how that plan is working out, and suspect that like most years, we never get to do all we plan.
This reminds me of how many Veterans return home to a world where they cannot accomplish all they planned. You see, all of us who enter military service, do so with our own dreams of the things we will learn, the places we will serve in, the contributions we can make, and how we will be transformed. Lastly, we wonder how we will benefit from those experiences. For most of us, it is a privilege and an honor to serve our country in uniform. Despite the many risks, most of us benefit personally in countless ways. However, no one ever suspects that enlisting will lead them to suicide – but for those requiring additional help returning home, it unfortunately does. Additionally, help is not always available, resulting in the tragic loss of 22 Veterans each day. This is the reason The Gold Shield was formed; to get those Veterans in need, what they are entitled to… returning home safely, before it's too late.
As we enter August and begin to fear we are running out of time to enjoy our summer, let us remember those Veterans who are running out of time to live, and what we can do to help them – not only enjoy this last month of summer – but future summers, as we hope to.
The Gold Shield is mobilizing the nation to save the lives of those who protect us. You too can help… Please join The Gold Shield, today… I can't do this alone.
Fans return to local sports bars despite COVID flare-up
Pandemic-related restrictions on indoor gatherings and hours of operation were lifted on bars across New York State at the end of May, and since then staff at local sports pubs say fans have resumed watching games and matches in social settings. Proprietors are hoping they won't be forced into another shutdown.
"People are starting to come out more, but who knows how long it's going to last? I have a feeling we're going to be put in the hole again," said James Munson, co-owner of The Village Saloon on Eliot Avenue in Middle Village. "You definitely noticed the difference when the restrictions were on. People didn't want to go out."
As the NBA and NHL playoffs were pushed later into the summer to accommodate their modified regular season schedules, fans were getting a reprieve from the capacity rules and curfews that made it nearly impossible for fans to gather.
"We packed the place for the Euro Cup, but the NBA Finals wasn't as big for us this year, I think because of the two smaller market teams," said Carlo Fortunato, co-owner of Emblem, a sports bar and beer garden with nearly 20 televisions in Williamsburg. "If the Knicks and the Lakers were in it, I think it would have been different,"
The common trend seen at sports bars is that fans have returned to watch big games, such as the NBA playoffs and major international soccer tournaments, but the after-work ritual of stopping to have a beer and watch a few innings of a baseball game appears to be paused due to the increase of people working from home.
"Baseball is not drawing a big crowd," said Carmine Gangone, owner of Carmine & Sons, a pizzeria and sports bar in Williamsburg. "People are really not packing my bar unless it's a big game. I'm hoping football season brings them in."
Despite a disinterest in the national pastime, bar owners say they have also tried to diversify or tweak little elements of their establishments. Emblem is hosting multiple comedy nights in order to boost traffic on weeknights. Carmine & Sons is featuring a weekly jazz trio on the sidewalk outside their restaurant's entrance.
The Village Saloon, under new management since May 5, focused on improving their menu when they reopened in the space formerly occupied by Mooney's Public House. Still, several sports bar owners say the lifting of COVID-19 restrictions coincided with the time of year when many people are away on vacation.
"The summertime is a tough time to own a bar in Middle Village," Munson said. "A lot of people go away on vacation or for the weekend, and probably more so this year."
Sports bars with a history of showing a particular sport or team, such as New York Islanders hockey or the Ultimate Fighting Championship, saw crowds return as soon as they could.
"My crowd for MMA is back strong, but during the entire pandemic people called us to ask if we were going to show the UFC fight that weekend," Fortunato said. "I had to tell them I wasn't because I had to close by 11 p.m. and pay $1,000 for the fight when I was only allowed half-capacity. It wasn't worth it for me."
While the size of the crowds returning to sports bars has been promising, what's concerning ownership and staff is what happens if the COVID-19 infection rate increases to the point that restrictions on bars and restaurants are reinstated.
Rosann McSorley, whose family owns Katch Astoria, a gastropub and beer garden with 64 televisions and 50 beer taps, is worried she and her staff may be required to ask patrons to wear masks. Katch drew strong crowds for the Islanders run to the NHL semifinals, but has still not returned to its pre-pandemic foot traffic or closing times.
"The mask coming back will be an issue for the bars that do not have outdoor capacity, because people will be concerned," McSorley said. "I think our business is going to drop for sure. If we are asked to check that people have been vaccinated, that will be another issue."
Big Trade Deadline
The 2021 Major League Baseball trade deadline was one of the more eventful and entertaining that I can remember in quite a while.
There was a ton of activity and big names were on the move and both local teams were actively involved in the proceedings.
The Yankees drastically changed the entire feel of their lineup by adding two lefty power bats in Joey Gallo and Anthony Rizzo. When I heard the news about both trades, I was far more enthusiastic regarding the Rizzo move.
It's nothing against Joey Gallo, who will most certainly help the Yankees with his power, on-base prowess and defense, but he strikes out way too much for my liking.
Rizzo fits the Yankees perfectly. He won a World Series with the Cubs, he is one of the toughest hitters to strike out in baseball, and plays Gold Glove-caliber defense at first base.
This weekend, Rizzo was in the middle of everything for the Yankees in their sweep of the Miami Marlins. He hit two big home runs, a game-tying hit on Sunday, and made play after play in the field.
For months it bothered me to no end that the Yankees lacked enough left-handed hitters. I'm glad they have finally changed that.
Both Rizzo and Gallo should be a part of the team beyond 2021, and will be needed in the short term to help pick up the slack for a pitching staff dealing with all sorts of adversity.
The Yankees will need to be a lot better offensively considering Domingo German was just placed on the Injured List and ace Gerrit Cole recently tested positive for COVID-19.
On the other side of town, the Mets may still be in first place in the NL East, but their recent play over the last few weeks signaled a team in need of a spark. Jacob deGrom is out until September, Francisco Lindor is nowhere to be found, and the team has struggled mightily to score runs.
So like the Yankees, the Mets turned to the Chicago Cubs for help and traded for infielder Javier Baez on Friday afternoon.
Baez plays the game with incredible passion and flair. Those attributes should be a positive for a team in serious need of some energy.
Baez will wow you with his power and flashy defense, but he will also frustrate you with the strikeouts and his decision-making at the plate. Much like Joey Gallo, he is not a perfect player, but he fills a major need for the Mets.
In his debut on Saturday night, Baez wasted no time introducing himself to the Citi Field faithful with a critical two-run homer that sparked a much-needed comeback against the Cincinnati Reds.
The Mets have allowed both the Atlanta Braves and Philadelphia Phillies to get right back in the division race, but they are still a team very much in the driver's seat.
They will need a lot more big hits from Baez and others if they are going to find their way to the postseason.
The Yankees and the Mets can only hope that both Anthony Rizzo and Javy Baez can be as productive as their debuts this past weekend.
We'll see if the boys from the north side of Chicago can be the difference in getting the boys from Flushing and the Bronx into October.
You can listen to my podcast "New York, New York" on the Ringer Podcast Network on Spotify & Apple Podcasts every Sunday night and Wednesday & Friday mornings.
Fine-tuning the roster
Summer always brings plenty of chatter as teams in contention look to add pieces to their rosters to get them to October baseball. Meanwhile, NBA and NHL teams use the offseason to try and improve their clubs.
The Mets and Yankees both looked to fine-tune their rosters for postseason pushes. With the Cubs shifting into sell mode, it was the New York teams that split the spoils.
Anthony Rizzo settled in nicely in pinstripes, homering in his first two games as a Yankee. In Queens, Javier Baez crushed his own debut homer, a crucial run in a 5-4 win.
Neither New York team has the easiest path to the postseason. The Yankees sit in third place in what's easily the hardest division in baseball. They may not be able to hunt down the Rays or Red Sox, but they have plenty of time to lock up a Wild Card spot.
Additions like Rizzo and Joey Gallo make the Bombers' offense more lethal.
While in first place, injury issues aren't getting any better for the Mets, especially after Jacob deGrom had a setback in his recovery and will likely remain out until September. The rotation got help as Carlos Carrasco finally made his Mets debut, while also adding Rich Hill and Trevor Williams.
The Amazin's lineup seems to have cooled off, which is a concern given the pitching situation. With the Philles and Braves on their heels, the Mets need to get back into the groove that got them in first and has kept them there for months.
In the NBA, the next generation of stars were drafted, and with it came a surge in offseason trades and signings. The Knicks made quick moves to bring back Derrick Rose after his phenomenal year at the Garden.
The team also brought back Alec Burks and Nerlens Noel, who were great role players last year. The new addition to the Knicks roster is Evan Fourier, signing a four-year deal to add some much-needed offense.
The Nets traded Landry Shamet to Phoenix for Jevon Carter and the 27th pick, adding LSU's Cam Thomas. It is the second straight year that Shamet was traded on draft day.
The Nets also made sure to bring back Blake Griffin on a one-year deal, a key veteran presence on the bench. Brooklyn definitely needs to keep working and adding pieces to contend for a title next year, but they're in a very strong spot.
It's been a busy summer, but will it be enough?

redpajama_set_name: RedPajamaCommonCrawl


Refinishing Hardwood Floors: Should You DIY or Call for a Professional?
Hardwood floors are often warm and beautiful and reflect abundance in a way that other floors cannot. Wood floors can be softer on the feet than other hard floors such as tile or concrete and easier to keep clean than carpet. Hardwood adds an element of elegance to any home and it is surprisingly durable and easy to care for with regular maintenance.
Many people are electing to pull up the carpet or that old linoleum and see what wood lies beneath. Others notice the effects of years of foot traffic, spills, friction and bare spots that can lead to rot or unsightly stains on their already existing wood floors and would like a new-looking floor without replacing.
Refinishing hardwood floors involves taking the floor down to the bare wood by removing all existing coating and then adding a new finish. Note that refinishing hardwood floors differs from re-coating, which is just adding another protective layer to the already existing floor finish.
If it is time to refinish hardwood floors in your home, the first question you may consider is whether this is a do-it-yourself project or best left to a professional. This article explores what is involved in refinishing hardwood floors, the possible differences between DIY and pro, as well as the potential costs.
WHAT STEPS ARE INVOLVED IN REFINISHING HARDWOOD FLOORS?
SHOULD I REFINISH THE FLOORS MYSELF OR HIRE A PROFESSIONAL?
WHAT IS NEEDED FOR DIY?
Refinishing hardwood floors is more than just sanding and refinishing. Here we discuss the necessary and optional steps of screening, sanding, staining, and finishing to eliminate any surprise steps along the way.
Consider an inspection to evaluate the health of your hardwood floors even if you intend to DIY your floors. An expert in refinishing hardwood floors can let you know what type of floor you are dealing with and whether it is thick enough to withstand another refinishing. True hardwood floors can usually withstand a dozen refinishing processes through their lifetime while a floor with a veneer cannot usually be refinished.
Preparation of the area being worked is necessary to ensure an easy process. All furniture and other objects should be relocated to another room. All cracks, outlets, and underneath of doors should be sealed and any fixtures should be covered with tarps and taped to protect them from dust. Screening or sanding produces a lot of dust, so if you DIY be sure to wear a mask and protect other areas of the house by sealing entries.
Screening may be an option for hardwood floors that have some worn polyurethane coating, no wax, and where the wood is still in good shape. This technique, also known as buffing, works by removing the coating without removing any wood. It involves using special non-clogging circular sanding discs with a series of different grits.
Heavy layers of wax and oils will make sanding difficult, if not impossible, to do correctly. It is best to remove these prior to starting.
If any wax is present, if the existing polyurethane is damaged or the wood is stained, sanding is a better option than screening. Sanding involves using a high-quality drum sander to remove all existing coating and a thin layer of the wood itself. Sanding hardwood floors requires great care to not gorge the existing wood or end up with a floor that is too thin.
Filling in is important to allow for a smooth finish. If there are any holes or scratches that are found after sanding, now is when those spots are filled in and then hand sanded. If the floor is severely damaged with holes, deep gouges, or has buckled boards, it must be repaired prior to refinishing.
Following sanding, the entire room must be cleaned to remove all dust particles. Any dust left behind will end up in the finish and change the look of the floor for the worse.
Staining is an optional step for hardwood floor owners who want to change the color or tone of their wood. Once the wood is bare, staining the wood occurs in several applications with resting time and sanding in between.
Finishing the floor is the final step in refinishing hardwood floors, and it is essential for the longevity of hardwood floors as bare wood is left open to rot and damage.
Finishing is the process of applying the coating that will protect the wood. There are three main options to consider when choosing which floor finish is best, but also consider the level of shine desired and best brand to use. It usually needs several coats to ensure longevity.
Polyurethane is the most popular finish possible because of its ease and longevity. There are two options for polyurethane finishes; oil and water based. Oil-based polyurethane is easy to work with allowing for the correction of mistakes along the way. It dries in about 24 hours and will turn an amber color over time.
clear over time allowing the true wood color to show for years. It requires care while applying as it cannot be worked while drying.
Acid cured finish is very tough over time and dries very fast, but it is a two-part process that involves volatile oils. Acid-curing can be dangerous.
Be prepared to leave the home and not risk a spark from even a light switch while drying.
The decision regarding whether to refinish hardwood floors yourself or hire a professional should be considered carefully. Hiring a professional provides expertize and reassurance, but may come at an increased cost. If you are planning to refinish hardwood floors yourself, it helps to know what tools you will need and what risks you are assuming by doing it yourself before you start. Remember, a professional inspection even if DIY is the plan will help inform your choice by letting you know how extensive the project may be.
Hiring a professional to refinish hardwood floors is often the easiest option. Some of the considerations when hiring a professional are listed here.
Gathering all needed supplies ahead of time will make the process easier. Here is a list of needed items, including some detail items you may forget for refinishing hardwood floors.
Many factors will change the cost of refinishing hardwood floors whether you DIY or hire a professional. Total costs for either can change depending on the geographic location, existing floor material and condition, square footage, stairs, and other accessibility issues, other floor covering removal, type and quality of existing coating, and the number of finishes needed.
Hiring a certified professional to refinish hardwood floors usually costs about $3-$5 per square foot. For a 1000 square foot area, this equates to $3000-$5000. This cost is for the basic refinishing of a hardwood floor and does not include extras such as removal of furniture, repairs, specialty or exotic woods, premium coatings, or unexpected floor needs.
DIY can cost as little as $0.50 per square foot, especially if you already have some items on hand. If you are starting from scratch with a floor that does not need much in the way of repairs and you use an economical finish, you can expect to pay about $1-$2 per square foot. Doing it yourself will cost about $500-$2000 for a 1000 square foot area.
Refinishing hardwood floors is a big, but necessary job. Maintaining hardwood floors ensures their beauty and durability and will lead to a lifetime of enjoyment. If you have the time to learn the process and time to devote to all the steps, DIY hardwood floor refinishing can be a cost-effective and satisfying process. If the uncertainty or potential risks are at all intimidating, hiring a professional may be the best way to go.


Bioresorbable vascular stents expand the blood vessel to prevent a blockage, which are disintegrated in human body without any external intervention. It prevents inflammation leading to stent restenosis and thrombosis and eliminates the need for post-treatment involvements. Bioresorbable stents are superior over 1st and 2nd generation stents as Bioresorbable stents cut the need for dual antiplatelet therapies.
The global bioresorbable vascular scaffold market size was valued at US$ 147.0 million in 2017, and is expected to exhibit a CAGR of 12.5% over the forecast period (2018 – 2026).
Bioresorbable vascular scaffold is used in treatment of blockage of coronary and peripheral artery, which is related to coronary heart disease, ischemic heart disease, and other cardiovascular diseases. High prevalence of coronary heart disease, ischemic heart disease, and other cardiovascular diseases is expected to propel demand for bioresorbable vascular scaffold, which in turn will drive the market growth. According to World Health Organization (WHO), 2015, cardiovascular diseases is the first leading cause of morbidity and mortality worldwide, with around 17.7 million representing 31% of all global deaths in 2015, out of these deaths, an estimated 6.7 million were due to stroke and 7.4 million were due to coronary heart disease.
Similarly, according to American Heart Association in 2018, 92.1 million American adults were suffering with some form of cardiovascular disease or the after-effects of stroke. Nearly 836,546 deaths in the U.S. were due to cardiovascular disease, which is about 1 of every 3 deaths. Direct and indirect costs in the treatment of cardiovascular diseases and stroke were estimated to amount to US$ 329.7 billion in 2018, which includes both health expenditures and lost productivity, in the U.S.
Furthermore, introduction of novel bioresorbable vascular scaffold, which help patients with cardiovascular diseases, is propelling growth of the bioresorbable vascular scaffolds market over the forecast period. For instance, in July 2016, Abbott received approval from the US Food and Drug Administration for Absorb GT1 bioresorbable vascular scaffold (BVS). The product fully resorbs over time and improves coronary luminal diameter in patients with ischemic heart disease due to de novo native coronary artery lesions.
However, complications such as damage to central veins, pulmonary complications, cardiac complications, device dysfunction, and catheter-related bloodstream infection are expected to limit adoption of bioresorbable vascular scaffold, thereby hindering the market growth.
North America is expected to be held dominant position in the global bioresorbable vascular scaffold market, owing to rapid growth in geriatric population, rising incidences of cardiac ailments, coronary & peripheral artery diseases, and increasing number of obese people in the region. According to World Population Prospects, the number of persons aged 80 or over is projected to triple by 2050, from 137 million in 2017, to 425 million in 2050 in the U.S., while this age bracket is expected to more than double globally, rising from 962 million in 2017 to 2.1 billion in 2050.
Moreover, key players in the market are focused on receiving regulatory approvals for novel products to reduce the burden of blood stream infections associated with bioresorbable vascular scaffolds. For instance, in May, 2018, Pursuit Vascular, Inc., received U.S. FDA clearance for broader indication of its ClearGuard HD caps to include reduction in the incidence of central-line associated bloodstream infection (CLABSI) in hemodialysis patients with bioresorbable vascular scaffolds.
Major players operating in the global bioresorbable vascular scaffold market include Abbott, Cook Medical, Boston Scientific Corporation, B. Braun Melsungen AG, Medtronic Plc., Stentys SA, MAQUET Holding B.V. & Co. KG (Getinge AB), W.L. Gore & Associates, C. R. Bard, Inc., and Theragenics Corporation.
Bioresorbable vascular scaffold (BVS) is a nonmetallic mesh tube, which is used to treat blocked arteries. It is similar to a stent but gradually dissolves once the blocked artery starts functioning naturally again, enabling the artery to return to its natural state. The scaffold disappears in around 12-24 months and supports the vessel until it gain its full function. BVS is designed to help open up a blocked artery in the heart and restore blood flow to the heart muscle. It is used by patients who are suffering from different types of cardiovascular diseases. Some of the commonly used BVS for cardiac procedures include Poly-L-Lactide (PLLA) bioresorbable scaffold, metallic bioresorbable scaffold, and hybrid bioresorbable scaffold.
Increasing demand for bioresorbable vascular scaffold owing to high prevalence of coronary heart disease, ischemic heart disease, and other cardiovascular diseases is expected to drive market growth. According to American Heart Association Council, in 2015, cardiovascular disease was the leading cause of death in the world, accounting for over 17.9 million deaths per year globally, and this number is expected to increase to over 23.6 million by 2030. From the same source, cardiovascular diseases accounted for nearly 836,546 deaths in the U.S. in 2015, which is about 1 of every 3 deaths.
Moreover, key players are opting for different strategies such as new product launches, FDA approvals, partnerships, and collaborations to increase its foothold in the market. For instance, in July 2016, Abbott received the U.S. Food and Drug Administration approval for Absorb bioresorbable heart stent. This device is first-of-its-kind medical device with fully dissolving heart stents. This device will be available to treat people with coronary artery disease in the U.S.
However, preference for vascular graft devices for angioplasty and coronary artery diseases is one of the major factors restraining growth of the global bioresorbable vascular scaffold market. Furthermore, stringent regulatory scenario has also obstructed growth of the market.
*Browse 22 market data tables and 26 figures on "Bioresorbable Vascular Scaffold Market - Global forecast to 2026".


We will monitor our CO2 production over the course of the year and top up if necessary, but we feel pretty confident that planting 1 tree for every 20 registrations will cover all our CO2 production + 5/10%.
- Trees For Life is a recognised project working in partnership with European Rewilding Network, Forestry Commission Scotland, National Trust Scotland the Woodland Trust and the RSPB so we have confidence this is a very well run venture.
- The selling point for our events is the amazing settings in which we hold them. Contributing to the restoration of a beautiful natural landscape fits well for us.
- Trees For Life is about restoring a forest to a natural state. These trees are self seeding which means they seed future generations naturally, without intervention from man. All trees eventually die and decay, but by supporting this project a tree will naturally appear to replace the tree that has fallen. Many tree planting schemes fell trees, use the wood and this may release the CO2 back into the atmosphere, which therefore requires new trees to be planted to sequester the same CO2. This is not the case with Trees For Life.
- This is about more than just planting trees, more than just sequestering CO2, Trees For Life is about restoring a whole ecosystem.
We have written more about our thought process and how we worked it all out on our Medium post.
An often levelled criticism of tree planting is that it doesn't address the core issue - it seeks to address the problem, not the cause. That as a planet we can't carry on producing CO2 to the same levels, and planting trees is putting a plaster on the issue. We broadly agrees with this statement. However, short of closing down our business - in which case runners would travel to other events anyway, who probably don't off set their CO2 production - we are not sure how to address this. What we can do, and what we will do is to continue to research ways to continue to make our events fundamentally more environmentally friendly.


The Windows 7 Forums Diagnostic Tool (W7F Diagnostic Tool) was created by our team member on Windows7Forums.com, now part of the Windows Forum, for BSOD diagnostics and troubleshooting.
Download, extract and run the W7F Diagnostic Tool by right clicking on the W7F Diagnostic Tool executable and choosing Run as administrator . Click on Grab All . When done, go to your desktop --> Right Click on "W7F_folder --> Send To --> Compressed (zipped) folder. Attach the zipped folder with your post when asking for BSOD help.


I read, through tears the letter submitted to The Transylvania Times, March 11 edition, by JoAnn LaRocca from Etowah.
LaRocca wrote of her observation of a dog tied out behind a shed, always there and always alone. Apparently chained, the dog appears to have no human interaction.


The Scene: If you're a college student, it's overwhelmingly likely that you've received a package wrapped in bright blue packaging tape that says "Amazon Prime". As consumers all over the world celebrate Amazon Prime Day, a day of sales only accessible to Amazon Prime members, Amazon warehouse workers in Spain, Poland, and Germany are walking off the job. The strikes are meant to force Amazon's hand as the workers call for better working conditions and higher wages. Whether or not this will effect Amazon founder Jeff Bezos, who has a net worth of $152 billion, remains to be seen. So what are the risks and benefits at stake with a internet powerhouse like Amazon.com, Inc.?
The Bottom Line: All workers, no matter where they live and who they work for, deserve a fair wage for their work and a safe place to complete it. With the amount of money Amazon brings in each day, there is no excuse for the terrible conditions in Amazon warehouses that some workers have described. However, since Bezos does profit so highly from the success of Amazon, he could choose to ignore the strikes and still be considered an online retail juggernaut. One would hope that he would use his bank account for good, but he has yet to make a statement. Many students depend on Amazon Prime to buy everything from cheaper textbooks to food (when they're too lazy to walk to the grocery store themselves), and their reaction has yet to be gauged. Will the need to instantly access some items outweigh the human rights consequences?


HIGHLAND HEIGHTS, Ky. – A Northern Kentucky University admissions coordinator has received a prestigious award for her work with Latino and other underrepresented students.
Leyla Peña, who works at NKU as a Coordinator of Multicultural Recruitment, was selected by the League of United Latin American Citizens Cincinnati Council to receive the "Professional Excellence" Award at the LULAC Awards Gala, from 6-10 p.m., Saturday, Sept. 19, at the National Underground Railroad Freedom Center.
The theme of this year's event is "Education: The Gateway to Success." The LULAC Cincinnati Awards Gala celebrates the positive impact of those who shape the diversity and race relations in the Cincinnati and Northern Kentucky community. The organization will also award 23 LULAC scholarships to underserved and talented Hispanic students from the tri-state area.
Peña, a native of the Dominican Republic, has worked at NKU since 2011. Previously, she worked for The Spanish Journal a Spanish language newspaper based in Cincinnati. At NKU she specializes in recruitment, and serves as an admissions counselor and coordinator for multicultural programs. She also helps organize Spanish Norse Days and an annual Latino College Fair, which introduces potential students to NKU.
Leo Calderon, who has more than 29 years of experience at NKU and currently serves as the Director of Latino Programs and Services, has worked with Peña and multicultural recruitment over the last four years.
Peña says to be recognized by LULAC is an honor.


Aluminum alloy body holds iPad vertically or horizontally.
Sturdy, yet space-saving with a 7" x 3.75" footprint.
Unleash your iPad from limiting flat or unstable/unsafe "prop" viewing with the NewerTech NuStand Alloy. Its sturdy, aluminum alloy body provides full access to all ports for using, viewing and charging your iPad. A silicone center gently holds your iPad while allowing you to securely angle the display to your viewing preference. Non-skid rubber feet provide secure and stable operation while the satisfyingly smooth rubberized black finish preserves its elegant beauty. Great for the desktop, its lightweight 3.5 ounce compact design makes it easy to take with you too!
OWC NOTE: Not compatible with Apple SmartCover cases.
*Note: When using with Apple iPad Air, Air 2, and iPad mini models - part of the screen is blocked by the stand when placed in 'landscape' position - but this does not typically impede functionality nor block active areas when watching video.
Rating: 5/5 Ipad Air stand July 29, 2016 I purchased two, one for my desk, and one for my bedside. The stand provides for a nice stand to put ones iPad air.
Rating: 3/5 a stable platform June 30, 2013 but the rubber feet are only adhered with a double sided tape and the 5 of these iPad/mini stands that I own have all had to glue their feet back on. The feet aren't really a necessity but why put them on there if they're only going to fall off?


Beautifully crafted with care, our sympathy flowers are a perfect way to commemorate and celebrate the life of someone you love. Bespoke arrangements to your specifications and helping you create a personal tribute with lasting memories. We specialise in a rustic and natural style but can also create tropical floral arrangements or planted sympathy pieces to be tailored to your needs.


text:
Q: Qt error trying to install quiteinsane gimp plugin I am trying to install the quiteinsane gimp plugin on Ubuntu 16.04.
https://sourceforge.net/projects/quiteinsane/
I am getting this error:
checking for Qt... configure: error: Qt (>= Qt 2.2.2) (headers and libraries) not found. Please check your installation!

After searching the web, I have done
sudo apt-get install libqt5-*
sudo apt-get install libqt4-*
sudo apt-get install libqt3-*

I still keep getting this error.
I have even installed Qt5 in my home directory, following the instructions on the web on how to do it,
https://wiki.qt.io/Install_Qt_5_on_Ubuntu
but I don't know how to make the installer recognize that. Someone had suggested adding the include and lib paths of the install in the configure line, but that did not work either. This was the configure command I used then:
./configure --enable-mt --with-qt-includes=/home/skumar/Qt/5.9.1/gcc_64/include --with-qt-libraries=/home/skumar/Qt/5.9.1/gcc_64/lib

Thanks for any help.
Kumar

redpajama_set_name: RedPajamaStackExchange


(en.wikipedia.org) Eraldo Bernocchi (born c. 1963) is an Italian musician, producer and sound designer.
The project Sigillum S was created on 23 December 1985. It has had, since the beginning, the aim to be totally against the logic of the "band". It was conceived as an open structure in which people could work and research different subjects.
Formed by Eraldo Bernocchi (guitars, electronic treatments, voice, and programmation) Paolo Bandera (electronic treatments, bass, and voice) and Luca Di Giorgio (keyboards), the project has always been a double faced creature, mixing together on the same level precise ritual and ethnic aspects with a noisy music.
Since the beginning, Sigillum S had as path to be followed the knowledge and the total war against any kind of limit or taboo, refusing any kind of relationship with political/religious structures. During the first 10 years they toured quite extensively through all Europe and Canada, taking on stage a multimedia attack based on videos, slides and artworks used as a part of the stage.
Having pared down along the way to consist of only Eraldo and Paolo as core members, they collaborated with different groups in different situations, like: Ain Soph, The Sodality, Gerstein, Iugula-Thor, Dive, Outoff Body Experience, the sculptor Milo Sacchi, the multimedia/artist PM.Koma and many others.
After a slew of releases through their first 15 years, they released the album Abstraction on Daft Records. This proved to be their last release for a number of years. In 2007, Verba Corrige announced the completion of 23|20, a celebration of the history of Sigillum S. The release was done in two different formats (Digipak CD and gatefold vinyl) featuring different track lists and sequences for each. The release featured all new material and collaborations with artists such as Toshinori Kondo, Bill Laswell, SH Fernando/WordSound, Prof. Shehab/Baboon Records, Martino Nicoletti, Lorenzo Esposito Fornasari, the band Zu, Xabier Iriondo, Ephel Duath, various members of Crisis, Mark Solotroff, Thomas Fehlmann, Gudrun Gut, Andrea Marutti, Claudio Agostoni, and many others.
Since the release of 23|20 Sigillum S has continued to perform live, welcoming Luca Di Giorgio back into the fold and adding Petulia Mattioli as a fourth member. Much of their back catalog is now available through Bandcamp with new recordings and archival material forthcoming, both in physical and digital mediums.
(de.wikipedia.org) Sigillum S ist ein experimentelles Musikprojekt aus Italien. Der Stil ist dem Post-Industrial, dabei vor allem dem Ritual zuzurechnen.
Die Musik von Sigillum S bestand zu Beginn aus sehr düsteren Noise-Strukturen gemischt mit verschiedenen Einflüssen aus dem Ritual. Daneben fanden Klänge aus der Ethnomusik und die flächigen Strukturen des Dark Ambient Verwendung. Typisch für Sigillum S ist der Einsatz einer Vielzahl von Instrumenten: Neben Gitarre, Bass und Keyboards sind dies auch Sampler, ethnische Musikinstrumente, Kurzwellengeneratoren oder ein Gitarrensynthesizer. In den jüngeren Veröffentlichungen wurde der Klang dann unter dem Einfluss von Techno deutlich rhythmischer, teilweise sogar tanzbar.
Inhaltlich lehnt Sigillum S jede Art von Tabu ab und setzt sich oft mit politischen, religiösen und philosophischen Aspekten und Strukturen auseinander. Der Klang soll dabei vor allem dazu dienen, die "verbotenen Bereiche des Unterbewusstseins zu entdecken". Bei der Gestaltung der Tonträger wurden gerne okkultistische Symbole und Zeichen verwendet. Eine andere Gestaltungsvariante sind morbide Abbildungen von Leichen, Totenschädeln etc.


text:
// Copyright 2021 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

#include "components/optimization_guide/content/browser/page_text_observer.h"

#include <algorithm>
#include <map>
#include <set>
#include <vector>

#include "base/bind.h"
#include "base/feature_list.h"
#include "base/memory/scoped_refptr.h"
#include "base/metrics/histogram_functions.h"
#include "base/strings/strcat.h"
#include "base/threading/sequenced_task_runner_handle.h"
#include "base/time/time.h"
#include "components/optimization_guide/core/optimization_guide_features.h"
#include "content/public/browser/browser_task_traits.h"
#include "content/public/browser/browser_thread.h"
#include "content/public/browser/navigation_entry.h"
#include "content/public/browser/navigation_handle.h"
#include "content/public/browser/render_frame_host.h"
#include "content/public/browser/render_process_host.h"
#include "mojo/public/cpp/bindings/associated_remote.h"
#include "mojo/public/cpp/bindings/receiver.h"
#include "mojo/public/cpp/bindings/remote.h"
#include "services/service_manager/public/cpp/interface_provider.h"
#include "third_party/blink/public/common/associated_interfaces/associated_interface_provider.h"

namespace optimization_guide {

namespace {

const char kTimeUntilDisconnectHistogram[] =
    "OptimizationGuide.PageTextDump.TimeUntilFrameDisconnected.";
const char kTimeUntilCompleteHistogram[] =
    "OptimizationGuide.PageTextDump.TimeUntilFrameDumpCompleted.";
const char kFrameDumpLengthHistogram[] =
    "OptimizationGuide.PageTextDump.FrameDumpLength.";

std::string TextDumpEventToString(mojom::TextDumpEvent event) {
  switch (event) {
    case mojom::TextDumpEvent::kFirstLayout:
      return "FirstLayout";
    case mojom::TextDumpEvent::kFinishedLoad:
      return "FinishedLoad";
  }
  NOTREACHED();
  return std::string();
}

// PageTextChunkConsumer reads in chunks of page text and passes it all to
// the given callback, up to the maximum given length (in bytes).
// When the text reads have been completed (by either OnChunksEnd() or the given
// max length has been reached), the given callback |on_complete| is run and
// this class goes into an inactive state. The passed callback may delete |this|
// in stack. |on_complete_| will be called with nullopt if the mojo pipe was
// disconnected before a text dump finished.
class PageTextChunkConsumer : public mojom::PageTextConsumer {
 public:
  PageTextChunkConsumer(
      mojo::PendingReceiver<mojom::PageTextConsumer> receiver,
      uint32_t max_size,
      base::OnceCallback<void(const absl::optional<std::u16string>&)>
          on_complete)
      : remaining_size_(max_size),
        on_complete_(std::move(on_complete)),
        receiver_(this, std::move(receiver)) {
    receiver_.set_disconnect_handler(base::BindOnce(
        // base::Unretained is safe here since |receiver_| is owned by |this|
        // and mojo guarantees the passed callback won't be called on
        // |receiver_|'s destruction.
        &PageTextChunkConsumer::OnDisconnect, base::Unretained(this)));
  }
  ~PageTextChunkConsumer() override = default;

  // mojom::PageTextConsumer:
  void OnChunksEnd() override { OnComplete(); }
  void OnTextDumpChunk(const std::u16string& chunk) override {
    // Calling |OnComplete| will reset the mojo pipe and callback together, so
    // this method should not be called when there is not a callback.
    DCHECK(on_complete_);

    // Cap the number of bytes that will be read to the remaining max length. If
    // this occurs, run |OnComplete|.
    if (remaining_size_ <= chunk.size()) {
      read_chunks_.push_back(chunk.substr(0, remaining_size_));
      remaining_size_ = 0;
      OnComplete();
      // Do not add code here since |this| may be been destroyed in
      // |OnComplete|.
      return;
    }

    remaining_size_ -= chunk.size();
    read_chunks_.push_back(chunk);

    DCHECK_GT(remaining_size_, 0U);
  }

  void OnComplete() {
    receiver_.reset();
    std::move(on_complete_).Run(base::StrCat(read_chunks_));
    // Don't do anything else. This callback may have destroyed |this|.
  }

  void OnDisconnect() {
    receiver_.reset();
    std::move(on_complete_).Run(absl::nullopt);
    // Don't do anything else. This callback may have destroyed |this|.
  }

 private:
  // The maximum length in bytes that will be read from the data pipe.
  uint32_t remaining_size_ = 0;

  // While |on_complete_| is non-null, the mojo pipe is also bound. Once the
  // |on_complete_| callback is run, this class is no longer active and can be
  // deleted (in stack with the callback).
  base::OnceCallback<void(const absl::optional<std::u16string>&)> on_complete_;
  mojo::Receiver<mojom::PageTextConsumer> receiver_;

  // All chunks that have been read from the data pipe. These will be
  // concatenated together and passed to |on_complete_|.
  std::vector<std::u16string> read_chunks_;

  base::WeakPtrFactory<PageTextChunkConsumer> weak_factory_{this};
};

// RequestMediator handles the de-duplication of page text dump requests, and
// the multiplexes the response back to the callers.
//
// Lifetime: Once all the requests are known, the lifetime of this class is
// scoped to that of the associated remote. This is achieved by using a
// scoped_refptr which is copied onto every callback that is given to mojo. If
// the remote closes, the callbacks are destroyed, as will be this class.
// Otherwise, this class will remain alive until all mojo calls (and data pipe
// reads) have completed or are otherwise closed with an error.
//
// High Level Request Flow:
// (1) Request text dump from the renderer over the RenderFrameHost's associated
// remote interface. (2) The dumped text chunks come back and are concatenated
// back together. (3) The text dump, now in memory, is delivered in callbacks to
// all the original callers.

// Detailed Request Flow:
// (1) The caller will add some number of consumer requests thru
// |AddConsumerRequest|. Each request may give one or more events at which a
// text dump should be made, and the length that is being requested.
//
// (2) There may have been many requests to do a text dump at event Foo.
// However, only one dump request should be made of the renderer for that event
// since doing a dump is an expensive operation. Therefore, the greatest length
// for event Foo is determined and that length is what is requested from the
// renderer.
//
// (3) The caller will call |MakeSelfOwnedAndDispatchRequests| and pass in a
// scoped_refptr which owns |this|. At that time, all mojo requests are sent
// along with copies of the scoped_refptr, making mojo the effective owner of
// this class. Note that one or more requests have been made at this point and
// this class will remain alive until they have all been completed and handled.
// The count of outgoing requests sent to a renderer is returned.
//
// (4) The PageTextConsumer will receive chunks of the dumped page text until
// either (a) all chunks have been read, or (b) the max length is reached. When
// this happens the text chunks received so far will be concatenated and passed
// back to RequestMediator in a callback.
//
// (5) The callback to RequestMediator is the end of the line for a text dump
// response as the |on_complete_| callback is run. At this time, the self
// scoped_refptr will fall out of scope and be destroyed. If it was the last
// such pointer, then |this| will be destroyed.
class RequestMediator : public base::RefCounted<RequestMediator> {
 public:
  RequestMediator() = default;

  void AddConsumerRequest(
      const PageTextObserver::ConsumerTextDumpRequest& request) {
    DCHECK(!request.events.empty());
    DCHECK_GT(request.max_size, 0U);

    for (mojom::TextDumpEvent event : request.events) {
      if (max_size_by_event_.find(event) == max_size_by_event_.end()) {
        max_size_by_event_.emplace(event, 0U);
      }
      auto event_to_max_size_iter = max_size_by_event_.find(event);
      event_to_max_size_iter->second =
          std::max(event_to_max_size_iter->second, request.max_size);
    }
  }

  void AddAMPRequest(const PageTextObserver::ConsumerTextDumpRequest& request) {
    if (!request.dump_amp_subframes) {
      return;
    }

    auto iter = max_size_by_event_.find(mojom::TextDumpEvent::kFinishedLoad);
    if (iter == max_size_by_event_.end()) {
      max_size_by_event_.emplace(mojom::TextDumpEvent::kFinishedLoad,
                                 request.max_size);
      return;
    }

    iter->second = std::max(iter->second, request.max_size);
  }

  size_t MakeSelfOwnedAndDispatchRequests(
      scoped_refptr<RequestMediator> self,
      base::RepeatingCallback<void(absl::optional<FrameTextDumpResult>)>
          on_frame_text_dump_complete,
      content::RenderFrameHost* rfh) {
    DCHECK_EQ(self.get(), this);

    if (max_size_by_event_.empty()) {
      return 0;
    }

    on_frame_text_dump_complete_ = std::move(on_frame_text_dump_complete);

    mojo::AssociatedRemote<mojom::PageTextService> renderer_text_service;
    rfh->GetRemoteAssociatedInterfaces()->GetInterface(&renderer_text_service);

    auto rfh_id = rfh->GetGlobalId();
    bool is_subframe = rfh->GetMainFrame() != rfh;
    int nav_id = content::WebContents::FromRenderFrameHost(rfh)
                     ->GetController()
                     .GetVisibleEntry()
                     ->GetUniqueID();

    for (const auto& event_to_max_size_iter : max_size_by_event_) {
      mojo::PendingRemote<mojom::PageTextConsumer> consumer_remote;

      FrameTextDumpResult preliminary_result = FrameTextDumpResult::Initialize(
          event_to_max_size_iter.first, rfh_id,
          // Note that subframes only take text dumps iff they are an AMP
          // frame. If that even changes, this won't work anymore.
          /*amp_frame=*/is_subframe, nav_id);

      std::unique_ptr<PageTextChunkConsumer> consumer =
          std::make_unique<PageTextChunkConsumer>(
              consumer_remote.InitWithNewPipeAndPassReceiver(),
              event_to_max_size_iter.second,
              // base::Unretained is safe here since the ownership of |this| is
              // passed to |consumer|. See comment at end of method for more
              // detail.
              base::BindOnce(&RequestMediator::OnPageTextAsString,
                             base::Unretained(this), self, preliminary_result));

      auto request = mojom::PageTextDumpRequest::New();
      request->max_size = event_to_max_size_iter.second;
      request->event = event_to_max_size_iter.first;

      renderer_text_service->RequestPageTextDump(std::move(request),
                                                 std::move(consumer_remote));

      // |consumer| now owns |this| since it owns the callback with |self|, so
      // this is what makes this class "self owned". Once the consumer is done
      // reading text chunks (or is disconnected), then |OnPageTextAsString|
      // will be called where the scoped_refptr will fall out of scope and
      // destroy |this| (if it was the last owning reference).
      consumers_.emplace(std::move(consumer));
    }

    requests_sent_time_ = base::TimeTicks::Now();

    return max_size_by_event_.size();
  }

 private:
  friend class base::RefCounted<RequestMediator>;
  ~RequestMediator() = default;

  void OnPageTextAsString(scoped_refptr<RequestMediator> self,
                          const FrameTextDumpResult& preliminary_result,
                          const absl::optional<std::u16string>& page_text) {
    DCHECK(on_frame_text_dump_complete_);

    std::string event_suffix =
        TextDumpEventToString(preliminary_result.event());

    if (!page_text) {
      base::UmaHistogramMediumTimes(
          kTimeUntilDisconnectHistogram + event_suffix,
          base::TimeTicks::Now() - requests_sent_time_);
      on_frame_text_dump_complete_.Run(absl::nullopt);
      return;
    }

    base::UmaHistogramMediumTimes(kTimeUntilCompleteHistogram + event_suffix,
                                  base::TimeTicks::Now() - requests_sent_time_);

    base::UmaHistogramCounts10000(kFrameDumpLengthHistogram + event_suffix,
                                  page_text->size());

    on_frame_text_dump_complete_.Run(
        preliminary_result.CompleteWithContents(*page_text));
  }

  // Called whenever a text dump is completed for an event. This called as many
  // times as events requested, which can be greater than 1.
  base::RepeatingCallback<void(absl::optional<FrameTextDumpResult>)>
      on_frame_text_dump_complete_;

  // All |PageTextChunkConsumer|'s that are owned by this.
  std::set<std::unique_ptr<PageTextChunkConsumer>> consumers_;

  // The max length, in bytes, to request for each event.
  std::map<mojom::TextDumpEvent, uint32_t> max_size_by_event_;

  // The time at which the mojo requests are sent, set during
  // |MakeSelfOwnedAndDispatchRequests|.
  base::TimeTicks requests_sent_time_;
};

}  // namespace

PageTextObserver::ConsumerTextDumpRequest::ConsumerTextDumpRequest() = default;
PageTextObserver::ConsumerTextDumpRequest::~ConsumerTextDumpRequest() = default;

PageTextObserver::PageTextObserver(content::WebContents* web_contents)
    : content::WebContentsObserver(web_contents),
      content::WebContentsUserData<PageTextObserver>(*web_contents) {}
PageTextObserver::~PageTextObserver() = default;

PageTextObserver* PageTextObserver::GetOrCreateForWebContents(
    content::WebContents* web_contents) {
  // CreateForWebContents doesn't do anything if it has already been created
  // for |web_contents| already.
  PageTextObserver::CreateForWebContents(web_contents);
  return PageTextObserver::FromWebContents(web_contents);
}

void PageTextObserver::DidFinishNavigation(content::NavigationHandle* handle) {
  // Only main frames are supported for right now.
  if (!handle->IsInPrimaryMainFrame()) {
    return;
  }

  if (!handle->HasCommitted()) {
    return;
  }

  // Reset consumer requests if the navigation is not in the same document.
  if (!handle->IsSameDocument()) {
    requests_.clear();
    page_result_.reset();
    outstanding_requests_ = 0;
    outstanding_requests_grace_timer_.reset();
  }

  if (consumers_.empty()) {
    return;
  }

  scoped_refptr<RequestMediator> mediator =
      base::MakeRefCounted<RequestMediator>();
  for (Consumer* consumer : consumers_) {
    auto request = consumer->MaybeRequestFrameTextDump(handle);
    if (!request) {
      continue;
    }
    mediator->AddConsumerRequest(*request);
    requests_.push_back(std::move(request));
  }

  outstanding_requests_ += mediator->MakeSelfOwnedAndDispatchRequests(
      mediator,
      base::BindRepeating(&PageTextObserver::OnFrameTextDumpCompleted,
                          weak_factory_.GetWeakPtr()),
      handle->GetRenderFrameHost());
}

bool PageTextObserver::IsOOPIF(content::RenderFrameHost* rfh) const {
  return rfh->GetProcess()->GetID() !=
         rfh->GetMainFrame()->GetProcess()->GetID();
}

void PageTextObserver::RenderFrameCreated(content::RenderFrameHost* rfh) {
  if (!IsOOPIF(rfh)) {
    return;
  }

  scoped_refptr<RequestMediator> mediator =
      base::MakeRefCounted<RequestMediator>();
  for (const auto& request : requests_) {
    mediator->AddAMPRequest(*request);
  }

  outstanding_requests_ += mediator->MakeSelfOwnedAndDispatchRequests(
      mediator,
      base::BindRepeating(&PageTextObserver::OnFrameTextDumpCompleted,
                          weak_factory_.GetWeakPtr()),
      rfh);
}

void PageTextObserver::OnFrameTextDumpCompleted(
    absl::optional<FrameTextDumpResult> frame_result) {
  // Ensure that the generated frame result is not for a previous page load.
  // This should be done before decrementing |outstanding_requests_| so that
  // each page load handles its own state.
  content::NavigationEntry* visible_entry =
      web_contents() ? web_contents()->GetController().GetVisibleEntry()
                     : nullptr;
  if (frame_result && visible_entry &&
      visible_entry->GetUniqueID() != frame_result->unique_navigation_id()) {
    return;
  }

  // |frame_result| will be null in the event the RFH dies, in which case we can
  // no longer expect the request to be fulfilled, so it should not be counted
  // as outstanding anymore.
  outstanding_requests_--;

  if (frame_result) {
    if (!page_result_) {
      page_result_ = std::make_unique<PageTextDumpResult>();
    }
    page_result_->AddFrameTextDumpResult(*frame_result);
  }

  if (!!outstanding_requests_grace_timer_ && outstanding_requests_ == 0) {
    outstanding_requests_grace_timer_.reset();
    DispatchResponses();
  }
}

void PageTextObserver::DidFinishLoad(
    content::RenderFrameHost* render_frame_host,
    const GURL& validated_url) {
  base::UmaHistogramCounts100(
      "OptimizationGuide.PageTextDump.OutstandingRequests.DidFinishLoad",
      outstanding_requests_);

  if (outstanding_requests_ > 0) {
    outstanding_requests_grace_timer_ = std::make_unique<base::OneShotTimer>();
    outstanding_requests_grace_timer_->Start(
        FROM_HERE, features::PageTextExtractionOutstandingRequestsGracePeriod(),
        base::BindOnce(&PageTextObserver::DispatchResponses,
                       base::Unretained(this)));
    return;
  }
  DispatchResponses();
}

void PageTextObserver::DispatchResponses() {
  outstanding_requests_grace_timer_.reset();

  base::UmaHistogramCounts100(
      "OptimizationGuide.PageTextDump.AbandonedRequests",
      outstanding_requests_);

  if (!page_result_) {
    return;
  }

  for (const auto& consumer_request : requests_) {
    std::move(consumer_request->callback).Run(*page_result_);
  }
  requests_.clear();
  page_result_.reset();
}

void PageTextObserver::AddConsumer(Consumer* consumer) {
  consumers_.insert(consumer);
}

void PageTextObserver::RemoveConsumer(Consumer* consumer) {
  consumers_.erase(consumer);
}

WEB_CONTENTS_USER_DATA_KEY_IMPL(PageTextObserver);

}  // namespace optimization_guide

redpajama_set_name: RedPajamaGithub


text:
<?xml version="1.0" encoding="utf-8"?>
    <resources>
        <color name="ColorPrimary">#FF5722</color>
        <color name="ColorPrimaryDark">#E64A19</color>
    </resources>


This competition recognizes the developers who are paving the path for future of AI development, and helping to accelerate Microsoft AI adoption and innovation. This opportunity also provides a platform for developers, students and data scientists community to freely share AI models and applications, so they are reusable and easily accessible.
The Microsoft AI Challenge is accepting submissions between August 13th– October 30th, 2018. Individuals or teams are required to submit a working AI model, test dataset, any demo app and a demo video (max. three minutes long) to qualify for the competition.
A(n) Microsoft 13.5″ Surface Book 2 Multi-Touch 2-in-1 Notebook (Silver) . Approximate Retail Value (ARV) $1,499.00.
A(n) DJI Drone- DJI Mavic Pro Bundle (Drone, Bag, Extra Props). Approximate Retail Value (ARV) $999.00.
Upload your project – To submit an entry, visit the Contest website and follow the instructions to register and submit your entry.
Idea review – Please submit a working AI model, test dataset, any demo app and a demo video (max. three minutes long) to qualify for the competition. Your submitted project goes through detailed review process by our judges.
Winner announcement – Winners will be announced within 14 days after contest closes.
Prizes – The top three ideas (each) win prizes as mentioned below in the "Prizes" section, plus an opportunity to present a possible video on AI Lab with Microsoft to showcase the solution.


text:
Doc Mcstuffins Endless…
Doc McStuffins Summertime…
Doc McStuffins Cute…
The Doc McStuffins…
Doc McStuffins Differences
Doc McStuffins Hamburger Cooking
Play Doc McStuffins Games
😢 You have problems playing Doc McStuffins Hamburger Cooking?
Doc McStuffins Wash-Up…
Doc and Hallie's Check…
Doc's World
Doc McStuffins Games
🎮 Doc McStuffins Hamburger Cooking
We're back with yet another really awesome new game belonging to the Doc McStuffins Games category on our website, a game you should all play, because you are going to have a lot of fun in doing so, like is the case with all the cooking games that we usually add on our website. While Doc McStuffins is a doctor, and she advocates for healthy eating, even she sometimes needs some fast food, because she really enjoys it, and once in a while is not that much of a problem. Because she is really hungry, don't you want to help her cook it faster, so that she can get to eating as soon as possible? Well, you can do so by playing this game, which we will explain how it works right now, making sure you won't have any difficulties. It is going to be really simple to cook the burger. Use the mouse to click on the burger ingredients on the bottom of the game screen, choosing the one you like the most from every type of ingredient. When you are done with that type of ingredient, click on the arrow and move on. Start having fun with this game right now, only on www.friv-games-today.com!
⭐ Games like Doc McStuffins Hamburger Cooking
DJ Shuffle - Jamboree
Doc McStuffins Wash-Up Play Day
Soaring Over Summer Arcade
Big Air Adventure
Doc McStuffins Summertime Clinic
Doc and Hallie's Check Up Challenge
The Doc McStuffins Mobile
Doc Mcstuffins Endless Runner…
Doc McStuffins Cute Makeover


text:
US Sees Coronavirus as a New Way to Pressure Iran
Deaths could take a toll on the Iranian government
For the US government, killing Iranians, particularly those with government positions, is seen as a generally positive thing. This has some in the administration seeing Iran's coronavirus crisis as an opportunity of sorts.
Coronavirus has killed over 700 Iranians so far, and infected many thousands. These aren't all specific targets of the US, but there are some senior Iranian officials among them, and the administration sees those deaths as taking a toll on Iranian decision making.
Gen. Kenneth McKenzie says the US believes the overall impact may be bigger than anyone knows right now, and that the US is still assessing things. He added that it's going to hurt Iran in the short-term, and that "of course, death is permanent."
The US had previously withdrawn some troops from the Middle East, saying Iran is so weakened by the virus they don't pose as big of a threat. Following that up with attacks on Iraqi Shi'ite militias, however, they are now playing up the risk of Iranian retaliation.
Assessments were that Iran doesn't want a war, which is fairly obvious. At the same time, if the administration takes that to justify picking fights with Iran, they're certain to provoke something eventually. That's' true no matter how many people the virus kills.
Published at https://news.antiwar.com/2020/03/15/us-sees-coronavirus-as-a-new-way-to-pressure-iran/
Who Made Coronavirus? Was It the U.S., Israel or…
Netanyahu, Top U.S. Commander Warn of More Attacks…
Good if true. But don't be so sure
Poll: Many Americans Oppose Killing Iranian General…
The U.S. Public Still Doesn't Want War With Iran
Pelosi says Trump carried out strike on Iranian…
SOURCEnews.antiwar.com/