This entry was posted in Applicable Federal Rates and tagged Applicable Federal Rates, Attorney, Business Law, Florida, Sarasota, Tax Law on May 24, 2016 by E. John Wagner, II.
How Can You Succeed in Your Business Succession Plan?
As the baby-boomer generation ages, an increasing number of family businesses will be experiencing transitions in ownership and/or management. Not all of these transitions will be successful; popular studies indicate that only 30% of family businesses survive beyond the first generation. In some cases, a transition may be undermined by a disconnect between the owner's estate plan and the business' succession plan. A transition can be both successful and profitable, however, with patience, persistence, and proper planning.
This entry was posted in Business Succession Planning and tagged Attorney, Business Law, business succession planning, estate tax, family business transfers, Florida, income tax, Sarasota, succession planning, Tax Law on May 23, 2016 by E. John Wagner, II.
Real estate developers routinely use tax-exempt bond financing for infrastructure improvements for new communities. That may change soon. IRS perceives abuse in the process, and has proposed regulations making such bonds taxable if the developer controls the issuing governmental body.
Using enabling statutes under state law, a developer can initiate creation of a governmental body with the power to issue bonds secured by the developer's land. Although other types exist, Community Development Districts (often called "CDDs") are the most common governmental body formed this way in Florida.
Such governmental bodies have historically qualified to issue municipal bonds exempt from federal income tax. Because investors demand a lower absolute interest rate from tax exempt bonds than taxable bonds, these structures allow developers to enjoy a lower financing cost than would otherwise be the case.
The governing officials for such bodies usually are elected through a voting process weighted based on land ownership. In the early phases of development, the developer owns most or all of the land, and therefore controls the governmental body. When the neighborhood is closer to completion–and end-users have purchased lots and other developed property–the developer loses control, and the new property owners oversee the governmental body.
The problem with the IRS proposed regulations is that the developer always controls the governmental body when making the initial infrastructure improvements–such as roads and utility infrastructure–for a community. At that time, there is no community in which end users can buy lots, homes, or other property. By prohibiting developer control, the proposed regulations could eliminate–or severely restrict–this form of financing.
The IRS is considering taxpayer comments suggesting an exemption from the new rules for early-stage developments under developer control. This may provide a middle ground that limits abuse, but permits legitimate infrastructure improvements by governmental bodies that are reasonably expected to eventually be controlled by a widely disbursed group of end-user owners. As usual, the devil is in the details. For example, it may be difficult to fit larger, multi-phase communities within such rules. Unfortunately, with these proposed regulations, the IRS has put the burden on taxpayers, rather than itself, to design a workable framework. Comments are due to IRS by May 23.
This entry was posted in Tax Exempt Organization and tagged Attorney, Business Law, CDD, community development district, Developer, Florida, governmental body, improvement district, IRS, local government, municipal bonds, political subdivision, private faction, real estate, Sarasota, state government, tax exempt bonds, Tax Law on May 20, 2016 by E. John Wagner, II.
On May 18, 2016, the Department of Labor raised the minimum salary level that certain employees must be paid to qualify as exempt from the overtime pay requirements of the Fair Labor Standards Act. Under current regulations, executives (supervisors), administrative employees and professionals, must both perform "exempt" duties as defined by the DOL and be paid a guaranteed salary of at least $455 a week ($23,660 annually). This new regulation significantly increases the salary threshold to $933 a week ($47,476 annually), however, it does not alter the primary duty test. The federal government predicts that the new rule will result in companies having to pay an additional 4.2 million employees overtime, boosting wages for workers by $12 billion over the next ten years.
Additionally, as noted in comments included in a recent Law360 article, the DOL's rule, while potentially extending overtime protections to 4.2 million more employees, may also have adverse effects for certain employees. In an effort to offset costs businesses may incur as a result of the new rule, both in terms of the expense associated with ensuring compliance, as well as having to pay overtime to formerly exempt employees or sufficiently increasing an employee's salary so as to maintain the exemption, certain employers may reduce rates of pay, cut back scheduled hours to reduce risk of overtime, or offer less generous benefits to non-exempt employees.
This entry was posted in Employment Law and tagged Department of Labor, exempt employee, Fair Labor Standards Act, overtime on May 18, 2016 by Lindsey L. Dunn.
In the wake of the Panama Papers leak, Treasury promulgated proposed regulations that require a US disregarded entity that is wholly-owned by a foreign owner to comply with the reporting, record maintenance, and associated compliance requirements that currently apply to US corporations that are owned 25% or more by a foreign owner under Code section 6038A, including the obligation to file Form 5472. The regulations also expand the types of transactions that must be reported. For example, contributions and distributions between the disregarded entity and its foreign owner would be subject to reporting even though these transactions would otherwise be ignored for tax purposes because of the involvement of the disregarded entity.
This entry was posted in International Tax and tagged 6038A, Attorney, Business Law, disregarded, disregarded entity, disregarded LLC, Florida, foreign, foreign-owned, Form 5472, international, Panama Papers, reporting requirements, Sarasota, Tax Law, tax reporting on May 16, 2016 by Michael J. Wilson.
Who Will Pay for IRS's 600+ New Enforcement Personnel?
The IRS recently announced it will hire between 600 and 700 new enforcement personnel.
The Commissioner indicated the IRS needs the hires to replace employees lost to attrition and retirement. He did not, however, specify exactly who will enjoy the civic opportunity to fund IRS's almost 1,000% expected return on its investment.
This entry was posted in Tax Controversies and tagged Attorney, Business Law, Florida, Internal Revenue Service, Sarasota, tax audit, Tax Law on May 11, 2016 by E. John Wagner, II.
This entry was posted in Self Employment Tax and tagged Attorney, Business Law, disregarded entities, estimated tax payments, FICA, Florida, partnership tax, payroll tax, Sarasota, SECA tax, Tax Law, withholding tax on May 9, 2016 by Michael J. Wilson.
Independent Contractor or Employee? That is the Question!
A person can provide services to a company as an employee or an independent contractor depending upon the nature of the relationship between the service provider and the company. Misclassification of employees as independent contractors remains a primary focus of many government agencies, including the IRS, U.S. Department of Labor, Florida Department of Economic Opportunity Reemployment Assistance Programs, and Florida's Division of Workers' Compensation. Investigations by these agencies can be extremely costly, time-consuming, and even lead to personal liability and criminal penalties!
The presentation in the following link explains the detailed federal and Florida tests that are used by these four agencies to properly classify service providers. It also provides practical examples in which the tests can be applied. Additionally, the presentation includes guidance to help mitigate the potential for employer liability regarding other wage and hour complexities and pitfalls.
This entry was posted in Employment Law and tagged Attorney, Business Law, Department of Labor, employee, Florida, Florida Department of Economic Opportunity Reemployment Assistance Programs, Florida's Division of Workers' Compensation, independent contractor, Internal Revenue Service, IRS, Sarasota, Tax Law, worker misclassification on May 5, 2016 by Gail Farb.


Section 508 of the Rehabilitation Act of 1973, as amended in 1998 requires Federal departments and agencies, including the U.S. Postal Service, to comply with accessibility requirements when procuring, developing, using or maintaining electronic and information technology (E&IT), unless doing so causes an undue burden. This article will discuss the development of the Section 508 Standard and its implications.
In 1998, Congress amended the Rehabilitation Act and strengthened provisions covering access to information in the Federal sector. Section 508 requires access to the Federal government's electronic and information technology. The law covers all types of electronic and information technology in the Federal sector. It applies to all Federal agencies when they procure, develop, use or maintain such technology. Federal agencies must ensure that this technology is accessible to employees and the public to the extent that it does not pose an "undue burden." The law directed the Access Board to develop accessibility requirements for this technology and for those the Section 508 Standard to become part of the Federal procurement regulations.
The Access Board is an independent Federal agency devoted to accessible design for people with disabilities. On December 21, 2000, the Board issued accessibility requirements for electronic and information technology under Section 508. The Board also develops and maintains accessibility guidelines for the built environment, transit vehicles and telecommunications products under other laws, and enforces design standards for federally funded facilities. Presented here is an overview of the new Section 508 Standard.
The Access Board drew from its experience, in developing and maintaining design guidelines for the Americans with Disabilities Act and design standards for the Architectural Barriers Act. It also incorporated into the Section 508 Standard many guidelines that the Board developed for accessible telecommunications products and services under Section 255 of the Telecommunications Act of 1996.
The scope of section 508 is limited to the Federal sector. It does not apply to the private sector, nor does it generally impose requirements on recipients of Federal funds.
Shortly after the law was enacted, the Access Board developed an advisory committee to develop recommendations on the requirements to be developed. In May 1999, the Electronic and Information Technology Accessibility Advisory Committee (EITAAC) completed its work and presented its recommendations to the Board. The committee consisted of 27 representatives from industry, various disability organizations and other groups with an interest in the issues to be addressed. On March 31, 2000, the Board published a Notice of Proposed Rulemaking based closely on the Committee's report. The proposed requirements were available for public comment for 60 days through publication in the Federal Register. The Board sought information and comment on various issues through questions it posed in a discussion provided in the proposed rule. Over 100 individuals and organizations submitted comments on the proposed requirements. The comments were submitted by Federal agencies, representatives of the information technology industry, disability groups and persons with disabilities. The Board finalized its requirements in accordance with its review of the comments and published them in the Federal Register. The amended 508 Standard became part of the Federal Acquisition Regulations to help Federal agencies determine whether or not a technology product or system is accessible.
Section 508 uses the Federal procurement process to ensure that technology acquired by the Federal government is accessible. The law also sets up an administrative process under which individuals with disabilities can file a complaint alleging that a Federal agency has not complied with the standards. This process uses the same complaint procedures established under Section 504 of the Rehabilitation Act (which covers access to Federally funded programs and services). Individuals may also file a civil action against an agency to seek injunctive relief and attorney's fees. The enforcement provisions for section 508 took effect on June 21, 2001.
By statute, the enforcement provisions of Section 508 apply only to electronic and information technology procured on or after the effective date. As a result, Section 508 does not authorize complaints or lawsuits to retrofit technology procured before this date to meet the Board's standards. However, even though Section 508's enforcement mechanisms apply only to procurement, the law does require access to technology developed, used or maintained by a Federal agency. Further, other sections of the Rehabilitation Act require access to Federal programs (Section 504) and accommodation of Federal employees with disabilities (Sections 501 and 504); it is possible that Federal agencies will use the amended Section 508 Standard as a yardstick to measure compliance with these other sections of the law.
A federal agency does not have to comply with the technology accessibility standards if it would pose an undue burden to do so. This is consistent with language used in the Americans with Disabilities Act (ADA) and other civil rights legislation, where the term 'undue burden' has been defined as "significant difficulty or expense". However, even if an undue burden is claimed, Section 508 requires Federal agencies to provide people with disabilities access to the product or information affected through alternative means.
Question: What entities are covered by section 508?
Answer: Section 508 requirements pertain to Federal agencies. The law is not a directive to the industry. The Standard enhances accessibility for both Federal employees and public users of those agencies. For example, if you work for a non-profit organization that recently purchased an uncaptioned privately produced video, the 508 requirements would not apply to your situation because the video is not Federal property.
Question: When was the effective date of enforcement?
Answer: Section 508 requirements are only enforceable in relation to procurements that occurred after June 25, 2001. Generally speaking, it will take time for new E&IT to gradually displace some types of older E&IT. If you have a complaint about a Federal interactive voice response (IVR) system, for example, one would need to determine if that IVR system was procured after June 25, 2001 to establish if its procurement was actionable under Section 508. If it was procured before June 25, 2001, then you might request a reasonable accommodation under Sections 501 or 504 of the Rehabilitation Act, but that IVR system complaint would not be actionable under Section 508. With regard to IVR systems, an agency's responsibilities extend beyond the procurement of the system's capabilities. The agency must ensure that it is programmed accessibility before making it available for employee or public use. That could include TTY accessibility of the voiced information; time-out warnings and means of extension; and other issues.
Question: What is the difference between accessibility and accommodation?
Answer: Accessibility happens before the fact and accommodation generally occurs after the fact. Section 508 addresses accessibility, not accommodation. Accessibility addresses the design of technology, not the needs of specific individuals. If a Federal agency, for example, were to purchase a new phone system, section 508 would require all of the new phones to be hearing aid compatible. It would not require the agency to understand inductive listening or to survey how many hard of hearing people are in the agency. Section 508 is technology-centered, whereas accommodation (Sections 501 and 504) is person-centered.
Question: Does a product have to be perfectly accessible in order to be purchased by a Federal agency?
Answer: Federal agencies may procure E&IT that is non-conforming with the 508 Standard, by claiming an exception. Such exceptions are listed in Subpart A of the Standard and may include: lack of commercial availability and concern that conformance will fundamentally alter a product. If an Agency claims an undue burden, it must still find a way to provide access to the E&IT using alternative means.
Question: How does one evaluate a product for 508 conformance?
Answer: There are basic questions to consider before focusing on testing methodology or who is responsible for the assessment.
First, it is assumed that the product is truly electronic and information technology (E&IT) as defined in the section 508 Standard. Sometimes this classification is challenging, as in the case of some laboratory research equipment, for example. Just because a device is electronic does not mean it falls into the category of E&IT.
Second, you need to determine which technical provisions apply to the product. Many provisions listed in Subpart B will not apply to particular products. For example, if you are evaluating a website and there is no animation, then the animation provision does not apply. Also, it is not unusual for provisions from more than one category in Subpart B to apply to a particular product. For example a procured computer may have installed software, so both computer and software provisions will apply. Therefore, it is important to think of products in terms of their "functionality" rather than to ask "which category" the product falls under. It may be a converged product for which more than one section of Subpart B applies.
Third, you need to describe in detail how the product conforms to each of the applicable provisions. If you are not making the determination yourself, you may want to clearly document the source of your information. For example, if you are a vendor, you can list the product in the "Buy Accessible" database on the section508.gov website, which is used by Federal agencies as a source of product accessibility information. If you are a Federal requiring-official, you may want to specify applicable provisions, when possible, in your request for proposals.
Why is Section 508 important?
1.) Section 508 is proactive. In many cases, because the solution is provided in advance, the design will not require users to disclose their disability and ask for help. Accessible design increases independence of people with disabilities, regardless of whether they need accommodations. It reduces barriers to E&IT up-front, in much the same way that the ADA (Americans with Disabilities Act) and ABA (Architectural Barriers Act) help remove many architectural barriers.
2.) Section 508 helps drive accessible design. Companies compete to develop products that conform to the 508 standard. This results in products with more accessibility features and improved features.
3.) Section 508 spills accessibility technology into society. Product features developed for the purpose of meeting Federal procurement regulations are being retained and incorporated in products sold outside the Federal government as well.
4.) Section 508 serves as a Federal model for accessibility. Entities outside the Federal government have voluntarily chosen to incorporate the Standard. Some states, universities and fortune 500 companies, for example, have designed their web sites to conform to the provisions in the 508 Standard.
5.) Section 508 is enforceable. Federal agencies can be sued if they don't comply. This is one reason why the Section 508 standard is taken very seriously and has received a lot of attention. Complaints must be filed by people with a disability. The complaint can be filed directly with the Federal department or agency alleged to be in noncompliance, and they will investigate it using existing administrative procedures for handling Section 504 inquiries. The complainant may also file a civil action. If an agency is determined to be non-compliant with regard to a procurement action, complainants are entitled to injunctive relief (not punitive damages) and to recover reasonable attorney fees.
6.) The Federal government is accountable. Section 508 requirements are considered by many to have been successfully implemented to date. This is due, in part, to the cooperative effort of over 20 departments and agencies called the Federal Information Technology Accessibility Initiative. The 508 Working Group also won the E-Gov 2003 Explorer Award for its outstanding efforts to change the way that the Federal government purchases electronic and information technology. This working group reports to the Section 508 Steering Committee, which was recently adopted and institutionalized by the Federal CIO Council. In addition, all Federal agencies have Section 508 Coordinators who serve as resources.
7.) Section 508 increases employment opportunities for persons with disabilities in the Federal government. It also supports full participation by the public who use Federal government products and services.
The Access Board and General Services Administration (GSA) are authorized by statute to provide technical assistance on Section 508. GSA maintains the section508.gov web site. The ITTATC is funded by the U.S. Department of Education to provide additional technical assistance.
Baquis, D. (2003). Federal standard for electronic and information technology. Information Technology and Disabilities E-Journal, 9(2).


text:
Holder: Golf a game with one goal, and many languages
Gord Holder, Postmedia
Atthaya Thitikul and Kultida Pramphun assure us that golf in the Thai language sounds a lot like English: A putter is still a putter and a green is still a green.
"Bunker," however, is something else.
To begin with, the Thai equivalent for "bunker" comprises a series of symbols unlike anything contained in this newspaper's software programs. Upon hearing Thitikul and Pramphun say it, the word also sounds more like "sigh," which at least approximates a sound all too familiar to golfers whose wayward shots settle into those sandy hazards guarding the margins of putting surfaces.
It's the Thai word for "bunker" and it sounds something like "sigh." Gord Holder
Of course, "bunker" also sounds vaguely like "sha-kung" for Taiwan's Yu Ping Huang, but it's just an accented "sandbunker" for Denmark's Anne Normann. Alternatively, it's "fosse de sable" for Frenchwoman Candice Mahé, but it's not that for Quebecer Céleste Dao.
Welcome to the universe of golf, or at least that portion of it on display this week during the fifth annual World Junior Girls Championship, taking place from Tuesday through Friday at Camelot Golf and Country Club in Cumberland and in the national capital region for the third time overall.
The field features a pair of three-player teams from Canada and 17 other trios from around the globe pursuing team and individual championships.
Be prepared for phrases such as "jeg slår" and "et slag," which translate from Danish as "I hit" and "a shot," depending on whether the key sections are being used as verb or noun.
There's also the Spanish "hoyo" and "bandera" to designate the hole and flagstick that are the golfers' targets while they try to avoid the Flemish "hoog gras" or rough on both sides of the fairways and around the 18 greens at Camelot, where the golfers will compete over a layout of slightly more than 6,200 yards.
Dao, a Montrealer, probably comes closest to standing as a linguistics expert for the six players wearing home-team uniforms this week because of her fluency in both official languages and recent golf-related travel to Mexico, Japan, Ireland and Argentina. In case you missed the earlier news, she's a skilful player, too, having captured the Canadian and Mexican junior girls' championships and two rounds each in the LPGA Tour's CP Women's Open in Regina and the Women's U.S. Open.
All her playing partners in the 2018 Opens spoke English, so neither translation nor hand signals was required, unlike last year's world junior championship at The Marshes Golf Club in Kanata, where one of her playing partners was Italian.
"I had to do gestures or signs like this," Dao said, waving her hands in a small circle, "to speed up the pace, or stuff like that. If I had a (conversation with) a rules official, she couldn't understand the rules official, so she needed to go see her coach to translate."
How do you say… Tony Caldwell / Postmedia
It's frequently a similar story with off-course matters. Dao had to learn "agua" so tournament volunteers could bring her water in Mexico and "Konnichiwa" so she could politely greet Japanese hosts, plus there was what must have been a comical attempt to order a grilled cheese sandwich in Argentina, including an online search for images of that delicacy.
Fortunately, as Dao tells it, most players she encounters in international golf competition know at least enough English to offer "three, four or five" when it's time to mark scorecards after each hole.
"I use my terms," she said. "There's English, but there's French, too. And I know that my term isn't (always) the same as the French girl from France. The bunker, I say, 'trappe de sable.' And I know the French girls, they say, 'fosse,' but I never say that.
"One time there was a girl that asked me to move my marker, and she said a thing and I was like, 'Oh my god, this is so pretty from France.' It was mind-blowing. I have never thought of saying it that way.
"Est-ce que vous pouvez décoller votre marquer, I'll never say that. I'll say est-ce que tu peux bouger ton marquer."
Of course, it could go the other way, too.
Quebec's Office de la langue française once included "Fore!" in its golf terminology guide, but Mahé stressed that the appropriate alert to off-target drives was a clear "Balle!"
Keep in mind, we'd also be back to "For!" in Italian and to "Fore" in English or Swedish.
There also seemed to be something verging on consensus about the biggest club in the bag during a survey of world championship competitors during Monday's junior-amateur pre-tournament team event, but there was a wide variation in descriptions for the little white sphere that the "driver" propelled distances near and far and wide.
It might be a "golf ball" to you and me, but it's "golf bold" to Normann, "micek" to Czech Republic's Gabriela Vitu, "pallina da golf" to Italy's Emilie Paltrinieri.
At least Dao and Mahé referred to it as "balle," so we have that going for us when we try to place it on our Swedish "utslagsplats," or tee.
gholder@postmedia.com
Twitter.com/HolderGord
Newsmaker of the decade – Brooke Henderson: Canada's winningest pro golfer... Facts on the World Junior Girls Golf Championship
'I like the path we're on,' head coach Khari Jones says after re-signing with Montreal ...
The Sens Panel: Evaluating the team at the 20-game mark and what trade scenarios make ...
'November is going to be quite crazy': Senators preparing for 16 games in 28 days
Senators impress with comeback win over Vancouver Canucks, send a few to Belleville
The Sens Panel S2 Ep 17 | Losing streak, Anderson's future, Mark Stone comes home
Game day: Ottawa Senators vs. Las Vegas Knights
Senators skid keeps going with overtime loss against Blackhawks
Memories: Reminders of Sens' turnover come with Zack Smith's return as a Blackhawk
NHL Scoreboard
Detroit 3 Final
Florida 5:00 PT6:00 MT7:00 CT8:00 ET1:00 GMT9:00 6:00 MST7:00 CST8:00 EST5:00 UAE (+1)20:00 ET23:00 BRT
Detroit 100 Final
Toronto 122 Final
Philadelphia 117 Final
New York 66 5:30
Cleveland 56
Oklahoma City 62 8:05
Sacramento 63 6:35
Chicago 59 6:57
New Orleans 76 8:54
Orlando 72 3:16
LA Lakers 4:30 PT5:30 MT6:30 CT7:30 ET0:30 GMT8:30 5:30 MST6:30 CST7:30 EST4:30 UAE (+1)01:3019:30 ET6:30 CT22:30
Denver 5:00 PT6:00 MT7:00 CT8:00 ET1:00 GMT9:00 6:00 MST7:00 CST8:00 EST5:00 UAE (+1)02:0020:00 ET7:00 CT23:00
San Antonio 6:00 PT7:00 MT8:00 CT9:00 ET2:00 GMT10:00 7:00 MST8:00 CST9:00 EST6:00 UAE (+1)03:0021:00 ET8:00 CT0:00
Indiana 6:00 PT7:00 MT8:00 CT9:00 ET2:00 GMT10:00 7:00 MST8:00 CST9:00 EST6:00 UAE (+1)03:0021:00 ET8:00 CT0:00
Golden State 7:00 PT8:00 MT9:00 CT10:00 ET3:00 GMT11:00 8:00 MST9:00 CST10:00 EST7:00 UAE (+1)04:0022:00 ET9:00 CT1:00
Texas 12:05 PT1:05 MT2:05 CT3:05 ET15:05 ET20:05 GMT4:05 1:05 MST3:05 EST2:05 CST3:35 VEN0:05 UAE (+1)2:05 CT
NFC 12:00 PT1:00 MT2:00 CT3:00 ET20:00 GMT4:00 1:00 MST2:00 CST3:00 EST2:00 CT0:00 UAE (+1)15:00 ET18:00
Thursday, Jun. 11
BC 9:00 ET
Friday, Jun. 12
Toronto 7:00 ET
Montreal 10:00 ET
Saturday, Jun. 13
Winnipeg 7:00 ET
67's top Generals, win four straight
SNAPSHOTS: Ottawa Senators head into break on a winning note
Ottawa's Gabriela Dabrowski heading into Australian Open on an upswing
LET'S MAKE A DEAL? San Jose Sharks GM could be ready to play
Ottawa 67's are rolling again with their third straight win Saturday
GARRIOCH GAME REPORT: Hogberg helps Senators avoid a double-digit losing streak
LOCAL HERO: Jeff Hunt could add Ottawa touch for new pro soccer team
GAME DAY: Flames at Senators

redpajama_set_name: RedPajamaCommonCrawl


text:
Pick Your Language
East Side Table is hiring a part-time Senior Coordinator!
East Side Table seek a part-time project coordinator for our senior food access pilot beginning spring 2018 through October 2018. East Side Table is working to address access to healthy food and development of new food skills with East Saint Paul's diverse communities. Initiative include Make-at-Home Meal Kits from Local Crate, community events, cooking class, and community meals. Additional details here: East Side Table Senior Coordinator job description.
The East Side Table senior pilot's goal is to improve the health and well-being of East Side senior residents by increasing access to health food and opportunities to dine with neighbors, family, and friends. The main activities include small community meals with an individual community co-host, the development of an East Side Table Senior Advisory Council, and inter-generational community meals during the summer months. The Senior Coordinator would
We're looking for someone with experience in working with senior populations, a passion for food access and cooking, and an understanding of the vibrancy and diversity of the East Side of Saint Paul communities. Hours range from 10-20 a week, including some evening and weekends with flexible schedule.
For more details and to apply: Send resume and letter of interested to info@eastsidetable.org or call 651-300-2505.
-East Side Table
Partner Spotlight: University of Minnesota Extension
University of Minnesota Extension Health and Nutrition is a program of the Center for Family Development. Their focus is making the healthy choice the easy choice for all Minnesotans, through research, education and engagement in the community. Extension Health and Nutrition staff work on systems-level issues of food access and policy as well as food skills and education. They have two federally funded nutrition education programs that serve income-qualified populations; SNAP-Ed (Supplemental Nutrition Assistance Program Education) and EFNEP (Expanded Food and Nutrition Education Program), as well as a cooking intensive curriculum called Cooking Matters. All three programs have worked with partners on the East Side to provide nutrition tips and cooking knowledge to seniors, adults, children and families.
Extension joined East Side Table in 2017 to see how their Health & Nutrition programs could support current and future projects around healthy food, specifically the Make-at-Home Meal Kits! It has been a huge privilege to get to know extension and learn from their shared wisdom and experience working on nutrition and healthy eating projects throughout the Twin Cities. We have all been excited to share ideas and resources such as grocery store tours for meal kit participants, connecting partners with SNAP-Ed, EFNEP and Cooking Matters classes, and engaging with partners about how to increase healthy food access for all East Side residents.
Thank you to Laura Bohen and the rest of University of Minnesota Extension for their dedication to healthy food access and nutritional knowledge throughout the East Side Saint Paul community!
Partner Spotlight: East Side Family Clinic
The East Side Family Clinic and Irene Alton have been an integral part of the foundation of East Side Table. By helping provide nutrition education tools, teaching healthy eating workshops, and bringing the valuable perspective of a registered dietitian, we have been able to keep the health of the East Side community as a top priority! Read below to learn the other great work that Irene and the East Side Family Clinic does for the East Saint Paul community.
The East Side Family Clinic, as part of West Side Community Health Services, provides high quality health care regardless of ability to pay. Those without health insurance are supported through a discount (sliding fee scale) program. Comprehensive services, provided by bilingual and bicultural staff, include primary, specialty, urgent and preventive health care for all ages; mental health, social work and nutrition counseling; dental care, discounted pharmacy, transportation and assistance with health plan enrollment. All are welcome. Nutrition services are available to anyone, regardless of where they receive medical care.
The East Clinic nutritionist's role as a member of the East Side Table includes authorship of nutrition education materials, advocacy for healthy, affordable and easy to replicate meal kit recipes and patient referrals to the meal kit program. East Side Table is especially excited to have Irene at the table as we gear up for our next round of Make-at-Home Meal Kits; picking culturally representative AND healthy recipes, planning nutrition classes with East Side partners, and finding fun ways to include nutrition education in our upcoming events.
Thanks to West Side Community Health Services and Irene at the East Side Family Clinic for your dedication and commitment to increasing access to healthy food for all on the East Side of Saint Paul!
Join us at the table!
Welcome to Table Talk, East Side Table's space for updates and exciting info! This page will be dedicated to East Side Table happenings, East Side community, and the 13 local partner organizations that help make it all come together. Each post will focus on sharing our current progress with our Make-at-Home Meal Kits, East Side Saint Paul community events, and spotlights of our important partner groups and their impact on the East Side Saint Paul community and East Side Table. So please, take your seat at the table and enjoy!
We would also love to know your interests as readers and community members. If you have a topic or question you would like to bring up for East Side Table or if you're interested in an advisory council role, being a part of the Make-at-Home Meal Kit program, or attending an upcoming event, please email us at info@eastsidetable.org or comment on our Facebook page!
Copyright © 2022 East Side TableTheme by SiteOrigin
Select list(s) to subscribe to East Side Table info
Example: Yes, I would like to receive emails from East Side Table. (You can unsubscribe anytime)
By submitting this form, you are consenting to receive marketing emails from: Fairview Health Services, 1690 University Ave. West, Saint Paul, MN, 55104. You can revoke your consent to receive emails at any time by using the SafeUnsubscribe® link, found at the bottom of every email. Emails are serviced by Constant Contact


SCATS is able to show menu items for its GUI application interfaces in another language other than the default English. This is due to special software that allows countries whose languages use the International Codes for their own letters and characters to be substituted for the english ones.
This foreign language support feature makes it easier for operators to use the system locally and issues with interpretation of technical traffic related definitions.
What SCATS Version is Required?
To implement foreign language support, you must be using SCATS Version 6.7 or greater.
Can I retrofit to existing SCATS?
You can retrofit the foreign language feature if your SCATS System is version 6.7 or greater.
You can also update your existing SCATS platform to the latest version and implement the foreign language feature at the same time.
Contact ATC's Marketing Manager for details by completing an Enquiry Form.


An innovative partnership is seeking to transform Perth and Kinross into the leading region for the renewable energy sector in Scotland.
Nine Perthshire businesses are to collaborate with Perth and Kinross Council's inward investment campaign, Invest in Perth, in a drive to promote the area to industry leaders.
The partnership will initially attend the hugely influential All Energy trade show, taking place at the Glasgow SECC on May 6 and 7 to showcase both the individual firms and to highlight to the 7000 industry professionals attending the vast benefits of setting up operations in Perth City Region.
Following on from the event, Invest in Perth will be working extensively with the local businesses, which work primarily in the renewable sector, to produce a range of in-depth case studies highlighting the success of these firms and emphasising the potential for investment in the area.
Kilmac Construction, a civil engineering firm and renewables developer, currently employs 80 staff on long term contracts from its headquarters in Perth and is one of the nine employers attending the All Energy Show alongside Invest in Perth.
Derek Ross, Group Director at Kilmac, said: "For us, the decision to locate in Perth was down to the huge benefits of a central location – within reach of the industry hubs of Aberdeen and Dundee and the economic hubs of Edinburgh and Glasgow.
"We believe that Perth is primed for further green investment, into a sector which is very forward thinking, adaptable and likely to be a key employer in Scotland for the foreseeable future.
"In the ten years that we have operated from Perth we have witnessed the area evolve in a very positive way – the response to Perth's city status has enabled us to become more ambitious, attracting young professionals who may once have only considered work in the larger cities.
Other businesses attending the show as part of the Invest in Perth collaboration will include: SME Utilities; My Eco Solution; Green Highland Renewables; Smith Gore; Campbell Dallas; Liquid Ventures; RTS and Sawdust Woodfuels.
Stuart Oliver, of Invest in Perth, said: "We have identified the renewable energy sector as a key industry that we would like to attract to the area, capable of bringing with it meaningful and skilled employment and training opportunities.
"Across Perthshire we can already boast a good number of innovative SME's working across a wide range of specialties contributing to the renewables sector, which can range from bespoke manufacturers to land agents.
"We are now making a concerted effort to make Perth City Region accessible and desirable to large firms, whilst acting as an incubator hub for striving start-ups, as we strive to create an industry hub.
Our PR services could help boost your business profile. To find out how we can help call us on 0131 561 2244 or fill in the form below and we will get right back to you.


text:
Mayor Bloomberg to Media Industry: We're Here to Help…
10 years ago	0 0
MediaPost:
"The City of New York yesterday introduced a multi-pronged initiative to help its struggling media sector. It offers a variety of plans that focus on innovation, research, retraining and new technology. "With the media industry undergoing profound changes it's incumbent on us to take steps now to capitalize on growth opportunities and ensure New York remains an industry leader," said Mayor Michael Bloomberg.
The effort includes the formation of the New York City Media Lab, a research center for media companies, universities and others to collaborate on research and share findings. The center provides a physical center for networking, lectures and workshops. The city will also start a Media and Tech Fellowship program to encourage start-ups	and innovation. In addition, the city will pay for a new center for media freelancers in lower Manhattan.
When it comes to education, Bloomberg wants to create a training program called JumpStart New Media that will include a "boot camp" and	10-week unpaid "apprenticeships" with new media companies."
Advertising Innovation & Technology Media NYC Research Retraining Technology Training


Enjoy added space and comfort in this one room studio suite featuring a king-size bed, a sofa bed in the seating area for extra guests and work space with a large desk and free WiFi access. Take advantage of convenient amenities including an in-room coffeemaker, mini-refrigerator and microwave.
Take in views of the water from this one room studio suite, featuring one king-sized bed and a sofa sleeper in the living area. Watch movies on the 49-inch HDTV and stay connected with free WiFi access.


Software That Carries Out Tasks On Behalf Of Sleeping Computers Could Lead To Energy Savings.
The University of Virginia Alliance for Computational Science and Engineering (UVACSE) is pleased to announce that registration is now open for our annual High-Performance Computing Boot Camp. The HPC Boot Camp is a FREE, one-week short course intended for scientists and engineers who wish to learn the basics of high-throughput and parallel computing. Topics covered include MPI for distributed systems and OpenMP for multicore systems.
This year the HPC Boot Camp will take place from Monday, June 14 through Friday, June 18. Morning sessions last from 8:30 to noon and consist of lectures on the topics. Afternoon sessions are 1:30 pm to 5 pm and are hands-on practice. Snacks will be provided for the morning and afternoon sessions. Attendees should be competent at programming in C, C++, or Fortran.
Anyone affiliated (student, staff, faculty) with a college or university in the Commonwealth of Virginia is eligible to register for the course at no charge. However, we cannot cover travel expenses for those coming from out of town.
To register, please visit http://uvacse.virginia.edu/education/#course7 and click the Register button.
The Matlab community of computational practice is being established to provide a place, both physically and within the cyber-infrastructure, for members of the local Matlab programming community to get help, exchange ideas, and keep abreast of developments in the use of Matlab for doing computational research.
The community launch event will provide pizza and soft drinks (come early).
Several random drawings will be computed (what else?) for swag donated by the MathWorks (shirts, usb hubs, flashlights).
This event is meant to social as well as be informational.
January 7th is International Programmers' Day. Celebrate the accomplishments and contributions of computer programmers who are ultimately responsible for many of the conveniences we enjoy such as DVR, direct deposit, web surfing, online bill paying, cell phones, etc. Behind most modern day conveniences, there's a computer programmer. When you see him or her, thank them for all they've done and do!


As a seasoned TV personality, Jacky Wu is no stranger to the Mandarin-speaking community. Famously the host of Taiwanese variety show Guess, Wu's quick wit has won him the hearts of many, and now with the help of his entourage of entertainers, Kang Kang, Sun, Jason Chung, Shin Lun and his singer son LucyPIE, fans are in for an eclectic showcase of comedy and music at the Arena of Stars. Get your tickets now!


DENMARK — Monday through Wednesday, April 15-17, Denmark Arts Center hosts its April Vacation Art & Fun Camps event.
Circus Camp, 9 a.m. to 2 p.m. Monday, April 15. Conducted by professional clown Michael Trautman. This introductory experience is for kids ages 8 to 12. Campers will learn fundamental skills including juggling, tumbling, balancing, mime, physical comedy and more. Expect lots of fun, creativity and physical activity.
Felt Fun, 9 a.m. to 2 p.m. Tuesday, April 16. Taught by Kendra Rafford. For folks with crafty kids. Let them experience the world of wet felting where fluffy wool is transformed into firm felt objects. When heat, moisture and agitation are applied to wool, the fibers interlock creating a strong bond. Felting is an engaging, tactile craft. In this class kids will explore felting while making both flat and 3-dimensional felt. Once they learn the basic skills needed to make beads, ropes and flat felt they can create all kinds of projects.
Kids felting as part of the Felt Fun camp session.
Little Brother Little Sister: Toddler Music for Fun, two sessions: 10 to 11 a.m. Wednesday, April 17, for 1-4 year olds and their parents; second is scheduled for 11:15 am. to 12:15 p.m. for 5-7 year olds. Taught by Sharon Novak of Mountain Top Music Center. Little campers will love and understand the songs shared in each session. Toddlers will have fun and not know they are learning while they play. Children will always be moving in every class, experiencing beats and rhythms by doing their favorite things like clapping their hands and jumping up and down.
For more information, email [email protected], call 207-256-2510 or visit visit their website at denmarkarts.org.


text:
Q: Nested ForEach + ScrollView Header causes Glitches Inside of a Scrollview I use a LazyVStack with a pinned header, and based on the scroll position I manipulate the scale of that header.
In the LazyVStack, I have a ForEach iterating over some list of items. However, if I use a nested ForEach loop (to have, say, items grouped together by month), the scrollview becomes extremely glitchy/jumpy.
Minimum reproducible code:
struct Nested: View {
    @State var yValueAtMinScale: Double = 100 // y value at which header is at minimum scale (used for linear interpolation)
    @State var headerScale = 1.0
    var restingScrollYValue = 240.0 // y value of scroll notifier when scrollview is at top

    var body: some View {
        ZStack {
            ScrollView {
                LazyVStack(pinnedViews: [.sectionHeaders]) {
                    Section(
                        header:
                            Circle()
                                .fill(Color.red)
                                .frame(width: 150, height: 150)
                                .scaleEffect(CGFloat(headerScale), anchor: .top)
                                .zIndex(-1)
                    ) {

                        // scroll position notifier
                        // i set the header's scale based on this view's global y-coordinate
                        GeometryReader { geo -> AnyView in
                            let frame = geo.frame(in: .global)
                            print("miny", frame.minY)
                            DispatchQueue.main.async {
                                self.headerScale = calculateHeaderScale(frameY: frame.minY)
                            }
                            return AnyView(Rectangle()) // hack
                        }
                        .frame(height: 0) // zero height hack

                        ForEach(1...10, id: \.self) { j in
                            Section {
                                Text("\(j)")
                                // works without nested loop
                                ForEach(1...3, id: \.self) { i in
                                    Rectangle()
                                        .frame(height: 50)
                                        .padding(.horizontal)
                                        .id(UUID())
                                }
                            }
                        }
                    }
                }
            }
        }
    }

    // interpolates some linear value bounded between 0.75 and 1.5x, based on the scroll value
    func calculateHeaderScale(frameY: CGFloat) -> Double {
        let minScale = 0.75
        let linearValue = (1-minScale) * (Double(frameY) - yValueAtMinScale) / (restingScrollYValue - yValueAtMinScale) + minScale
        return max( 0.75, min(1.5, linearValue) )
    }
}

Removing the inner nested ForEach loop removes the problem. What could be going on here? I figured updating the header scale on every scroll update would be too many view updates and cause glitches, but that doesn't explain why it works with one ForEach loop.

redpajama_set_name: RedPajamaStackExchange


Dessin Coloriage Gratuit A Imprimer is awesome home design for your home. It's simple to implement at your home, designed with awesome ideas, best color schame, and follow trend of home design of the years. Dessin Coloriage Gratuit A Imprimer has been published on August 7, 2018 at 1:20 pm, and Dessin Coloriage Gratuit A Imprimer is also liked more than 365 users.
don't forget to share Dessin Coloriage Gratuit A Imprimer if you like that home design pictures, please help me to grown this website, and you can get awesome home design for free. please share on facebook, google plus, twitter and social media other.


text:
life at JCI
About JCI
Jingdezhen Ceramic Institute is the only institution of higher learning specializing in ceramics in China.It is one of the 31 Chinese universities entitled to enroll art undergraduate students on its own initiative and one of the first 94 Chinese universities authorized to grant Chinese Government Scholarship to overseas students to pursue their Bachelor or Master's degrees in China. It is supported by the National Basic Ability Construction Project of Western and Central China. It is included in the Excellent Engineer Education and Training Scheme initiated by the Ministry of Education. It is a model university for reform in innovation and entrepreneurship education initiated by the Ministry of Education. A university with typical experience in innovation and entrepreneurship and one of the first pilot universities for the transformation of development in Jiangxi.
The French Consul General in Wuhan, Mr. Gui Yonghua and his delegation paid a visit to JCU
JCU students on campus celebrated the Chinese New Year
2021 KSBDA-JCI International Art Special Exhibition was held
Thousands of teachers and students at JCU took part in the flag-raising activity at midnight to welcome 2021
The 18th Art Festival of Society Culture was launched
The "Red Day Reading" team of JCU won many awards in Jiangxi province
JCI was Elected a Member of Council of the China- Europe Education Alliance for Humanities and Arts
JCI Having been selected as the 2020 Talent Training Base Program of Sino-Foreign Exchanges of Humanities in the Field of Intelligent Manufacturing
JCI Held the 110th Anniversary Celebration Kick-off Meeting
Three New Undergraduate Programs Have been Approved
JCI Becomes a Member of the International Association of Universities and Colleges of Arts, Design and Media (CUMULUS)
Six Majors of JCI Being Approved to be 2019 National First-class Major Construction Sites
Official website of Jingdezhen Ceramic Institute
Jiangxi Jingbei 2-4-3-2002185copyright @ 2004-2018address: Jingdezhen Ceramic Institute,Jiangxi ProvinceTel:0798-8499000postal code:333403


text:
UMD Athletics
218-726-8595|umdbulldogs.com
Fri, Feb 24, 7:00 pm to 9:00 pm
One event on Feb 25, 2023 at 8:30 pm
UMD Bulldogs Men's Hockey vs. Miami University RedHawks
| Amsoil Arena
The final regular-season homestand for the UMD Bulldogs men's hockey team is a two-game series with the Miami University RedHawks. The game will be broadcast on KBJR-TV channel 6.3 "My9." The radio broadcast is on KDAL 610 AM and 103.9 FM.
The final regular-season homestand for the UMD Bulldogs men's hockey team is a two-game... more


Question 1: How to configure the type of access to jobs?
1. Public=The Job is accessible to everyone.
2. Whitelist=The Job is accessible only to those who are in the Whitelist.
3. Donator=The Job is only available to members who have a status of vip or donor.
4. Closed=The Job is not accessible.
Note: It is a choice are automatically saved and instant and you are free to change them at any time.
In this example we will enable the Whitelist on the job"Civil Protection Chief"
When you open the menu of the Whitelist the first tab is the list of players logged in, made and right-click on a player and you will see the list of jobs, only configured.
When you open the menu of the Whitelist go to the tab of the jobs configured, and enter the users of the player.
Addwhitelist "Your name" "SteamID64" "Name of player" "Full Access" Addwhitelist "Nordahl Kurger" "76561198033784269" "Chuck Norris" "Civil Protection Chief"
Question 6: This is what the list Full_Access?
When a player is in the list Full_Access it will have access to all the jobs whitelsité.
Question 7: I would like to disable the system temporarily without uninstalling the script it is possible?
Question 8: I have recorded more than 5000 users and I have 250 jobs I would like to find a user in the list to remove it how can I do?
In the search tab enter the users for the user you are looking for.
Question 10: I would like to Reset all the configuration it is possible?
A simple button. Or by command: "MetajolistDe"
Question 12: How to configure the ranks of donors?
If your ranks vip are renamed then replace its values with yours. Attention to capital letters and spaces, if you put a capital letter it is important.
Question 13: To configure keys F1-F4 to open the menu?
Question 14: How to Hide the Jobs for those who are not in the whitelist in the Menu F4?
EXAMPLE with a single trade: "Civil Protection"
customCheck=function(ply) if CLIENT then return PlychangeAllowed(ply,"Civil Protection") else return true end end, --Respectez les majuscules et les espaces!!!
--Why is this not working? If the original name of the job is "Civil Protection" you must follow it in its entirety.
--Spaces in the wrong place:"CivilProtection" or " Civil Protection " or "Civil Protection "
--The wrong name of the business, example: "Mayor"
CWhat is Valid in the name of the Job that is "Civil Protection"
Question 15: I have 300 jobs on my server. How to add job groups by category name to not put them all one by one?
When you open the menu, click on "Category Job" and insert the categories you are interested in, the effect is immediate.
Question 16: How do I take a job off the whitelist when it no longer exists on my server?
In a single button, click on the Cross of this job concerned.
Question 17: How I add ULX rank?
Question 18: When use the API?
Question 19: How use the API?
In the file nordahl_sv/api_whitelistjob_sv.lua there are test commands to understand how works the API.
How it looks the API?
Question 20: How do I make a job accessible only to donors?


text:
Q: make canvas image movable ( draggable ) I have a canvas area and I'm adding some images into and I would love to make my canvas images draggable. I've created mouse events via addEventListener to handle mouse clicks.
But my problem is that I'm able to make draggable all canvas context and not just only my images.
html code:
<canvas></canvas>

part of JS code:
var canvas = document.getElementsByTagName('canvas')[0];
var gkhead = new Image;
var ball   = new Image;
ctx.drawImage(gkhead,0,0,1000, 200);
ctx.drawImage(ball,0,0,100,100);

canvas.addEventListener('mousedown',function(evt){
        document.body.style.mozUserSelect = document.body.style.webkitUserSelect = document.body.style.userSelect = 'none';
        lastX = evt.offsetX || (evt.pageX - canvas.offsetLeft);
        lastY = evt.offsetY || (evt.pageY - canvas.offsetTop);
        dragStart = ctx.transformedPoint(lastX,lastY);
        dragged = false;
    },false);

canvas.addEventListener('mousemove',function(evt){
        lastX = evt.offsetX || (evt.pageX - canvas.offsetLeft);
        lastY = evt.offsetY || (evt.pageY - canvas.offsetTop);
        dragged = true;
        if (dragStart){
            var pt = ctx.transformedPoint(lastX,lastY);
            ctx.translate(pt.x-dragStart.x,pt.y-dragStart.y);
            redraw();
        }
    },false);

canvas.addEventListener('mouseup',function(evt){
        dragStart = null;
        if (!dragged) zoom(evt.shiftKey ? -1 : 1 );
    },false);

And is it event possible to make the first image( gkhead ) graggable just in canvas area and the second( ball ) image moveable just in the area of the first ( gkhead ) image?
HERE is my fiddle
Thank you all in advice.

A: For efficiency, you might set up two separate canvas layers of the same size. One that has all the canvas objects drawn on it, and another that is a blank temporary canvas where you'll do the actual moving of the objects.
You'll also need to store the images in some kind of container, like a JSON-y object. So you'll have some reference, like an x- and y-coordinate, the image source, the width of the image, the height of the image, and possibly the image's z-index. You'll create some kind of hit detection that checks through all the images and, if the user clicks on an image, erase that image from your main canvas. Draw the image in the exact same place on the temporary canvas. Do all the dragging on the temporary canvas (to save on paint times and processing required). Then, on drop, erase the temporary canvas and draw it on the main canvas again.
Here's an example I made a long time ago (just code, sorry). Trying to find some online tutorial about it now.


SAN FRANCISCO and RAMAT GAN, Israel – January 23, 2019 – Preempt, the innovator of the industry's first Identity and Access Threat Prevention solution that stops cyber attacks and internal threats, has been ranked by EMA as among the top three providers for four major security analytics categories globally. The EMA decision guide research report, titled "Security Analytics for Threat Detection and Breach Resolution 2019," is designed to help organizations deliver on the objectives of increased detection, accelerated response and containment, and other measures.
The report, authored by EMA Senior Analyst David Monahan, is the culmination of hundreds of man hours of data collection and review, including customer interviews, vendor interviews, product demos and documentation review. More than 30 companies were included in the ranking. The report can be found here.
Account Compromise Monitoring – Excessive access activity and access patterns: With many attackers using account compromise to access sensitive information, Preempt is recognized as a top solution to identifying suspicious and problematic behavior.
Account Compromise Monitoring – Privilege misuse/abuse: This category takes into account the fact that misuse of privilege is both a major problem and also difficult to detect. Preempt is identified as a top-rated solution for identifying factors from malicious activity, subtle misuse of privilege and outright compromise.
Breach Avoidance Through Predictive Analytics: By analyzing and adapting to different types of behavior, Preempt is considered one of the best solutions for deploying predictive analytics to anticipate, prevent and stop attacks.
Risk Prioritization For Active Security Events: This is an extension of having good overall telemetry for context and prioritization. Preempt helps solve this big use case for getting rid of what amounts to busy work or distractions by putting first things first.
The report was released in January 2019 and can be found here.
Preempt protects organizations by eliminating insider threats and security breaches. Threats are not black or white and the Preempt Platform is the only solution that delivers adaptive threat prevention that continuously preempts threats based on identity, behavior and risk. This ensures that both security threats and risky employee activities are responded to with the right level of security at the right time. The platform easily scales to provide comprehensive identity based protection across organizations of any size. The company is headquartered in San Francisco, CA. Learn more about us at www.preempt.com.
Founded in 1996, EMA is a leading industry analyst firm that specializes in providing deep insight across the full spectrum of IT and data management technologies. EMA analysts leverage a unique combination of practical experience, insight into industry best practices, and in-depth knowledge of current and planned vendor solutions to help clients achieve their goals. Learn more about EMA research, analysis, and consulting services for enterprise line of business users, IT professionals and IT vendors at http://www.enterprisemanagement.com.


Abstract : Bike sharing systems are booming globally as a green and flexible transportationmode, but the flexibility also brings difficulties in keeping the bike stations balanced with enough bikes and docks. Understanding the spatio-temporal bike trip patterns in a bike sharing system, such as the popular trip origins and destinations during rush hours, is important for researchers to design models for bike scheduling and station management. However, due to privacy and operational concerns, bike trip data are usually not publicly available in many cities. Instead, the station feeds about real-time bike and dock number in stations are usually public, which we refer to as bike sharing system open data. In this paper, we propose an approach to infer the spatio-temporal bike trip patterns from the public station feeds. Since the number of possible trips (i.e., origin-destination station pairs) is much larger than the number of stations, we define the trip inference as an ill-posed inverse problem. To solve this problem, we identify the sparsity and locality properties of bike trip patterns, and propose a sparse and weighted regularization model to impose both properties in the solution. We evaluate our method using real-world data fromWashington, D.C. and New York City. Results show that our method can effectively infer the spatio-temporal bike trip patterns and outperform the baselines in both cities.


Talk story about the plastic surgeon, Dr. J. Howard Crum. He not only lifts the face but can change the whole expresseion, as well as the shape of the nose. He performs one operation known as the "simple lift" and another more difficult one - the "Hollywood." He performed a public-face-lifting operation.


text:
Celtic defender Marvin Compper: My best years are ahead of me
Michael Grant, Scottish Football Correspondent
January 16 2018, 12:01am, The Times
Compper says putting the team ahead of individual benefit is the keySNS
There are two stages in the development of a dominant football team: creation and maintenance. When superiority has been established and success achieved, phase two is about consistently keeping to the same levels month after month, season after season. No club rules forever. The alchemy that forms an outstanding side inevitably wears off eventually. When team spirit erodes, the magic goes.
Marvin Compper has seen it happen. He has yet to play a game for Celtic but the new signing has been around the block enough times to offer a valuable insight into how the six-in-a-row SPFL champions can guard against losing their supremacy. Early in his career he was a Hoffenheim player. In 2000 they were a fifth-tier side in Germany but, just as…


text:
import sys
import os
import argparse
import code
import re
import numpy as np
from math import floor, ceil
import numpy
from numpy import array
import scipy
import scipy.io
import scipy.misc
import google.protobuf
from ast import literal_eval as make_tuple
from layers import *

# --------------------------------------------------------------------
#                                                  Check NumPy version
# --------------------------------------------------------------------

def versiontuple(version):
  return tuple(map(int, (version.split("."))))

min_numpy_version = "1.7.0"
if versiontuple(numpy.version.version) < versiontuple(min_numpy_version):
  print 'Unsupported numpy version ({}), must be >= {}'.format(numpy.version.version,
    min_numpy_version)
  sys.exit(0)

# --------------------------------------------------------------------
#                                                     Helper functions
# --------------------------------------------------------------------

def find(seq, name):
  for item in seq:
    if item.name == name:
      return item
  return None

def blobproto_to_array(blob):
  """Convert a Caffe Blob to a numpy array.

It also reverses the order of all dimensions to [width, height,
channels, instance].
"""
  dims = []
  if hasattr(blob, 'shape'):
    dims = tolist(blob.shape.dim)
  if not dims:
    dims = [blob.num, blob.channels, blob.height, blob.width]
  return np.array(blob.data,dtype='float32').reshape(dims).transpose()

def dict_to_struct_array(d):
  if not d:
    return np.zeros((0,))
  dt=[(x,object) for x in d.keys()]
  y = np.empty((1,),dtype=dt)
  for x in d.keys():
    y[x][0] = d[x]
  return y

def tolist(x):
  "Convert x to a Python list. x can be a Protobuf container, a list or tuple, or scalar"
  if isinstance(x,google.protobuf.internal.containers.RepeatedScalarFieldContainer):
    return [z for z in x]
  elif isinstance(x, (list,tuple)):
    return [z for z in x]
  else:
    return [x]

def escape(name):
  return name.replace('-','_')

# --------------------------------------------------------------------
#                                                        Parse options
# --------------------------------------------------------------------

parser = argparse.ArgumentParser(description='Convert a Caffe CNN into a MATLAB structure.')
parser.add_argument('caffe_proto',
                    type=argparse.FileType('rb'),
                    help='The Caffe CNN parameter file (ASCII .proto)')
parser.add_argument('--caffe-data',
                    type=argparse.FileType('rb'),
                    help='The Caffe CNN data file (binary .proto)')
parser.add_argument('output',
                    type=argparse.FileType('w'),
                    help='Output MATLAB file')
parser.add_argument('--average-image',
                    type=argparse.FileType('rb'),
                    nargs='?',
                    help='Average image')
parser.add_argument('--average-value',
                    type=str,
                    nargs='?',
                    default=None,
                    help='Average image value')
parser.add_argument('--synsets',
                    type=argparse.FileType('r'),
                    nargs='?',
                    help='Synset file (ASCII)')
parser.add_argument('--class-names',
                    type=str,
                    nargs='?',
                    help='Class names')
parser.add_argument('--caffe-variant',
                    type=str,
                    nargs='?',
                    default='caffe',
                    help='Variant of Caffe software (use ? to get a list)')
parser.add_argument('--transpose',
                    dest='transpose',
                    action='store_true',
                    help='Transpose CNN in a sane MATLAB format')
parser.add_argument('--no-transpose',
                    dest='transpose',
                    action='store_false',
                    help='Do not transpose CNN')
parser.add_argument('--color-format',
                    dest='color_format',
                    default='bgr',
                    action='store',
                    help='Set the color format used by the network: ''rgb'' or ''bgr'' (default)')
parser.add_argument('--preproc',
                    type=str,
                    nargs='?',
                    default='caffe',
                    help='Variant of image preprocessing to use (use ? to get a list)')
parser.add_argument('--simplify',
                    dest='simplify',
                    action='store_true',
                    help='Apply simplifications')
parser.add_argument('--no-simplify',
                    dest='simplify',
                    action='store_false',
                    help='Do not apply simplifications')
parser.add_argument('--remove-dropout',
                    dest='remove_dropout',
                    action='store_true',
                    help='Remove dropout layers')
parser.add_argument('--no-remove-dropout',
                    dest='remove_dropout',
                    action='store_false',
                    help='Do not remove dropout layers')
parser.add_argument('--remove-loss',
                    dest='remove_loss',
                    action='store_true',
                    help='Remove loss layers')
parser.add_argument('--no-remove-loss',
                    dest='remove_loss',
                    action='store_false',
                    help='Do not remove loss layers')
parser.add_argument('--append-softmax',
                    dest='append_softmax',
                    action='append',
                    default=[],
                    help='Add a softmax layer after the specified layer')
parser.add_argument('--output-format',
                    dest='output_format',
                    default='dagnn',
                    help='Either ''dagnn'' or ''simplenn''')

parser.set_defaults(transpose=True)
parser.set_defaults(remove_dropout=False)
parser.set_defaults(remove_loss=False)
parser.set_defaults(simplify=True)
args = parser.parse_args()

print 'Caffe varaint set to', args.caffe_variant
if args.caffe_variant == 'vgg-caffe':
  import proto.vgg_caffe_pb2 as caffe_pb2
elif args.caffe_variant == 'caffe-old':
  import proto.caffe_old_pb2 as caffe_pb2
elif args.caffe_variant == 'caffe':
  import proto.caffe_pb2 as caffe_pb2
elif args.caffe_variant == 'caffe_0115':
  import proto.caffe_0115_pb2 as caffe_pb2
elif args.caffe_variant == 'caffe_6e3916':
  import proto.caffe_6e3916_pb2 as caffe_pb2
elif args.caffe_variant == 'caffe_b590f1d':
  import proto.caffe_b590f1d_pb2 as caffe_pb2
elif args.caffe_variant == '?':
  print 'Supported variants: caffe, vgg-caffe, caffe-old, caffe_0115, caffe_6e3916, caffe_5b0f1d'
  sys.exit(0)
else:
  print 'Unknown Caffe variant', args.caffe_variant
  sys.exit(1)

if args.preproc == '?':
  print 'Preprocessing variants: caffe, vgg, fcn'
  sys.exit(0)
if args.preproc not in ['caffe', 'vgg-caffe', 'fcn']:
  print 'Unknown preprocessing variant', args.preproc
  sys.exit(1)

# --------------------------------------------------------------------
#                                                     Helper functions
# --------------------------------------------------------------------

def keyboard(banner=None):
    ''' Function that mimics the matlab keyboard command '''
    # use exception trick to pick up the current frame
    try:
        raise None
    except:
        frame = sys.exc_info()[2].tb_frame.f_back
    print "# Use quit() to exit :) Happy debugging!"
    # evaluate commands in current namespace
    namespace = frame.f_globals.copy()
    namespace.update(frame.f_locals)
    try:
        code.interact(banner=banner, local=namespace)
    except SystemExit:
        return

def bilinear_interpolate(im, x, y):
  x = np.asarray(x)
  y = np.asarray(y)

  x0 = np.floor(x).astype(int)
  x1 = x0 + 1
  y0 = np.floor(y).astype(int)
  y1 = y0 + 1

  x0 = np.clip(x0, 0, im.shape[1]-1);
  x1 = np.clip(x1, 0, im.shape[1]-1);
  y0 = np.clip(y0, 0, im.shape[0]-1);
  y1 = np.clip(y1, 0, im.shape[0]-1);

  Ia = im[ y0, x0 ]
  Ib = im[ y1, x0 ]
  Ic = im[ y0, x1 ]
  Id = im[ y1, x1 ]

  wa = (1-x+x0) * (1-y+y0)
  wb = (1-x+x0) * (y-y0)
  wc = (x-x0) * (1-y+y0)
  wd = (x-x0) * (y-y0)

  wa = wa.reshape(x.shape[0], x.shape[1], 1)
  wb = wb.reshape(x.shape[0], x.shape[1], 1)
  wc = wc.reshape(x.shape[0], x.shape[1], 1)
  wd = wd.reshape(x.shape[0], x.shape[1], 1)

  return wa*Ia + wb*Ib + wc*Ic + wd*Id

# Get the parameters for a layer from Caffe's proto entries
def getopts(layer, name):
  if hasattr(layer, name):
    return getattr(layer, name)
  else:
    # Older Caffe proto formats did not have sub-structures for layer
    # specific parameters but mixed everything up! This falls back to
    # that situation when fetching the parameters.
    return layer

# --------------------------------------------------------------------
#                                                   Load average image
# --------------------------------------------------------------------

average_image = None
resize_average_image = False
if args.average_image:
  print 'Loading average image from {}'.format(args.average_image.name)
  resize_average_image = True # in case different from data size
  avgim_nm, avgim_ext = os.path.splitext(args.average_image.name)
  if avgim_ext == '.binaryproto':
    blob=caffe_pb2.BlobProto()
    blob.MergeFromString(args.average_image.read())
    average_image = blobproto_to_array(blob).astype('float32')
    average_image = np.squeeze(average_image,3)
    if args.transpose and average_image is not None:
      average_image = average_image.transpose([1,0,2])
      average_image = average_image[:,:,: : -1] # to RGB
  elif avgim_ext == '.mat':
    avgim_data = scipy.io.loadmat(args.average_image)
    average_image = avgim_data['mean_img']
  else:
    print 'Unsupported average image format {}'.format(avgim_ext)

if args.average_value:
  rgb = make_tuple(args.average_value)
  print 'Using average image value', rgb
  # this will be resized later to a constant image
  average_image = np.array(rgb,dtype=float).reshape(1,1,3,order='F')
  resize_average_image = False

# --------------------------------------------------------------------
#                                      Load ImageNet synseths (if any)
# --------------------------------------------------------------------

synsets_wnid=None
synsets_name=None

if args.synsets:
  print 'Loading synsets from {}'.format(args.synsets.name)
  r=re.compile('(?P<wnid>n[0-9]{8}?) (?P<name>.*)')
  synsets_wnid=[]
  synsets_name=[]
  for line in args.synsets:
    match = r.match(line)
    synsets_wnid.append(match.group('wnid'))
    synsets_name.append(match.group('name'))

if args.class_names:
  synsets_wnid=list(make_tuple(args.class_names))
  synsets_name=synsets_wnid

# --------------------------------------------------------------------
#                                                          Load layers
# --------------------------------------------------------------------

# Caffe stores the network structure and data into two different files
# We load them both and merge them into a single MATLAB structure

net=caffe_pb2.NetParameter()
data=caffe_pb2.NetParameter()

print 'Loading Caffe CNN structure from {}'.format(args.caffe_proto.name)
google.protobuf.text_format.Merge(args.caffe_proto.read(), net)

if args.caffe_data:
  print 'Loading Caffe CNN parameters from {}'.format(args.caffe_data.name)
  data.MergeFromString(args.caffe_data.read())

# --------------------------------------------------------------------
#                                   Read layers in a CaffeModel object
# --------------------------------------------------------------------

if args.caffe_variant in ['caffe_b590f1d']:
  layers_list = net.layer
  data_layers_list = data.layer
else:
  layers_list = net.layers
  data_layers_list = data.layers

print 'Converting {} layers'.format(len(layers_list))

cmodel = CaffeModel()
for layer in layers_list:

  # Depending on how old the proto-buf, the top and bottom parameters
  # are found at a different level than the others
  top = layer.top
  bottom = layer.bottom
  if args.caffe_variant in ['vgg-caffe', 'caffe-old']:
    layer = layer.layer

  # get the type of layer
  # depending on the Caffe variant, this is a string or a numeric
  # ID, which we convert back to a string
  ltype = layer.type
  if not isinstance(ltype, basestring): ltype = layers_type[ltype]
  print 'Added layer \'{}\' ({})'.format(ltype, layer.name)

  # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  if ltype in ['conv', 'deconvolution', 'Convolution', 'Deconvolution']:
    opts = getopts(layer, 'convolution_param')
    if hasattr(opts, 'kernelsize'):
      kernel_size = opts.kernelsize
    else:
      kernel_size = opts.kernel_size
    if hasattr(opts, 'bias_term'):
      bias_term = opts.bias_term
    else:
      bias_term = True
    if hasattr(opts, 'dilation'):
      dilation = opts.dilation
    else:
      dilation = 1
    if ltype in ['conv', 'Convolution']:
      clayer = CaffeConv(layer.name, bottom, top,
                         kernel_size = tolist(kernel_size),
                         bias_term = bias_term,
                         num_output = opts.num_output,
                         group = opts.group,
                         dilation = dilation,
                         stride = tolist(opts.stride),
                         pad = tolist(opts.pad))
    else:
      clayer = CaffeDeconvolution(layer.name, bottom, top,
                                  kernel_size = tolist(kernel_size),
                                  bias_term = bias_term,
                                  num_output = opts.num_output,
                                  group = opts.group,
                                  dilation = dilation,
                                  stride = tolist(opts.stride),
                                  pad = tolist(opts.pad))

  # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  elif ltype in ['innerproduct', 'inner_product', 'InnerProduct']:
    opts = getopts(layer, 'inner_product_param')
    if hasattr(opts, 'bias_term'):
      bias_term = opts.bias_term
    else:
      bias_term = True
    if hasattr(opts, 'axis'):
      axis = opts.axis
    else:
      axis = 1
    clayer = CaffeInnerProduct(layer.name, bottom, top,
                               num_output = opts.num_output,
                               bias_term = bias_term,
                               axis = axis)

  # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  elif ltype in ['relu', 'ReLU']:
    clayer = CaffeReLU(layer.name, bottom, top)

  # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  elif ltype in ['crop', 'Crop']:
    clayer = CaffeCrop(layer.name, bottom, top)

  # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  elif ltype in ['lrn', 'LRN']:
    opts = getopts(layer, 'lrn_param')
    local_size = float(opts.local_size)
    alpha = float(opts.alpha)
    beta = float(opts.beta)
    kappa = opts.k if hasattr(opts,'k') else 1.
    regions = ['across_channels', 'within_channel']
    if hasattr(opts, 'norm_region'):
      norm_region = opts.norm_region
    else:
      norm_region = 0
    clayer = CaffeLRN(layer.name, bottom, top,
                      local_size = local_size,
                      alpha = alpha,
                      beta = beta,
                      norm_region = regions[norm_region],
                      kappa = kappa)

  # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  elif ltype in ['pool', 'Pooling']:
    opts = getopts(layer, 'pooling_param')
    if hasattr(layer, 'kernelsize'):
      kernel_size = opts.kernelsize
    else:
      kernel_size = opts.kernel_size
    clayer = CaffePooling(layer.name, bottom, top,
                          method = ['max', 'avg'][opts.pool],
                          pad = tolist(opts.pad),
                          kernel_size = tolist(kernel_size),
                          stride = tolist(opts.stride))

  # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  elif ltype in ['dropout', 'Dropout']:
    opts = getopts(layer, 'dropout_param')
    clayer = CaffeDropout(layer.name, bottom, top,
                          opts.dropout_ratio)

  # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  elif ltype in ['softmax', 'Softmax']:
    clayer = CaffeSoftMax(layer.name, bottom, top)

  # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  elif ltype in ['softmax_loss', 'SoftmaxLoss']:
    clayer = CaffeSoftMaxLoss(layer.name, bottom, top)

  # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  elif ltype in ['concat', 'Concat']:
    opts = getopts(layer, 'concat_param')
    clayer = CaffeConcat(layer.name, bottom, top,
                         3 - opts.concat_dim) # todo: depreceted in recent Caffes

  # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  elif ltype in ['Scale']:
    opts = getopts(layer, 'scale_param')
    clayer = CaffeScale(layer.name, bottom, top,
                        axis = opts.axis,
                        num_axes = opts.num_axes,
                        bias_term = opts.bias_term)

  # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  elif ltype in ['BatchNorm']:
    opts = getopts(layer, 'batch_norm_param')
    clayer = CaffeBatchNorm(layer.name, bottom, top,
                            use_global_stats = opts.use_global_stats,
                            moving_average_fraction = opts.moving_average_fraction,
                            eps = opts.eps)

  # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  elif ltype in  ['eltwise', 'Eltwise']:
    opts = getopts(layer, 'eltwise_param')
    operations = ['prod', 'sum', 'max']
    clayer = CaffeEltWise(layer.name, bottom, top,
                          operation = operations[opts.operation],
                          coeff = opts.coeff,
                          stable_prod_grad = opts.stable_prod_grad)

  # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  elif ltype in ['data', 'Data']:
    opts = getopts(layer, 'eltwise_param')
    operations = ['prod', 'sum', 'max']
    clayer = CaffeData(layer.name, bottom, top,
                       operation = operations[opts.operation],
                       coeff = opts.coeff,
                       stable_prod_grad = opts.stable_prod_grad)

  # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  elif ltype in ['accuracy', 'Accuracy']:
    continue

  # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  else:
    print 'Warning: unknown layer type', ltype
    continue

  if clayer is not None:
    clayer.model = cmodel
    cmodel.addLayer(clayer)
    # Fill parameters
    for dlayer in data_layers_list:
      if args.caffe_variant in ['vgg-caffe', 'caffe-old']:
        dlayer = dlayer.layer
      if dlayer.name == layer.name:
        for i, blob in enumerate(dlayer.blobs):
          blob = blobproto_to_array(blob).astype('float32')
          print '  + parameter \'%s\' <-- blob%s' % (clayer.params[i], blob.shape)
          clayer.setBlob(cmodel, i, blob)

# --------------------------------------------------------------------
#                             Get the size of the input to the network
# --------------------------------------------------------------------

for i, inputVarName in enumerate(net.input):
  if hasattr(net, 'input_shape') and net.input_shape:
    shape = copy.deepcopy(net.input_shape[i])
    shape.reverse()
  else:
    shape = [net.input_dim[k + 4*i] for k in [3,2,1,0]]
  print '  c- Input \'{}\' is {}'.format(inputVarName, shape)
  cmodel.vars[inputVarName].shape = shape
  # heuristic: the first input or 'data' is the input image
  if i == 0 or inputVarName == 'data': dataShape = shape

  # mark any 3-channels input as BGR for the purpose of RGB conversion
  # rare Caffe networks are trained in RGB format, so this can be skipped
  # this is decided based on the value of the --color-format option
  if cmodel.vars[inputVarName].shape[2] == 3:
    cmodel.vars[inputVarName].bgrInput = (args.color_format == 'bgr')

# --------------------------------------------------------------------
#                                                      Edit operations
# --------------------------------------------------------------------

# The first step is to compute the size of all the variables in the
# model, starting from the input. A small number of conversions
# require this information to be done properly. In particular:
#
# * For Pooling layers, fix incompatibility between pooling padding in MatConvNet and Caffe
# * For Crop layers (in FCNs), determine the amount of crop (in Caffe this is done at run time)

cmodel.reshape()

# Next, MATLAB uses a column major image format, whereas Caffe uses a
# row major.  We fix this by transposing X and Y in all spatial
# layers.

if args.transpose: cmodel.transpose()

# Rename layers, parametrs, and variables if they contain
# symbols that are incompatible with MatConvNet

layerNames = cmodel.layers.keys()
for name in layerNames:
  ename = escape(name)
  if ename == name: continue
  # ensure unique
  while cmodel.layers.has_key(ename): ename = ename + 'x'
  print "Renaming layer {} to {}".format(name, ename)
  cmodel.renameLayer(name, ename)

varNames = cmodel.vars.keys()
for name in varNames:
  ename = escape(name)
  if ename == name: continue
  while cmodel.vars.has_key(ename): ename = ename + 'x'
  print "Renaming variable {} to {}".format(name, ename)
  cmodel.renameVar(name, ename)

parNames = cmodel.params.keys()
for name in parNames:
  ename = escape(name)
  if ename == name: continue
  while cmodel.params.has_key(ename): ename = ename + 'x'
  print "Renaming parameter {} to {}".format(name, ename)
  cmodel.renameParam(name, ename)

# Split in-place layers
for layer in cmodel.layers.itervalues():
  if len(layer.inputs[0]) >= 1 and \
        len(layer.outputs[0]) >= 1 and \
        layer.inputs[0] == layer.outputs[0]:
    name = layer.inputs[0]
    ename = layer.inputs[0]
    while cmodel.vars.has_key(ename): ename = ename + 'x'
    print "Splitting in-place: renaming variable {} to {}".format(name, ename)
    cmodel.addVar(ename)
    cmodel.renameVar(name, ename, afterLayer=layer.name)
    layer.inputs[0] = name
    layer.outputs[0] = ename

# Remove dropout
if args.remove_dropout:
  layerNames = cmodel.layers.keys()
  for name in layerNames:
    layer = cmodel.layers[name]
    if type(layer) is CaffeDropout:
      print "Removing dropout layer ", name
      cmodel.renameVar(layer.outputs[0], layer.inputs[0])
      cmodel.removeLayer(name)

# Remove loss
if args.remove_dropout:
  layerNames = cmodel.layers.keys()
  for name in layerNames:
    layer = cmodel.layers[name]
    if type(layer) is CaffeSoftMaxLoss:
      print "Removing loss layer ", name
      cmodel.renameVar(layer.outputs[0], layer.inputs[0])
      cmodel.removeLayer(name)

# Simplifications
if args.simplify:
  # BatchNorm followed by Scale
  layerNames = cmodel.layers.keys()
  for name in layerNames:
    layer = cmodel.layers[name]
    if type(layer) is CaffeScale:
      if len(layer.inputs) > 1:
        continue # the scaling factor is an input, not a parameter
      if len(cmodel.getLayersWithInput(layer.inputs[0])) > 1:
        continue # other layers use the same input
      parentNames = cmodel.getLayersWithOutput(layer.inputs[0])
      if len(parentNames) != 1: continue
      parent = cmodel.layers[parentNames[0]]
      if type(parent) is not CaffeBatchNorm: continue
      print "Simplifying scale layer \'{}\'".format(name)
      smult = cmodel.params[layer.params[0]]
      sbias = cmodel.params[layer.params[1]]
      mult = cmodel.params[parent.params[0]]
      bias = cmodel.params[parent.params[1]]
      mult.value = mult.value * smult.value
      bias.value = smult.value * bias.value + sbias.value
      cmodel.renameVar(layer.outputs[0], layer.inputs[0])
      cmodel.removeLayer(name)

# Append softmax
for i, name in enumerate(args.append_softmax):
  # search for the layer to append SoftMax to
  if not cmodel.layers.has_key(name):
    print 'Cannot append softmax to layer {} as no such layer could be found'.format(name)
    sys.exit(1)

  if len(args.append_softmax) > 1:
    layerName = 'softmax' + (l + 1)
    outputs= ['prob' + (l + 1)]
  else:
    layerName = 'softmax'
    outputs = ['prob']

  cmodel.addLayer(CaffeSoftMax(layerName,
                               cmodel.layers[name].outputs[0:1],
                               outputs))

cmodel.display()

# --------------------------------------------------------------------
#                                                        Normalization
# --------------------------------------------------------------------

if average_image is not None:
  if resize_average_image:
    x = numpy.linspace(0, average_image.shape[1]-1, dataShape[0])
    y = numpy.linspace(0, average_image.shape[0]-1, dataShape[1])
    x, y = np.meshgrid(x, y, sparse=False, indexing='xy')
    average_image = bilinear_interpolate(average_image, x, y)
else:
  average_image = np.zeros((0,),dtype='float')

mnormalization = {
  'imageSize': row(dataShape),
  'averageImage': average_image,
  'interpolation': 'bilinear',
  'keepAspect': True,
  'border': row([0,0])}

if args.preproc == 'caffe':
  mnormalization['interpolation'] = 'bicubic'
  mnormalization['keepAspect'] = False
  mnormalization['border'] = row([256 - dataShape[0], 256 - dataShape[1]])

# --------------------------------------------------------------------
#                                                              Classes
# --------------------------------------------------------------------

mclassnames = np.empty((0,), dtype=np.object)
mclassdescriptions = np.array((0,), dtype=np.object)

if synsets_wnid:
  mclassnames = np.array(synsets_wnid, dtype=np.object).reshape(1,-1)

if synsets_name:
  mclassdescriptions = np.array(synsets_name, dtype=np.object).reshape(1,-1)

mclasses = dictToMatlabStruct({'name': mclassnames,
                               'description': mclassdescriptions})

# --------------------------------------------------------------------
#                                                    Convert to MATLAB
# --------------------------------------------------------------------

# net.meta
mmeta = dictToMatlabStruct({'normalization': mnormalization,
                            'classes': mclasses})

if args.output_format == 'dagnn':

  # This object should stay a dictionary and not a NumPy array due to
  # how NumPy saves to MATLAB

  mnet = {'layers': np.empty(shape=[0,], dtype=mlayerdt),
          'params': np.empty(shape=[0,], dtype=mparamdt),
          'meta': mmeta}

  for layer in cmodel.layers.itervalues():
    mnet['layers'] = np.append(mnet['layers'], layer.toMatlab(), axis=0)

  for param in cmodel.params.itervalues():
    mnet['params'] = np.append(mnet['params'], param.toMatlab(), axis=0)

  # to row
  mnet['layers'] = mnet['layers'].reshape(1,-1)
  mnet['params'] = mnet['params'].reshape(1,-1)

elif args.output_format == 'simplenn':

  # This object should stay a dictionary and not a NumPy array due to
  # how NumPy saves to MATLAB

  mnet = {'layers': np.empty(shape=[0,], dtype=np.object),
          'meta': mmeta}

  for layer in cmodel.layers.itervalues():
    mnet['layers'] = np.append(mnet['layers'], np.object)
    mnet['layers'][-1] = dictToMatlabStruct(layer.toMatlabSimpleNN())

  # to row
  mnet['layers'] = mnet['layers'].reshape(1,-1)

# --------------------------------------------------------------------
#                                                          Save output
# --------------------------------------------------------------------

print 'Saving network to {}'.format(args.output.name)
scipy.io.savemat(args.output, mnet, oned_as='column')

redpajama_set_name: RedPajamaGithub


우리는 중국에서 Fr4 에폭시 재료 시트 Esd 제조 업체 및 공급 업체 / 공장 전문화되어 있습니다. Fr4 에폭시 재료 시트 Esd 중 하나 인 SHENZHEN XIONGYIHUA PLASTIC INSULATION LTD 중국 유명 브랜드 중 하나 인 저렴한 가격 / 저렴한 가격으로 고품질의 Fr4 에폭시 재료 시트 Esd 도매업.
Wholesale Fr4 에폭시 재료 시트 Esd from China, Need to find cheap Fr4 에폭시 재료 시트 Esd as low price but leading manufacturers. Just find high-quality brands on Fr4 에폭시 재료 시트 Esd produce factory, You can also feedback about what you want, start saving and explore our Fr4 에폭시 재료 시트 Esd, We'll reply you in fastest.


text:
Are COVID vaccines vegan? Should I get one anyway? An ethicist explains
Are COVID vaccines vegan? Should I get one anyway? An ethicist explains photo credit: canva
Some of my vegan friends are reluctant to get the COVID-19 vaccine.
These vaccines do not contain animal products. Yet animals were used to develop and test them. For instance, early trials involved giving the vaccines to mice and macaque monkeys. So my friends say they feel uncomfortable having a product that uses animals in these ways.
I am very sympathetic to their concerns. Animals are treated appallingly in the production of many goods and in many areas of life.
OMEGLE- CHILDREN EXPOSED
Nonetheless, I believe vegans can get the COVID-19 vaccine in good conscience. Let me explain why.
Getting the vaccine prevents harming others
A key feature of COVID-19 is you can catch it and pass it on without even knowing you have it, despite your best efforts to avoid this.
This means we each pose a potentially deadly risk to others. Getting the vaccine yourself greatly reduces the chance of you having serious disease. And evidence is emerging that vaccines reduce the chance of you passing on the virus to others.
This means there is an important difference between avoiding products like shampoos and cosmetics tested on animals and not getting the vaccine. Doing the former doesn't put anyone else at risk. But doing the latter does.
Let's start with fruit and vegetables versus cosmetics
Vegans acknowledge it is virtually impossible to avoid contributing to animal harm entirely. Even most fruit and vegetables are grown in a way that kills or displaces wild animals, uses fish meal and blood and bone to fertilise plants, or requires killing "pests" like mice to protect crops and grain stores.
Many vegans therefore distinguish between animals harmed in this sort of food production, and animals harmed more directly by the meat and dairy industries, as well as in the production of consumer products such as cosmetics.
What is the right basis of this distinction? One possibility is the latter group of animals are killed or harmed directly, as a means to an end, whereas the former group suffers harm as a mere by-product or side-effect of other processes.
But this cannot be the right basis. Killing animals for use in fertiliser or as pests is direct killing.
A more plausible basis for the distinction is unavoidably killing animals in the production of things that are necessary or clearly worth it. We need to grow large amounts of fruit and vegetables. And we cannot — at least, given current technologies — do so without killing some animals along the way.
But we do not need to consume meat or dairy, or wear animal-based clothing or cosmetics tested on animals. There are plenty of excellent alternatives.
So, in ethical terms, which of these products is a COVID-19 vaccine most comparable to: fruit and vegetables, or cosmetics tested on animals?
I think they are more like fruit and vegetables. COVID-19 vaccines are necessary — there is no other credible way out of this devastating pandemic. And the animal harm involved in developing and testing these vaccines was unavoidable. There was no reasonable alternative available, at least not without making big sacrifices in terms of how long we have to wait for vaccines to arrive.
For this reason, I think even though the vaccines used animals directly, their use under the circumstances was permissible, and so vegans can get these vaccines in good conscience.
Why can't we test on humans?
Some might argue there is an alternative to using animals to develop and test these vaccines — using humans instead, in "human challenge trials", where volunteers are exposed to the virus in lab-controlled conditions. In fact, the United Kingdom has just given the green light for this type of trial to go ahead for later stages of the testing process.
If we allowed humans to volunteer to be involved at earlier stages of the development and testing process as well, some might put up their hands for this, too. While human challenge trials face serious moral issues, it might be ethically preferable to use consenting humans rather than unconsenting animals.
But involvement at these earlier stages may be so dangerous too few people would volunteer, or we should not allow them to take part. Still, this is a proposal worth considering further.
But I still feel too awful
Some vegans might accept my reasoning but find they just cannot bear to use a vaccine tested on animals.
To these people, I would say: it is perfectly understandable and reasonable to feel uncomfortable about getting the vaccine for this reason. It doesn't follow, though, that you shouldn't get it. If the only way to save the planet or your fellow humans is to kill an animal, you should do so even if it is incredibly emotionally hard to do so.
Even so, if as a vegan you simply cannot bring yourself to get the vaccine, this won't make me grumpy in the same way it makes me grumpy when I hear others — for example, anti-vaxxers motivated by conspiracy theories — say they won't get vaccinated.
Your reluctance to get the vaccine is rooted in a legitimate grievance about human mistreatment of animals more broadly.
By contrast, people who refuse to get vaccinated because they think Bill Gates is hoping to microchip humanity have no such legitimate grievance behind their aversion.
Humanity caused the pandemic
Experts widely predicted a pandemic would happen sooner or later. Many believe it was a direct result of human activity — indeed, mistreating animals.
Moreover, the fact there aren't good alternatives to using animals in development and testing is due largely to society's failure to properly explore and fund such alternatives earlier.
Nevertheless, under current circumstances, our need to use animals to develop and test these vaccines is real.
So, the correct path is not to reject COVID-19 vaccines. It's to reluctantly accept them and lobby hard for better treatment of animals.
Ben Bramble, Lecturer, philosophy, Australian National University
Tags: are the vaccines vegan friedly?, Covid-19 vaccine, Vegan
Previous Lotto and Lotto Plus results for 20 February 2021
Next The WeChat model: how Facebook's ban could change the business of news