text:
"Restoration" of sidewalks and lawns post-pipe replacement turns into labyrinth of delays
Home » Analysis » "Restoration" of sidewalks and lawns post-pipe replacement turns into labyrinth of delays
By Jan Worth-Nelson and Tom Travis
When will the residents of Flint get their lawns and sidewalks restored following three years of water pipe excavations and replacement?
The answer to that, yet another sign of how elusive "closure" can be in the years' long community water crisis, is apparently — eventually.
Like many other aspects of the water crisis, the details are a labyrinth of federal, state and city funds and bureaucracies, along with city council bickering, protests over the bidding process, suggestions of preferential treatment, resolutions and "rescissions," votes and revotes. It's all enough to confuse and exasperate even the most avid observers, while thousands still wait for their promised "restoration."
[However, Friday night, following a protracted rebid process, MLive reported the city announced the lowest bid on the restoration work went to Goyette Mechanical–for the second time. Goyette's original bid in June, the lowest of that round, had been accepted and then rescinded by the city. The contract still will need to be approved by City Council, which is scheduled to meet at 5:30 Monday.
The June bid had been $12.1 million. Friday's low bid, following a change in the specifications, was $8.9 million. W.T. Stevens came in second with $10.2 million.]
"About 10 days ago they came and put more rocks on this," said Kevin Smith, standing outside his home at 1626 Dupont. "They keep doing that, just putting rocks as the hole goes down."
Smith said the street work was originally done about eight months ago. Asked how he felt the restoration was going, Smith said, "It seems everything on the north side is falling apart but downtown is getting built up." Smith expressed concern that gentrification is a problem in our city and the north side is being forgotten.
621 Greenfield (Photo by Nikki Kohn)
So the bids begin…
The latest drama began with the process of soliciting bids and doling out contracts for Phase Six of the FAST Start Program – the city's name for the process of replacing the city's pipes and restoring the damage to curbs, sidewalks, lawns and streets left behind — now about 13,000 to 15,000 addresses.
The work is being funded out of the settlement of a lawsuit brought by the ACLU, the Concerned Pastors for Social Action, Melissa Mays and the National Resource Defense Council. Other funds have come from $100 million federal money from the Environmental Protection Agency (EPA) distributed to Flint through the state of Michigan's Department of Environmental Quality (now renamed the Michigan Department of Environment, Great Lakes and Energy (EGLE) via the Water Infrastructure Improvements for the Nation (WIIN) Act of 2015-16.
June 24, following a bid process through the City's procurement office for restoration work on the thousands of lawns where pipe excavation and replacements have occurred, Goyette Mechanical was identified as the low bidder at $12.1 million. The council approved a resolution to award the contract.
Then city administration changes its mind
But two weeks later, the city administration called a 4 p.m. emergency meeting with all seven contractors and announced that it intended to reopen the bid process. Later that same evening at a special affairs committee meeting of the City Council, Goyette project manager Joe Parks, who had been at the earlier meeting, described the administration's action and expressed vigorous objection to re-opening the bid process.
Councilperson Eric Mays called for the mayor and city officials to come to council to explain the restoration process and their decision to rebid. The rest of the council agreed and scheduled a special meeting for the following Wednesday.
At that July 10 special meeting, only City Administrator Steve Branch appeared and Goyette representative Parks again attended. Branch said the city planned to put the work out for rebid. Again, Parks strenuously protested.
Joe Parks (Photo by Ed Custer)
Branch and others from city administration said the reason for rescinding Goyette's originally accepted bid was that specifications for the work had been changed, from 11 items to four. When the bids for four items only were re-calculated, the winning bidder was W.T. Stevens at $10.2 million.
Trying to explain what happened, Seventh Ward Councilperson Monica Galloway explained to East Village Magazine, "When they opened up the bids, Goyette came out as the lowest responsible bidder. They were approved for the resolution that came before council. But when the contract was being put together, all of those 11 items were not included [by the city]."
Sumarizing Branch's explanation to council, Mays attempted to confirm the city's Purchasing Department and Department of Public Works were who decided to change the bid elements after the fact from 11 to 4.
"They (the city administration) recognized that we might not use seven of the items (in completing the work) but that we might only use four," Galloway said.
But since the bids already had been submitted, opened, and acted upon, the total from Goyette (at $12 million) and the others already stood and Parks contended Goyette had an accepted bid. The fact that everybody saw everybody's else's bids before the new specs for the bids were issued contaminated the process, he said.
In a July 2 letter to the city, MLive reported, Parks argued Flint's decisions regarding its restoration work were "questionable."
Parks wrote, "This decision is being made by the city based on nepotism and outright favoritism for certain contractors with personal relationships with city officials and we will stay quiet no longer."
According to an MLive account, Parks said he believed "allowing a re-bid on the restoration work after council voted not to rescind a resolution awarding Goyette the $12 million contract 'violates the City of Flint Code."
In fact, MLive reported, the city "can reject any bid if it's in the public's best interest, but must clearly state how the public's best interest is affected in its notice rejection." MLive reported no such notice had been filed.
State asks for information about bid process
The story got more complicated when the State of Michigan, which channels the funds, asked for clarification of the city's bid process.
In an email Eric Pocan, senior project manager from EGLE, asked why only four of the eleven bid items were used in the re-calculations of the lowest bidder. Flint DPW director Rob Bincsik replied that when looking at the addresses left to be completed, the four identified are the "most common items used to complete the restorations."
"There are other items included in the bid document that will on occasion be used, but they don't encompass the majority of the work and therefore weren't used in the esimates for awards," he wrote, adding that if the city sees "considerably different percentages of lead vs. copper, these numbers will have to be changed to meet the demand of the project in the future."
After the emails from Pocan at the state the city administration decided to rebid, setting a rebid date of July 19.
On July 12 Goyette filed a formal protest, signed by Parks, objecting to the city's recission of its contract after council approval and reapproval, and calling the city's actions "unethical."
"It was only after Goyette's bid was accepted and approved did the Department of Purchasing recalculate the bids it received for the Phase Six project to realize the 'discrepancy' in bids. This recalculation is improper," he wrote, citing the City of Flint Code 18-21.3 (9)
Fields questions bid process change
In response to the news of the state's inquiries, Fourth Ward Councilwoman Kate Fields stated to Steve Branch at the July 17 council meeting, "This looks like you were trying to direct this contract to certain entities rather than the actual low bidder. It's clear the state didn't tell you you had to rebid–in no way, shape or form.
"All they wanted to know," she contended, "was that you had a process and you followed the process for bidding."
However, Goyette ultimately withdrew its protest in order to rebid, after Purchasing Director Joyce McClane clarified a rebid could not legally proceed with a protest pending.
Goyette also had filed a lawsuit to stop the rebidding. The case is still pending, but 7thCircuit Court Judge F. Kay Behm declined to enter a temporary restraining order as Goyette had requested.
Rebids for the restoration work closed at 5 p.m. Friday. City Council is scheduled to meet at 5:30 Monday to receive the lowest bid — once again — from Goyette.
In the meantime, thousands of Flint residents continue to step around, mow around and drive around the various holes and bumps still left to remind them that the water crisis has left many scars.
This story was updated Sunday, July 21 to clarify that 7th Circuit Court Judge Kay Behm did not dismiss the Goyette lawsuit. She did decline to issue a temporary restraining order as Goyette had requested–Ed.
EVM Editor Jan Worth-Nelson can be reached at janworth1118@gmail.com.
EVM Staff Writer Tom Travis can be reached at tomntravis@gmail.com.
EVM Staff Writer Harold C. Ford contributed to this report. He can be reached at hcford1185@gmail.com.
Goyette workers at Copeman Boulevard in the summer of 2017 (Photo by Ed Custer)
Author: East Village Magazine
A Non-profit, Community News Magazine Since 1976


Best 24140RHAK30W33 Bearing, KOYO is one of our best-selling products. We have the most detailed information about it. KOYO 24140RHAK30W33 Bearing is mainly used in construction machinery, machine tools, automobiles, metallurgy, mining, petroleum, machinery, electricity, railways and other industries. KOYO 24140RHAK30W33 Bearing is strictly screened and of high quality. It is deeply praised by users. I believe this is your best choice.
KOYO 24140RHAK30W33 Bearing has the best quality. Over the past decade, KOYO 24140RHAK30W33 Bearing has received the best reviews from users. If you buy it now, you will get the best service and we will give you the best price.
2013 SKF Spherical Roller Bearings 23228 C/W33 With Good Quality .
KOYO 24140RHAK30W33 bearing dimensions price 24140RHAK30W.
Best Sale KOYO 53413 bearing with Best Quality in Hawaii .
KOYO Spherical roller bearings 24138RHAK30W33 Bearings,Pdf .
Tokyo Day Trips: Best Places to See Fall Foliage | Only in .
With lively vendors and street magic shows, Inokashira Park in Musashino City is a wonderful place to visit anytime of the year, but as a place to enjoy koyo it solidly tops the list of best spots in Tokyo.
koyo 607-rs bearing We are committed to selling high quality bearings, linear motion products and accessory.We have sufficient stock. Our excellent service team assures that you receive the right bearing at the best price in the shortest period of time.
Koyo Encoders - Shop Cheap Koyo Encoders from China Koyo .
Shopping for Cheap Koyo Encoders at Sharyu Automation Store and more from encoder,encoder incremental on Aliexpress.com ,the Leading Trading Marketplace from China ... Best Match Orders New price. Free Shipping. Wholesale OEM Incremental encoder TRD-2T50BF 5000P/R,... US $43.56 / piece.
Best Price Koyo 626 Bearing , Find Complete Details about Best Price Koyo 626 Bearing,626 Bearing,Koyo 626 Bearing,Price Koyo 626 Bearing from Deep Groove Ball Bearing Supplier or Manufacturer-Jinan Focus Bearing Co., Ltd.
try a koyo, they're fairly inexpensive and readily available. Unless you want the best performance radiator, in which case you're looking for an ARC.
KOYO 24140RHAK30W33 Bearings | KOYO 24140RHAK30W33 .
KOYO16036 dwyn, yr hen fodel - maint dwyn, 16,036 pris - KOYO .


text:
Growing Greener:
The Environmental Benefits of a Compact and Connected Austin
by Katherine Eshel, Frontier Group; Luke Metzger and Brian Zabcik, Environment Texas Research & Policy Center; Bay Scoggin, TexPIRG Education Fund
Austin is one of America's fastest-growing cities. This growth has brought dynamism to the city, but has also created environmental problems. Because much of Austin's growth has taken place at the urban fringe, the addition of new residents and businesses has caused persistent and worsening problems with traffic congestion, air pollution and water quality, as more undeveloped land is converted into new development.
To accommodate the continued influx of new people to the city, Austin is currently revising its land development code in a process called CodeNEXT. This revision seeks to house a growing population in ways that minimize the increase of developed land.
Compact development can deliver tangible benefits for the environment – reducing energy use and greenhouse gas emissions, curbing the flow of polluted runoff into streams and lakes, and protecting natural areas and agricultural lands. By adopting strong policies to mitigate the local impacts of greater density, such as green infrastructure to manage stormwater, Austin can develop in a way that will bring lasting environmental benefits.
Compact development benefits the environment in numerous ways.
Energy use and greenhouse gas emissions: Compact development uses less energy for construction, building operation and transportation, which results in lower greenhouse gas emissions.
In Austin, a suburban neighborhood with detached single-family homes can consume up to three times more energy in construction and materials, and up to 50 percent more energy in daily operation than a densely developed neighborhood with duplexes and low-rise apartments.
Shared walls in attached buildings result in direct energy savings as housing units share and save heat, with less leakage.
Energy used for transportation currently generates 35 percent of greenhouse gas emissions in Travis County. The 2007 study Growing Cooler and other studies have found that people living in compact neighborhoods drive 20 to 40 percent less than those living in sprawling neighborhoods, using less energy and producing fewer emissions.
Water quality:Compact development reduces land conversion, which has a significant impact on water pollution. Compact development also produces less runoff and affects less of a given watershed than lower-density development, resulting in healthier waterways and aquifers for the same amount of housing capacity.
A Houston-area study suggests that doubling density in that city would result in less overall pollution in the area's bays and bayous, and would do more to curb pollution than many traditional tools for managing stormwater.
Urban sprawl also affects aquifer recharge. The amount of clean rainwater that can infiltrate into the soil where it falls is reduced by sprawl, while the amount of dirty runoff polluted with pesticides and pathogens is increased. This can result in poor water quality in some areas where polluted water enters Austin's waterways, threatening surface and groundwater quality.
Flood risk:Compact urban development can help minimize the total amount of paved land in the metropolitan area, which contributes to less total runoff and reduced flood risks.
The U.S. Geological Survey studied 25 years of streamflow and rainfall data along Waller Creek and found that converting land along the creek for development increased the scale and frequency of flooding.
A 2003 study published in the Journal of Water Resources and Planning found that high- and medium-density development increased impervious cover 72 percent less than low-density development. As a result, high- and medium-density developments had less than half the effect of low-density development on runoff volume and peak flow.
Water consumption: Compact development can result in lower water use than sprawling development. Building more compactly on smaller lots can decrease water demand for landscaping and minimize overall water demand.
A 2007 study found that water use in single-family units in the Phoenix metro area increased by 1.8 percent for each 1,000-square foot increase in average lot size, and by 1.7 percent for every 1°F rise in the average daily temperature low due to the urban heat island.
In Austin, outdoor uses, like residential lawn watering and commercial landscape irrigation, account for more than a fifth of total water use, with a summertime peak. Austin also has the highest percentage of big-lot homes among the four major metro areas of Texas, with 6.6 percent of single-family homes on 5-acre lots or more. Smaller lot sizes could help to lower water demand and reduce pressure on Austin's water resources.
Land consumption: Population growth, suburbanization and urban development drive land conversion in Texas.
The Texas A&M Institute of Renewable Natural Resources estimates that between 1997 and 2012, Texas lost more than 1.1 million acres of farms, ranches and forests to urban and suburban development, 87 percent of which lie within the state's 25 fastest-growing counties.
Air quality: Compact development forms can reduce traffic over a metropolitan area, which results in lower levels of ozone, a ground-level pollutant that can cause adverse health effects.Compact development can also reduce urban heat island effects, which contribute to ozone pollution; as a result, compact cities have relatively fewer heat waves, and improved regional air quality.
Sprawling cities have been found to experience up to 62 percent more high ozone days than compact cities.
Particulate pollution causes approximately 8,700 premature deaths in Texas each year, and ozone pollution causes approximately 2,100 more.
Compact forms of development deliver environmental benefits at the regional level, but may create local environmental and public health impacts. Through smart public policy, Austin can mitigate many of the local impacts of compact development.
Green stormwater infrastructure (GSI) can help compensate for the increase of impervious cover in densely developed areas. By using natural drainage processes to capture and cleanse rainwater on-site, GSI features can reduce water pollution and flooding severity. GSI features are especially effective at filtering surface pollutants out of stormwater, and can generally retain enough water to reduce or even eliminate flooding from small to mid-size storms.
Limiting the overall amount of impervious cover helps ensure the preservation of undeveloped land where rainwater may naturally infiltrate the soil or be stored, which enhances flood resiliency. But impervious cover limits, like the Save Our Springs Ordinance that limits impervious surface to 15 percent of the total site area in the Barton Springs Zones, must be implemented with care to ensure that they do not increase incentives for sprawl.
The localized increases in vehicular traffic and air pollution that may result from increased density can be reduced through improvements in public transportation, vehicle electrification, mobility as a service (e.g, ride-hailing), and improved infrastructure for walking and biking. Today, Austin ranks only 21st in job accessibility via transit out of the 50 metro areas with the largest populations. Compact, mixed-use neighborhoods built around high-capacity transit can help decrease energy use and greenhouse gas emissions.
Street and building designs that maximize vegetation and reflectivity can reduce urban heat island effects. One study focused on development in Houston found that placing shade trees near buildings and using light-colored roofing and paving materials that reflect sunlight could save $82 million on energy, decrease peak power demand, and cut carbon emissions by an amount equivalent to taking more than 199,000 passenger vehicles off the road.
The current revision of Austin's land development code, last overhauled in the 1980s, gives the city a golden opportunity to reshape how it develops for coming generations. Expanding the areas within Austin where compact and walkable neighborhoods can be built would reduce the pressure for further sprawl, protect our environment, and enhance our quality of life. Austin should adopt a new development code that increases neighborhood walkability, provides "missing middle" housing (a wide range of residential forms between single-family homes and high-rise apartment buildings), and reduces the considerable environmental damage caused by sprawl.
Growing Greener.pdf
Factsheet - Growing Greener.pdf
Latest Related Content
These Lands Are Our Lands: The Trump Administration Attack on Public Participation in Land Issues
Offshore Drilling, Onshore Damage
California's Agricultural System Needs to Adapt to Drought and a Changing Climate

redpajama_set_name: RedPajamaCommonCrawl


MLS newcomers Atlanta United FC have appointed Gerado 'Tata' Martino as their first head coach.
The former Barcelona boss will take charge of the expansion team as they enter the MLS in 2017.
"We are delighted that a manager of Gerardo's caliber and pedigree will be leading our team into our inaugural season," Atlanta United president Darren Eales said."His deep experience and success at both the club and international levels speak for itself, and his vision and approach aligns very well with our club philosophy.


text:
03/03/16 | Minister's reassurances on endangered cockatoos contradicts EPA warning
Cockatoos Need Protection in Battle with Main Roads
Submitted by Shane Guthrie on Wed, 12/06/2013 - 14:03
Greens MLC Lynn MacLaren today said that Perth can't keep bulldozing Black Cockatoo habitat and expect the species to thrive.
"Main Roads' work at the intersection of Reid Highway and Malaga Drive is just the latest blow against habitat protection," she said. "The loss of mature trees is unfettered. Our approval processes aren't working to protect endangered species habitat."
"This species is listed as endangered under the Commonwealth Environment Protection and Biodiversity Conservation Act 1999, and as rare or likely to become extinct under the Western Australian Wildlife Conservation Act 1950.
"The responsibility to protect their habitat is clear.
"Rather than having to raise the plight of habitat loss on an ad-hoc basis, activists want the Government to take on board their responsibility to assess and minimise environmental impacts when clearing for road projects.
"The future of this enigmatic species looks bleak unless stringent regulation is passed to prevent the further loss of its habitat," said Ms MacLaren.
Image:http://en.wikipedia.org/wiki/File:Short_Billed_Black_Cockatoo_Wings.jpg


Why not go for wiser and more economical option? Instead of getting a new key designed right from scratch for replacement, why not use the old one itself? At East Greenwich RI Locksmith Store, we have got a team of automotive specialists who can retrieve the keys locked in car after unlocking the car with zero-damages. After gaining access to your vehicle within a few minutes, you can easily retrieve the old keys. Economical and wise, both at the same time!
In some cases, when we fail to retrieve the keys locked in carafter attempting everything in our power, we would go for car key replacement. But unlike car dealers in East Greenwich, RI, we do not charge unfairly or take days to respond. Within a few minutes, we would quickly replace the old keys with new for absolute affordable costs.
Have got your keys locked in car? Call East Greenwich RI Locksmith Store at 401-369-8688 for help!


The even better news is that Kirkman's plan is to keep the original Telltale development team intact (if possible) for the completion.
The saga of Telltale Games' The Walking Dead might be seeing a somewhat positive conclusion as Robert Kirkman has stated that Skybound will finish the currently unfinished episodes. The even better news is that Kirkman's plan is to keep the original Telltale development team intact (if possible) for the completion.
Skybound is the parent company of both Skybound Entertainment which covers developing Kirkman-related material into movies, TV shows, and other digital media and Skybound Games. While Skybound Entertainment has been around since 2010, Skybound Games is the newer subsidiary which specifically covers video game development.
As far as the completion of The Walking Dead: The Final Season, the outcome of the game was left in limbo after Telltale laid off most of its staff unexpectedly just days before "Episode 2" was released. With "Episode 3" near completion, word quickly surfaced that the troubled company was searching for ways to complete the game for those who purchased it.
Of course, this started to rub a large portion of the gaming community wrong. Many felt that as unfair as it was to have purchased a game and not be able to finish it, it was more unfair that Telltale was looking to complete the game without having paid severance to any of their employees they'd just let go.
If Skybound can assemble all or most of the previous Telltale development team, not only will it ensure the successful completion of the game given their knowledge and passion for the game but it will also give those former employees some breathing room and extra time to line up new jobs while they complete the game.
Personally, I'm stoked to see Skybound step up. If anyone has a vested interest in, and can do the final two episodes justice, it would be the company of the creator of the original series. Of course, we can expect that the previously announced dates for the release of the last two episodes of the long-running series to be delayed into next year.
What do you think about the news that Skybound will finish Telltale's The Walking Dead using the original development team? Let us know in the comments below or on Google+, Twitter, or Facebook.


text:
<component name="ArtifactManager">
  <artifact type="exploded-war" name="idea-resolve-helper">
    <output-path>$PROJECT_DIR$/out/artifacts/idea_resolve_helper</output-path>
    <root id="root">
      <element id="javaee-facet-resources" facet="idea-resolve-helper/web/Web" />
      <element id="module-output" name="idea-resolve-helper" />
      <element id="javaee-facet-resources" facet="server/web/server" />
    </root>
  </artifact>
</component>

redpajama_set_name: RedPajamaGithub


text:
«‹ 12345678910 ›10 »
The Something Awful Forums > The Finer Arts > No Music Discussion > AC/DC: Heard it once, heard it 16 times.
Earwicker
man nurse posted:
If AC/DC opening for GN'R with Axl singing for both bands turns out to be true, then hot drat, I am in rock heaven.
that is a very strange and sad idea of rock heaven.
# ? Mar 28, 2016 21:13
man nurse
Oh yeah, that guy is totally straight. I saw a whole thing about him on the VH1.
Earwicker posted:
They're two of my favorite bands of all time, so it's pretty simple math.
Sure, and I could understand calling an AC/DC & Guns N Roses show with Axl fronting both bands "rock heaven" if it were 1991 and Axl could still sing..
Alec Bald Snatch
by exmarx
You know what would make it rock heaven?
If AC/DC gives Axl some reggae.
https://www.youtube.com/watch?v=vW7Z20fJH6I
Gobblecoque
Yeah this is like a weird time warp finding out that anyone in the world still gives a poo poo about Axl. I feel like AC/DC should just save face and hang it up. They've had a good run but it seems that any time I hear about them anymore it's just "this guy or that guy who has been in the band for decades is being retired" and it makes me wonder how long until Angus' number comes up.
Synthetic Hermit
mega survoltage!!!
Gobblecoque posted:
it makes me wonder how long until Angus' number comes up.
He's the only member who's been at every show since 1973, and he's the second youngest member after Stevie. He also doesn't drink or do drugs. He is a chain smoker though, but the fact that he's been doing it so long but can still put on his high energy act leads me to believe that he's got the best constitution of all the members.
A human heart
Synthetic Hermit posted:
Can you show us his character sheet?
A human heart posted:
Well, I'm not into those types of games, but here's what Google has to provide:
http://arsmagica.andrewgronosky.us/...he_Dragonslayer
http://arsmagica.andrewgronosky.us/wiki/File:Angus.pdf
"Angus is not especially loud or impressive ... and can drink many a larger man under the table."
A smidge off, methinks...
Uncle Boogeyman
BigFactory posted:
They should just cancel the dates. Who wants to see AC/DC with a substitute singer? That's stupid.
judging by the last 35 years, quite a lot of people
# ? Apr 13, 2016 23:28
Shark Sandwich
by R. Guyovich
It's really sad Angus would hire some rando to sing when the band is in its home stretch. Like a couple of other posters said, it's the kind of mercenary crap I never associated with them.
Shark Sandwich fucked around with this message at Apr 14, 2016 around 02:59
Blast Fantasto
USAAAAAAAAAAAAAAAAAAAA!
Uncle Boogeyman posted:
Let me know when they make anything as good as Back in Black with whatever new singer they pick
They should just hire the vocal section from Bang Camaro
Skttrbrain
Looks like the rumors are true.
http://www.rollingstone.com/music/n...n-tour-20160416
Angus joined GnR onstage at Coachella for a couple of songs, WITH the school uniform.
Cool Buff Man
HOLY poo poo!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
https://www.youtube.com/watch?v=niy1aRCFPPk
https://www.youtube.com/watch?v=aIQTWVsUzlE
That's the first time Riff Raff has been played since 1996.
Synthetic Hermit fucked around with this message at Apr 17, 2016 around 11:14
Man, Axl sounds pretty great when he's not running around out of breath.
The REAL Goobusters
Guys..... Holy poo poo..... I think I just died and went to rock heaven!!!!!
DrVenkman
gently caress it, I don't think Axl sounds all that bad. Of all his contemporaries I think he's taken care of his voice pretty well. Granted, its usually based on the show, but if he cares then you're in for a good time.
He can sing his own songs fine. But he has neither the heart of Bon nor the power of Brian. I suspect that the European crowds will not be pleased with his performance.
However, the worst part about this is that Axl's personality clashes with AC/DC's. AC/DC is laid back and lighthearted, whilst Axl Rose is a stuck up prick.
http://www.smh.com.au/entertainment...418-go8jj8.html
It says something to your fans when the person you choose to stand in is, in many ways, anathema to what you say you believe in and what your fans have come to believe in.
Interesting unsourced rumour. Based on the timing of recent events and other rumours, this one actually speaks to me...
Things haven't been good between Brian and Angus for a few years. Brian didn't want to tour arenas, basically because it adds more dates to a tour and pays less than stadiums. Angus is 100% AC/CD, writing and touring, that's all he wants to do. Brian wanted (not unreasonably) to take it easy and spent more time racing, and enjoying the fruits of his labours; this caused friction. Brian also didn't want to learn and add more Bon era songs to the set list. Angus became more and more frustrated at what he perceived as laziness and a lack of commitment. He was supposed to retire after Black Ice but decided to stay on, but as his enthusiasm continued to wane and moaning increased, Angus had enough and couldn't wait to replace him.
Apparently the hair that broke the camels back was an issue relating to 'time off work' and 2 first class plane tickets.
it'll all come out eventually, I'm sure.
I too am 100% AC/CD
remember when the drummer of ac/dc went to jail for hiring a hitman
Do you think he dialed 36, 24, 36?
JnnyThndrs
HERE ARE THE FUCKING TOWELS
Yeah, I can see that - Brian is 68 years old and is probably well-set as far as money goes, I'm sure he's ready to retire. I'm pretty sure I read an interview with him after Black Ice where he sounded about ready to hang it up.
But fuckin' Axel Rose? His voice is okay, but he's like the epitome of an ego-fueled wanker.
I can't see it lasting very long, though, Axel's reliability is pretty poor.
I was never enjoying it. I only eat it for the nutrients.
How they landed on Axl Rose and not Steve Souza from Exodus has got to just be a matter of name recognition. Dude's got a great voice for the part, a shitload of touring experience over the past 30 years and he has an AC/DC tribute band on the side
https://www.youtube.com/watch?v=1B914UaEfaY
BigFactory
It's almost as if they want to sell tickets or something.
Low quality but listenable rehearsal recordings with Axl.
Shoot To Thrill (short clip):
https://www.youtube.com/watch?v=Z9gu6-VcSTw
Thunderstruck (short clip):
https://www.youtube.com/watch?v=3K5J-8SMdks
Hells Bells:
https://www.youtube.com/watch?v=6sJcepSer-8
Hell Ain't A Bad Place To Be + Back In Black
I still doubt he can do even close to a full AC/DC set on his feet without turning into ol' wheezy, but he's clearly not phoning it in...
# ? May 3, 2016 08:31
Full clip of Thunderstruck:
https://www.youtube.com/watch?v=StAHpwfK1N8
Apparently some Belgians are having none of this.
http://www.standaard.be/cnt/dmf20160502_02270843
Charles Martel
"The Hero of the Age..."
The hero of all ages
comes along bort posted:
A Bedlam in Belgium if you will.
Finally, Angus sets the record straight:
https://www.facebook.com/acdc/videos/10154132406987930/
There could be more to Brian's leaving than just his hearing, but I think this clearly shows that there is no internal strife. IMO, pretty much all the rumours up to this point can be safely discounted.
New interviews with Angus, Cliff, & Axl:
http://www.bbc.co.uk/programmes/p03t7kvc
http://www.nme.com/blogs/nme-blogs/...ose-interviewed
nme.com posted:
So what happens after these shows – does the band continue in this format? Do you get another singer? Does Brian come back?
Axl: "Whatever they're doing with Brian, that's not my place to talk, that's their business. Anybody else, I will slowly poison them!"
What's the latest with Phil [Rudd, former drummer who was arrested for threatening to kill a former employee last year]?
Angus: "Phil I haven't heard from. He's been very quiet of late."
Axl: "I've talked to him about these other singers, though!"
Synthetic Hermit fucked around with this message at May 6, 2016 around 12:18
(The thumbnail is misleading, it's the same type of recording as the others.)
https://www.youtube.com/watch?v=_EpNSJlUbD8
Partial but pretty clear BIB recording:
https://www.facebook.com/GunsNRoses...07131862641355/
He hardly sounds like his GnR self, more like he's trying to emulate Brian.
Axl is sounding great and I can't wait to see one of these shows in full. First one happens tonight I think.
Periscope (ok quality) full show replay:
https://www.periscope.tv/w/1rmxPBgOjQjGN
Listen to him tear up thunderstruck. Axl killed it.
EugeneJ
"Shoot To Thrill" proshot:
https://www.youtube.com/watch?v=-MWMUJenwHo
"Rock or Bust" proshot":
https://www.youtube.com/watch?v=wraRfve9NUk
He sounds great.
EugeneJ fucked around with this message at May 8, 2016 around 03:28


AutoEntry is yet another data capturing tool that promises to take digital copies of your files and enter them into your accounting software, such as QuickBooks Online, Xero, or Sage One.
Having looked at software from Hubdoc, to Wave Receipts, to Zoho Documents, to Tallie—all of which promise to automate data entry—I'll be taking a critical look at what AutoEntry can do.
AutoEntry's interface is straightforward. You can upload purchases, sales, and/or bank statements. You can also set up a list of suppliers and categories (accounts).
If you hit the upload button, you'll see you have a few options to choose from.
I went with auto for my tests, as I didn't have multiple line items that I wanted captured. I tested the software with some multi-page PDFs that contained individual receipts and it handled it with aplomb.
The uploads took an hour or two to process, so I had to check beck later on in the day to see how it all went.
Of 64 receipts initially uploaded, AutoEntry was able to match up some of the supplier names it extracted with the supplier names pulled from my Xero accounting software.
Some of the names were new, so it would have been impossible for AutoEntry to match those up. Overall it did an OK job.
My initial feeling about this—or any receipt scanning software, for that matter—is that Xero or QuickBooks Online can already do this, and do it even better, based on bank feeds. For example, this is the reconciliation page in Xero for the business I was working on.
For the top 2 transactions, Xero was able to guess and pre-fill, while it filled out the next 7 based on rules I created. So, I feel like it's not that important for businesses using bank feeds (which should be the vast majority) to use a receipt scanning service to extract certain details. What I do find useful, though, is when the service pushes transactions with attached receipts to the accounting software, so that I have the source document attached to the transaction.
But back to dealing with the transactions found in AutoEntry. If you change the supplier account, category, or tax code, it'll ask you if you want to remember the categorization.
And whenever you manually change information, it'll have the M mark for manually selected.
What a great solution of importing the data into QuickBooks Online & Xero and other Accounting Software. I never hear before this Autoentry.
In this way, we can do lots transactions just in few mints.
Great review. Thank you. I was doing some initial research on this application and this article hit the exact key points that I was looking for. Duplication of transactions be at the top of my list.
Thank you for your thorough review. It leads me to ask you: What mobile app would you recommend me since I only want it to scan receipts into QBO? I download all receipts details from my bank account. All I want is to reduce the number of missing receipts since many get lost from the point of purchase to accounting.
I am presently trialling AE with my Xero clients. So far so good. But I was puzzled by your references to Bank Feed bringing in transactions to Xero and therefore duplicates arise w AE uploads. The bank feed doesn't create a transaction in Xero. The uploaded bank payment sits unreconciled until Xero sees the AE transaction uploaded and offers a match. Assuming you upload from AE as Awaiting Payment or Paid.
A clarification is due: My bank feed is to QuickBooks Online. Does it matter whether the fee is to Xero pr QuickBooks Online?
I meant Xero or QuickBooks Online.
I came back from Xerocon 2 weeks ago and was glad to find out about AutoEntry. I did some research on how I can use AutoEntry effectively. I chanced upon your article and will like to thank you for writing such an awesome article on it.


text:
Africa: perception versus reality
African and African Diaspora Studies
African and African Diaspora Studies Faculty
Is Roanoke a Fit?
Could this be the school you've been looking for? Take our quick quiz and find out if Roanoke is right for you!
African and African Diaspora Studies offers an interdisciplinary examination of the history, culture and politics of Africa and the African Diaspora.
Through the study of Africa today, you'll see how the continent and its many nations and cultures have evolved beyond the stereotypes that still persist in western media. You'll learn about African success stories, the future Africans are forging for themselves and the challenges they face achieving their dreams.
The concentration combines political, sociological, literary and historical issues while encouraging you to pursue your own interests with an independent study, internship or special topics course outside the core requirements.
We offer a concentration in African & African Diaspora Studies.
A new look at African history
A course, African Cultural History through Film, is an example of the innovative ways Roanoke professors engage students in the study of Africa and the African diaspora.
By critically reading novels and films, the course asks you to consider the following questions: How do novels and films permit new types of historical analysis? In what ways do these sources of history deliver larger historical insights into issues, including colonialism, economic underdevelopment and globalization?
In addition to reading a secondary text on African history, you will interpret novels and films about Africa, developing your own unique perspective on African cultural history.
Olivia Streett '19 Awarded Competitive Scholarship to Study in Germany
Olivia Streett '19 has received the competitive Benjamin A. Gilman International Scholarship, granted by the U.S. Department of State. She will be using it to study in Leipzig, Germany with the Roanoke College program led by Dr. Robert Willingham this fall. Streett is a history major, with a minor in German and a concentration in Africa and African diaspora studies. "I'm excited for the opportunity to spend an extended amount of time in Germany to get a better feel for the culture," Streett said. "I also will be pursuing some research opportunities while abroad."
Olivia Streett '19 received the very competitive Benjamin A. Gilman International Scholarship. She will be using it to study in Leipzig, Germany.
Fulbright Award winner finds passion in helping her community
Maggie Fitzgerald '18 has received a Fulbright to teach English in Oviedo, a city in northern Spain.
South Africa from a student perspective
Kaitlyn Brightwell shared these photos from her time in South Africa while studying abroad.
Maggie Fitzgerald '18 has received a Fulbright to teach English in Oviedo, a city in northern Spain. "I could not have more pride for the school that prepared us all so well," said Fitzgerald, who is a history major with a minor in secondary education and concentration in African and African Diaspora. "Her outstanding academic abilities, her innate gift for relating to people, and her genuine delight in living and learning make her an ideal candidate," said Dr. Katie Elmore. Fitzgerald plans to attend Indiana University after graduation in order to pursue her Ph.D. in African history.
Sample Course Offerings:
POLI 224: Comparative Political Systems: Africa
ANTH 240: Race and Human Evolution
HIST 350: Issues in African History
Africa gave them career insight and inspiration
After Roanoke, Katherine Larrivee '15 is completing work studying the effectiveness of humanitarian efforts on the African continent, and plans to go on to a master's program.
Katherine Frisch '14 completed a summer scholars project in 2013 on South African legal history that inspired her to pursue a career in international law. She's now attending University of Richmond Law School.


text:
Finals at their first attempt - Northgate girls excel at handball
Kathryn Cross
Year 8 girls from Northgate High School in Dereham have reached the U13 National Handball finals. Picture: Northgate High School - Credit: Northgate High School
They only started playing the sport six weeks ago but a team of year 8 girls from Northgate High School have reached a national final in handball.
The Dereham students will be off to the U13 National Handball Finals at Worcester Arena in June.
Pupils in year 8 and 10 were selected before the Easter holidays to take part in the Norwich Community Sports Foundation event at the UEA and year 8 girls and year 10 boys qualified to represent Norfolk at the eastern region competition.
Held at Cambridge University Sports Centre the pupils faced tough competition against experienced teams from across East Anglia.
The year 8 girls team continued to improve with each game they played, and a tense final against Essex was eventually won on penalties.
The finals are quite an achievement for a group of girls who had never heard of handball six weeks ago.


Money has always been the scapegoat of most when it comes to finding happiness; however, it does not mean it is true. In addition, money, in the minds of most individuals has always been in correlation to success, though the biggest question here is are you happy with what you are doing.
The high life always had its draw on countless individuals who have always put materials as their source of happiness, though it may have some grounds for argument, this is not always the case. There are times when you have to question whether or not it is worth it.
When trying to come up with the answer, there are two things that you should first consider – the value and the resultant quality of life. These are also the two things that you may need to consider before you buy anything from the shelf.
The value which was mentioned in the previous paragraph does not pertain to monetary value. Instead, it refers to what it means to you. Will it be worth the amount that you are paying for it? One aspect that you may use as a measure stick is the frequency regarding how you would use it. If you have other devices or items of the same value in your possession, it might be better if you purchase something cheaper. Or, you may opt to not purchase anything at all. These items come and go. So, in one point in time, you may want to replace them. That is why it is sometimes impractical to follow what is the trend. Go for something that is eternal.
The second consideration is the resultant quality of life that you will have once you acquire the item. This is the part where you should ask yourself whether or not that item will make you happy. However, this does not mean superficial happiness which you may just replace later on.
It is the kind of happiness that will last longer and sometimes a lifetime.
If it does, then it adds to your quality of life. If it is the opposite, then you might think twice in buying it. Therefore, you should never be an impulsive buyer. Always think it through before you provide your card to the cashier.
On the other hand, such mind set does not necessarily mean that you should not do anything and just be happy all your life. The true cycle is, once you are happy with what you are doing, success will follow. If success is present in your life, the money will slowly follow you. As long as you are passionate with what you are doing, you will become successful, possibly rich, and happiness will be absolute.
Such a dilemma has been a problem among individuals of this generation. Always taking courses where the money is at, but never truly being happy. That is why it is essential to make your passion your profession, because if you do, things will become easier, and in the end, you will become more successful – not just in your career but also in life.


text:
Q: How to use xpath to extract the price of a stock from google finance? I can't seem to get my xpath query to find it.
$pathTemplate =  "https://www.google.com/finance?q=";

echo "Enter the stock symbol of the stock you want to check\n";
$foo = fgets(STDIN);

$html = new DOMDocument();
$html -> loadHTML($pathTemplate . $foo);
$xpath = new DOMXPath($html);
$price = $xpath -> query("//span[@class = 'pr']/span/text()");
echo $price -> item(0);

I got a screenshot of the developer tools window

A: you should normalize (always) classes when using xpath to be able to handle a class="class1 class2" tag properly.
the best way to get what you want is by targeting the ID="price-panel" first.
below a complete working snippet, you forgot to file_get_contents so you were trying to parse the URL as HTML instead of the actual HTML ;-)
$pathTemplate =  "https://www.google.com/finance?q=";

echo "Enter the stock symbol of the stock you want to check\n";
$foo = fgets(STDIN);

$html = file_get_contents($pathTemplate . $foo);
$dom = new DOMDocument();
@$dom -> loadHTML($html);

$xpath = new DOMXPath($dom);
$price = $xpath -> query(" //div[@id='price-panel']//span[contains(concat(' ', normalize-space(@class), ' '), ' pr ')]/span");
$price = $price->item(0)->nodeValue;

echo $price;

redpajama_set_name: RedPajamaStackExchange


The article describes the role of "Certification Authorities" (CAs) in the emerging field of electronic commerce. CAs issue certificates to participants in electronic commerce that provide indicia of identity or authority, or supply a transactional timestamp. Several states, including California, Utah, Washington, Florida, Georgia, and New Mexico, have passed ,or are considering, legislation to regulate CAs; the article seeks to inform this process by examining the law applicable to the issuance of digital certificates absent specific legislation. As part of an effort to identify legal problems CAs are likely to engender, the article examines a CA's potential liability if a customer tricks a CA into issuing a false identity credential. Among the issues discussed are the size of the class of foreseeable relying parties and whether the CA produces a "good" or a "service" or a hybrid of the two under Article 2 of the U.C.C. The article concludes with a survey of the major arguments for and against regulation of CAs, and cautions against over-hasty grants of blanket immunity of CAs against liability for their own negligence.


If you follow the Skin Nerd and love looking after your skin, a facial in the Ebano Clinic in Balinteer is definitely for you. I have been for plenty of pampering days and facials in my day but nothing that compared to the level of detail and expertise that the Ebano Clinic offers.
Having recently moved to the area I was keen to try the Ebano Clinic after I saw the makeup guru Michelle Regazolli Sone was a frequent patron of the salon. After some research I was delighted to discover that such a specialised unique clinic was located so near to me (a 5 min drive from Dundrum Shopping Centre).
The clinic offers highly specialised treatments from micro needling and injectors to a highly customised exclusive Diamond Signature Facial. The clinic also specialises in Image skincare which I was eager to try as I've heard so much about it.
I was met by Sofia my skin specialist who spent time asking about my skin with great expertise and patience. She was so enthusiastic about skin and when I learned of her experience and qualifications I couldn't wait for her to get started. She informed me that the treatment is personalised so that it can change throughout the procedure and no two people are ever the same.
I was wrapped in a thermal blanket and I relaxed while Sofia took a closer look at my skin with the aid of a bright light. My main problems are pigmentation and milia spots (sorry for the TMI!). I was talked through everything and really felt involved in the whole process. Sofia would offer me advice on my problem areas and a solution on how to prevent it from recurring. It was so refreshing to meet someone who is so enthusiastic and passionate about their profession. I really got the impression that this is the ethos of the whole clinic in general and I believe that no matter which skin therapist performs your treatment the same level of knowledge and care is given.
The Diamond Facial is a treatment instant results are visible. Your skin is given a multitude of treatments including cleaning and a stimulating shoulder and face message. For the finale, a premium diamond masque which was full of amino acids was applied leaving the skin luminous. I felt so relaxed afterwards and if you followed my Snapchat story you'd notice that my skin really was glowing.
The Ebano Clinic certainly lived up to my expectations and I could really see why it is growing popular amoung beauty junkies like me. The facial promises to increase skin luminosity and hydration levels. It can also help get rid of dark circles, fine lines and combats skin breakouts!
Sign me up I hear you say!!
If you are stuck in a skin rut and want expertise and some TLC with instant results call the Ebano Clinic on 01-2987921. You can find them on Facebook and Instagram.
And it gets better, for every Diamond facial booked this month you receive a Venus Freeze worth €99!


text:
using System.Runtime.InteropServices;
using Xunit;

namespace System.Numerics.Tests
{
    public class Matrix3x2Tests
    {
        static Matrix3x2 GenerateMatrixNumberFrom1To6()
        {
            Matrix3x2 a = new Matrix3x2();
            a.M11 = 1.0f;
            a.M12 = 2.0f;
            a.M21 = 3.0f;
            a.M22 = 4.0f;
            a.M31 = 5.0f;
            a.M32 = 6.0f;
            return a;
        }

        static Matrix3x2 GenerateTestMatrix()
        {
            Matrix3x2 m = Matrix3x2.CreateRotation(MathHelper.ToRadians(30.0f));
            m.Translation = new Vector2(111.0f, 222.0f);
            return m;
        }

        // A test for Identity
        [Fact]
        public void Matrix3x2IdentityTest()
        {
            Matrix3x2 val = new Matrix3x2();
            val.M11 = val.M22 = 1.0f;

            Assert.True(MathHelper.Equal(val, Matrix3x2.Identity), "Matrix3x2.Indentity was not set correctly.");
        }

        // A test for Determinant
        [Fact]
        public void Matrix3x2DeterminantTest()
        {
            Matrix3x2 target = Matrix3x2.CreateRotation(MathHelper.ToRadians(30.0f));

            float val = 1.0f;
            float det = target.GetDeterminant();

            Assert.True(MathHelper.Equal(val, det), "Matrix3x2.Determinant was not set correctly.");
        }

        // A test for Determinant
        // Determinant test |A| = 1 / |A'|
        [Fact]
        public void Matrix3x2DeterminantTest1()
        {
            Matrix3x2 a = new Matrix3x2();
            a.M11 = 5.0f;
            a.M12 = 2.0f;
            a.M21 = 12.0f;
            a.M22 = 6.8f;
            a.M31 = 6.5f;
            a.M32 = 1.0f;
            Matrix3x2 i;
            Assert.True(Matrix3x2.Invert(a, out i));

            float detA = a.GetDeterminant();
            float detI = i.GetDeterminant();
            float t = 1.0f / detI;

            // only accurate to 3 precision
            Assert.True(System.Math.Abs(detA - t) < 1e-3, "Matrix3x2.Determinant was not set correctly.");

            // sanity check against 4x4 version
            Assert.Equal(new Matrix4x4(a).GetDeterminant(), detA);
            Assert.Equal(new Matrix4x4(i).GetDeterminant(), detI);
        }

        // A test for Invert (Matrix3x2)
        [Fact]
        public void Matrix3x2InvertTest()
        {
            Matrix3x2 mtx = Matrix3x2.CreateRotation(MathHelper.ToRadians(30.0f));

            Matrix3x2 expected = new Matrix3x2();
            expected.M11 = 0.8660254f;
            expected.M12 = -0.5f;

            expected.M21 = 0.5f;
            expected.M22 = 0.8660254f;

            expected.M31 = 0;
            expected.M32 = 0;

            Matrix3x2 actual;

            Assert.True(Matrix3x2.Invert(mtx, out actual));
            Assert.True(MathHelper.Equal(expected, actual), "Matrix3x2.Invert did not return the expected value.");

            Matrix3x2 i = mtx * actual;
            Assert.True(MathHelper.Equal(i, Matrix3x2.Identity), "Matrix3x2.Invert did not return the expected value.");
        }

        // A test for Invert (Matrix3x2)
        [Fact]
        public void Matrix3x2InvertIdentityTest()
        {
            Matrix3x2 mtx = Matrix3x2.Identity;

            Matrix3x2 actual;
            Assert.True(Matrix3x2.Invert(mtx, out actual));

            Assert.True(MathHelper.Equal(actual, Matrix3x2.Identity));
        }

        // A test for Invert (Matrix3x2)
        [Fact]
        public void Matrix3x2InvertTranslationTest()
        {
            Matrix3x2 mtx = Matrix3x2.CreateTranslation(23, 42);

            Matrix3x2 actual;
            Assert.True(Matrix3x2.Invert(mtx, out actual));

            Matrix3x2 i = mtx * actual;
            Assert.True(MathHelper.Equal(i, Matrix3x2.Identity));
        }

        // A test for Invert (Matrix3x2)
        [Fact]
        public void Matrix3x2InvertRotationTest()
        {
            Matrix3x2 mtx = Matrix3x2.CreateRotation(2);

            Matrix3x2 actual;
            Assert.True(Matrix3x2.Invert(mtx, out actual));

            Matrix3x2 i = mtx * actual;
            Assert.True(MathHelper.Equal(i, Matrix3x2.Identity));
        }

        // A test for Invert (Matrix3x2)
        [Fact]
        public void Matrix3x2InvertScaleTest()
        {
            Matrix3x2 mtx = Matrix3x2.CreateScale(23, -42);

            Matrix3x2 actual;
            Assert.True(Matrix3x2.Invert(mtx, out actual));

            Matrix3x2 i = mtx * actual;
            Assert.True(MathHelper.Equal(i, Matrix3x2.Identity));
        }

        // A test for Invert (Matrix3x2)
        [Fact]
        public void Matrix3x2InvertAffineTest()
        {
            Matrix3x2 mtx = Matrix3x2.CreateRotation(2) *
                            Matrix3x2.CreateScale(23, -42) *
                            Matrix3x2.CreateTranslation(17, 53);

            Matrix3x2 actual;
            Assert.True(Matrix3x2.Invert(mtx, out actual));

            Matrix3x2 i = mtx * actual;
            Assert.True(MathHelper.Equal(i, Matrix3x2.Identity));
        }

        // A test for CreateRotation (float)
        [Fact]
        public void Matrix3x2CreateRotationTest()
        {
            float radians = MathHelper.ToRadians(50.0f);

            Matrix3x2 expected = new Matrix3x2();
            expected.M11 = 0.642787635f;
            expected.M12 = 0.766044438f;
            expected.M21 = -0.766044438f;
            expected.M22 = 0.642787635f;

            Matrix3x2 actual;
            actual = Matrix3x2.CreateRotation(radians);
            Assert.True(MathHelper.Equal(expected, actual), "Matrix3x2.CreateRotation did not return the expected value.");
        }

        // A test for CreateRotation (float, Vector2f)
        [Fact]
        public void Matrix3x2CreateRotationCenterTest()
        {
            float radians = MathHelper.ToRadians(30.0f);
            Vector2 center = new Vector2(23, 42);

            Matrix3x2 rotateAroundZero = Matrix3x2.CreateRotation(radians, Vector2.Zero);
            Matrix3x2 rotateAroundZeroExpected = Matrix3x2.CreateRotation(radians);
            Assert.True(MathHelper.Equal(rotateAroundZero, rotateAroundZeroExpected));

            Matrix3x2 rotateAroundCenter = Matrix3x2.CreateRotation(radians, center);
            Matrix3x2 rotateAroundCenterExpected = Matrix3x2.CreateTranslation(-center) * Matrix3x2.CreateRotation(radians) * Matrix3x2.CreateTranslation(center);
            Assert.True(MathHelper.Equal(rotateAroundCenter, rotateAroundCenterExpected));
        }

        // A test for CreateRotation (float)
        [Fact]
        public void Matrix3x2CreateRotationRightAngleTest()
        {
            // 90 degree rotations must be exact!
            Matrix3x2 actual = Matrix3x2.CreateRotation(0);
            Assert.Equal(new Matrix3x2(1, 0, 0, 1, 0, 0), actual);

            actual = Matrix3x2.CreateRotation(MathHelper.Pi / 2);
            Assert.Equal(new Matrix3x2(0, 1, -1, 0, 0, 0), actual);

            actual = Matrix3x2.CreateRotation(MathHelper.Pi);
            Assert.Equal(new Matrix3x2(-1, 0, 0, -1, 0, 0), actual);

            actual = Matrix3x2.CreateRotation(MathHelper.Pi * 3 / 2);
            Assert.Equal(new Matrix3x2(0, -1, 1, 0, 0, 0), actual);

            actual = Matrix3x2.CreateRotation(MathHelper.Pi * 2);
            Assert.Equal(new Matrix3x2(1, 0, 0, 1, 0, 0), actual);

            actual = Matrix3x2.CreateRotation(MathHelper.Pi * 5 / 2);
            Assert.Equal(new Matrix3x2(0, 1, -1, 0, 0, 0), actual);

            actual = Matrix3x2.CreateRotation(-MathHelper.Pi / 2);
            Assert.Equal(new Matrix3x2(0, -1, 1, 0, 0, 0), actual);

            // But merely close-to-90 rotations should not be excessively clamped.
            float delta = MathHelper.ToRadians(0.01f);

            actual = Matrix3x2.CreateRotation(MathHelper.Pi + delta);
            Assert.False(MathHelper.Equal(new Matrix3x2(-1, 0, 0, -1, 0, 0), actual));

            actual = Matrix3x2.CreateRotation(MathHelper.Pi - delta);
            Assert.False(MathHelper.Equal(new Matrix3x2(-1, 0, 0, -1, 0, 0), actual));
        }

        // A test for CreateRotation (float, Vector2f)
        [Fact]
        public void Matrix3x2CreateRotationRightAngleCenterTest()
        {
            Vector2 center = new Vector2(3, 7);

            // 90 degree rotations must be exact!
            Matrix3x2 actual = Matrix3x2.CreateRotation(0, center);
            Assert.Equal(new Matrix3x2(1, 0, 0, 1, 0, 0), actual);

            actual = Matrix3x2.CreateRotation(MathHelper.Pi / 2, center);
            Assert.Equal(new Matrix3x2(0, 1, -1, 0, 10, 4), actual);

            actual = Matrix3x2.CreateRotation(MathHelper.Pi, center);
            Assert.Equal(new Matrix3x2(-1, 0, 0, -1, 6, 14), actual);

            actual = Matrix3x2.CreateRotation(MathHelper.Pi * 3 / 2, center);
            Assert.Equal(new Matrix3x2(0, -1, 1, 0, -4, 10), actual);

            actual = Matrix3x2.CreateRotation(MathHelper.Pi * 2, center);
            Assert.Equal(new Matrix3x2(1, 0, 0, 1, 0, 0), actual);

            actual = Matrix3x2.CreateRotation(MathHelper.Pi * 5 / 2, center);
            Assert.Equal(new Matrix3x2(0, 1, -1, 0, 10, 4), actual);

            actual = Matrix3x2.CreateRotation(-MathHelper.Pi / 2, center);
            Assert.Equal(new Matrix3x2(0, -1, 1, 0, -4, 10), actual);

            // But merely close-to-90 rotations should not be excessively clamped.
            float delta = MathHelper.ToRadians(0.01f);

            actual = Matrix3x2.CreateRotation(MathHelper.Pi + delta, center);
            Assert.False(MathHelper.Equal(new Matrix3x2(-1, 0, 0, -1, 6, 14), actual));

            actual = Matrix3x2.CreateRotation(MathHelper.Pi - delta, center);
            Assert.False(MathHelper.Equal(new Matrix3x2(-1, 0, 0, -1, 6, 14), actual));
        }

        // A test for Invert (Matrix3x2)
        // Non invertible matrix - determinant is zero - singular matrix
        [Fact]
        public void Matrix3x2InvertTest1()
        {
            Matrix3x2 a = new Matrix3x2();
            a.M11 = 0.0f;
            a.M12 = 2.0f;
            a.M21 = 0.0f;
            a.M22 = 4.0f;
            a.M31 = 5.0f;
            a.M32 = 6.0f;

            float detA = a.GetDeterminant();
            Assert.True(MathHelper.Equal(detA, 0.0f), "Matrix3x2.Invert did not return the expected value.");

            Matrix3x2 actual;
            Assert.False(Matrix3x2.Invert(a, out actual));

            // all the elements in Actual is NaN
            Assert.True(
                float.IsNaN(actual.M11) && float.IsNaN(actual.M12) &&
                float.IsNaN(actual.M21) && float.IsNaN(actual.M22) &&
                float.IsNaN(actual.M31) && float.IsNaN(actual.M32)
                , "Matrix3x2.Invert did not return the expected value.");
        }

        // A test for Lerp (Matrix3x2, Matrix3x2, float)
        [Fact]
        public void Matrix3x2LerpTest()
        {
            Matrix3x2 a = new Matrix3x2();
            a.M11 = 11.0f;
            a.M12 = 12.0f;
            a.M21 = 21.0f;
            a.M22 = 22.0f;
            a.M31 = 31.0f;
            a.M32 = 32.0f;

            Matrix3x2 b = GenerateMatrixNumberFrom1To6();

            float t = 0.5f;

            Matrix3x2 expected = new Matrix3x2();
            expected.M11 = a.M11 + (b.M11 - a.M11) * t;
            expected.M12 = a.M12 + (b.M12 - a.M12) * t;

            expected.M21 = a.M21 + (b.M21 - a.M21) * t;
            expected.M22 = a.M22 + (b.M22 - a.M22) * t;

            expected.M31 = a.M31 + (b.M31 - a.M31) * t;
            expected.M32 = a.M32 + (b.M32 - a.M32) * t;

            Matrix3x2 actual;
            actual = Matrix3x2.Lerp(a, b, t);
            Assert.True(MathHelper.Equal(expected, actual), "Matrix3x2.Lerp did not return the expected value.");
        }

        // A test for operator - (Matrix3x2)
        [Fact]
        public void Matrix3x2UnaryNegationTest()
        {
            Matrix3x2 a = GenerateMatrixNumberFrom1To6();

            Matrix3x2 expected = new Matrix3x2();
            expected.M11 = -1.0f;
            expected.M12 = -2.0f;
            expected.M21 = -3.0f;
            expected.M22 = -4.0f;
            expected.M31 = -5.0f;
            expected.M32 = -6.0f;

            Matrix3x2 actual = -a;
            Assert.True(MathHelper.Equal(expected, actual), "Matrix3x2.operator - did not return the expected value.");
        }

        // A test for operator - (Matrix3x2, Matrix3x2)
        [Fact]
        public void Matrix3x2SubtractionTest()
        {
            Matrix3x2 a = GenerateMatrixNumberFrom1To6();
            Matrix3x2 b = GenerateMatrixNumberFrom1To6();
            Matrix3x2 expected = new Matrix3x2();

            Matrix3x2 actual = a - b;
            Assert.True(MathHelper.Equal(expected, actual), "Matrix3x2.operator - did not return the expected value.");
        }

        // A test for operator * (Matrix3x2, Matrix3x2)
        [Fact]
        public void Matrix3x2MultiplyTest1()
        {
            Matrix3x2 a = GenerateMatrixNumberFrom1To6();
            Matrix3x2 b = GenerateMatrixNumberFrom1To6();

            Matrix3x2 expected = new Matrix3x2();
            expected.M11 = a.M11 * b.M11 + a.M12 * b.M21;
            expected.M12 = a.M11 * b.M12 + a.M12 * b.M22;

            expected.M21 = a.M21 * b.M11 + a.M22 * b.M21;
            expected.M22 = a.M21 * b.M12 + a.M22 * b.M22;

            expected.M31 = a.M31 * b.M11 + a.M32 * b.M21 + b.M31;
            expected.M32 = a.M31 * b.M12 + a.M32 * b.M22 + b.M32;

            Matrix3x2 actual = a * b;
            Assert.True(MathHelper.Equal(expected, actual), "Matrix3x2.operator * did not return the expected value.");

            // Sanity check by comparison with 4x4 multiply.
            a = Matrix3x2.CreateRotation(MathHelper.ToRadians(30)) * Matrix3x2.CreateTranslation(23, 42);
            b = Matrix3x2.CreateScale(3, 7) * Matrix3x2.CreateTranslation(666, -1);

            actual = a * b;

            Matrix4x4 a44 = new Matrix4x4(a);
            Matrix4x4 b44 = new Matrix4x4(b);
            Matrix4x4 expected44 = a44 * b44;
            Matrix4x4 actual44 = new Matrix4x4(actual);

            Assert.True(MathHelper.Equal(expected44, actual44), "Matrix3x2.operator * did not return the expected value.");
        }

        // A test for operator * (Matrix3x2, Matrix3x2)
        // Multiply with identity matrix
        [Fact]
        public void Matrix3x2MultiplyTest4()
        {
            Matrix3x2 a = new Matrix3x2();
            a.M11 = 1.0f;
            a.M12 = 2.0f;
            a.M21 = 5.0f;
            a.M22 = -6.0f;
            a.M31 = 9.0f;
            a.M32 = 10.0f;

            Matrix3x2 b = new Matrix3x2();
            b = Matrix3x2.Identity;

            Matrix3x2 expected = a;
            Matrix3x2 actual = a * b;

            Assert.True(MathHelper.Equal(expected, actual), "Matrix3x2.operator * did not return the expected value.");
        }

        // A test for operator + (Matrix3x2, Matrix3x2)
        [Fact]
        public void Matrix3x2AdditionTest()
        {
            Matrix3x2 a = GenerateMatrixNumberFrom1To6();
            Matrix3x2 b = GenerateMatrixNumberFrom1To6();

            Matrix3x2 expected = new Matrix3x2();
            expected.M11 = a.M11 + b.M11;
            expected.M12 = a.M12 + b.M12;
            expected.M21 = a.M21 + b.M21;
            expected.M22 = a.M22 + b.M22;
            expected.M31 = a.M31 + b.M31;
            expected.M32 = a.M32 + b.M32;

            Matrix3x2 actual;

            actual = a + b;

            Assert.True(MathHelper.Equal(expected, actual), "Matrix3x2.operator + did not return the expected value.");
        }

        // A test for ToString ()
        [Fact]
        public void Matrix3x2ToStringTest()
        {
            Matrix3x2 a = new Matrix3x2();
            a.M11 = 11.0f;
            a.M12 = -12.0f;
            a.M21 = 21.0f;
            a.M22 = 22.0f;
            a.M31 = 31.0f;
            a.M32 = 32.0f;

            string expected = "{ {M11:11 M12:-12} " +
                                "{M21:21 M22:22} " +
                                "{M31:31 M32:32} }";
            string actual;

            actual = a.ToString();
            Assert.Equal(expected, actual);
        }

        // A test for Add (Matrix3x2, Matrix3x2)
        [Fact]
        public void Matrix3x2AddTest()
        {
            Matrix3x2 a = GenerateMatrixNumberFrom1To6();
            Matrix3x2 b = GenerateMatrixNumberFrom1To6();

            Matrix3x2 expected = new Matrix3x2();
            expected.M11 = a.M11 + b.M11;
            expected.M12 = a.M12 + b.M12;
            expected.M21 = a.M21 + b.M21;
            expected.M22 = a.M22 + b.M22;
            expected.M31 = a.M31 + b.M31;
            expected.M32 = a.M32 + b.M32;

            Matrix3x2 actual;

            actual = Matrix3x2.Add(a, b);
            Assert.Equal(expected, actual);
        }

        // A test for Equals (object)
        [Fact]
        public void Matrix3x2EqualsTest()
        {
            Matrix3x2 a = GenerateMatrixNumberFrom1To6();
            Matrix3x2 b = GenerateMatrixNumberFrom1To6();

            // case 1: compare between same values
            object obj = b;

            bool expected = true;
            bool actual = a.Equals(obj);
            Assert.Equal(expected, actual);

            // case 2: compare between different values
            b.M11 = 11.0f;
            obj = b;
            expected = false;
            actual = a.Equals(obj);
            Assert.Equal(expected, actual);

            // case 3: compare between different types.
            obj = new Vector4();
            expected = false;
            actual = a.Equals(obj);
            Assert.Equal(expected, actual);

            // case 3: compare against null.
            obj = null;
            expected = false;
            actual = a.Equals(obj);
            Assert.Equal(expected, actual);
        }

        // A test for GetHashCode ()
        [Fact]
        public void Matrix3x2GetHashCodeTest()
        {
            Matrix3x2 target = GenerateMatrixNumberFrom1To6();
            int expected = unchecked(target.M11.GetHashCode() + target.M12.GetHashCode() +
                                     target.M21.GetHashCode() + target.M22.GetHashCode() +
                                     target.M31.GetHashCode() + target.M32.GetHashCode());
            int actual;

            actual = target.GetHashCode();
            Assert.Equal(expected, actual);
        }

        // A test for Multiply (Matrix3x2, Matrix3x2)
        [Fact]
        public void Matrix3x2MultiplyTest3()
        {
            Matrix3x2 a = GenerateMatrixNumberFrom1To6();
            Matrix3x2 b = GenerateMatrixNumberFrom1To6();

            Matrix3x2 expected = new Matrix3x2();
            expected.M11 = a.M11 * b.M11 + a.M12 * b.M21;
            expected.M12 = a.M11 * b.M12 + a.M12 * b.M22;

            expected.M21 = a.M21 * b.M11 + a.M22 * b.M21;
            expected.M22 = a.M21 * b.M12 + a.M22 * b.M22;

            expected.M31 = a.M31 * b.M11 + a.M32 * b.M21 + b.M31;
            expected.M32 = a.M31 * b.M12 + a.M32 * b.M22 + b.M32;
            Matrix3x2 actual;
            actual = Matrix3x2.Multiply(a, b);

            Assert.Equal(expected, actual);

            // Sanity check by comparison with 4x4 multiply.
            a = Matrix3x2.CreateRotation(MathHelper.ToRadians(30)) * Matrix3x2.CreateTranslation(23, 42);
            b = Matrix3x2.CreateScale(3, 7) * Matrix3x2.CreateTranslation(666, -1);

            actual = Matrix3x2.Multiply(a, b);

            Matrix4x4 a44 = new Matrix4x4(a);
            Matrix4x4 b44 = new Matrix4x4(b);
            Matrix4x4 expected44 = Matrix4x4.Multiply(a44, b44);
            Matrix4x4 actual44 = new Matrix4x4(actual);

            Assert.True(MathHelper.Equal(expected44, actual44), "Matrix3x2.Multiply did not return the expected value.");
        }

        // A test for Multiply (Matrix3x2, float)
        [Fact]
        public void Matrix3x2MultiplyTest5()
        {
            Matrix3x2 a = GenerateMatrixNumberFrom1To6();
            Matrix3x2 expected = new Matrix3x2(3, 6, 9, 12, 15, 18);
            Matrix3x2 actual = Matrix3x2.Multiply(a, 3);

            Assert.Equal(expected, actual);
        }

        // A test for Multiply (Matrix3x2, float)
        [Fact]
        public void Matrix3x2MultiplyTest6()
        {
            Matrix3x2 a = GenerateMatrixNumberFrom1To6();
            Matrix3x2 expected = new Matrix3x2(3, 6, 9, 12, 15, 18);
            Matrix3x2 actual = a * 3;

            Assert.Equal(expected, actual);
        }

        // A test for Negate (Matrix3x2)
        [Fact]
        public void Matrix3x2NegateTest()
        {
            Matrix3x2 m = GenerateMatrixNumberFrom1To6();

            Matrix3x2 expected = new Matrix3x2();
            expected.M11 = -1.0f;
            expected.M12 = -2.0f;
            expected.M21 = -3.0f;
            expected.M22 = -4.0f;
            expected.M31 = -5.0f;
            expected.M32 = -6.0f;
            Matrix3x2 actual;

            actual = Matrix3x2.Negate(m);
            Assert.Equal(expected, actual);
        }

        // A test for operator != (Matrix3x2, Matrix3x2)
        [Fact]
        public void Matrix3x2InequalityTest()
        {
            Matrix3x2 a = GenerateMatrixNumberFrom1To6();
            Matrix3x2 b = GenerateMatrixNumberFrom1To6();

            // case 1: compare between same values
            bool expected = false;
            bool actual = a != b;
            Assert.Equal(expected, actual);

            // case 2: compare between different values
            b.M11 = 11.0f;
            expected = true;
            actual = a != b;
            Assert.Equal(expected, actual);
        }

        // A test for operator == (Matrix3x2, Matrix3x2)
        [Fact]
        public void Matrix3x2EqualityTest()
        {
            Matrix3x2 a = GenerateMatrixNumberFrom1To6();
            Matrix3x2 b = GenerateMatrixNumberFrom1To6();

            // case 1: compare between same values
            bool expected = true;
            bool actual = a == b;
            Assert.Equal(expected, actual);

            // case 2: compare between different values
            b.M11 = 11.0f;
            expected = false;
            actual = a == b;
            Assert.Equal(expected, actual);
        }

        // A test for Subtract (Matrix3x2, Matrix3x2)
        [Fact]
        public void Matrix3x2SubtractTest()
        {
            Matrix3x2 a = GenerateMatrixNumberFrom1To6();
            Matrix3x2 b = GenerateMatrixNumberFrom1To6();
            Matrix3x2 expected = new Matrix3x2();
            Matrix3x2 actual;

            actual = Matrix3x2.Subtract(a, b);
            Assert.Equal(expected, actual);
        }

        // A test for CreateScale (Vector2f)
        [Fact]
        public void Matrix3x2CreateScaleTest1()
        {
            Vector2 scales = new Vector2(2.0f, 3.0f);
            Matrix3x2 expected = new Matrix3x2(
                2.0f, 0.0f,
                0.0f, 3.0f,
                0.0f, 0.0f);
            Matrix3x2 actual = Matrix3x2.CreateScale(scales);
            Assert.Equal(expected, actual);
        }

        // A test for CreateScale (Vector2f, Vector2f)
        [Fact]
        public void Matrix3x2CreateScaleCenterTest1()
        {
            Vector2 scale = new Vector2(3, 4);
            Vector2 center = new Vector2(23, 42);

            Matrix3x2 scaleAroundZero = Matrix3x2.CreateScale(scale, Vector2.Zero);
            Matrix3x2 scaleAroundZeroExpected = Matrix3x2.CreateScale(scale);
            Assert.True(MathHelper.Equal(scaleAroundZero, scaleAroundZeroExpected));

            Matrix3x2 scaleAroundCenter = Matrix3x2.CreateScale(scale, center);
            Matrix3x2 scaleAroundCenterExpected = Matrix3x2.CreateTranslation(-center) * Matrix3x2.CreateScale(scale) * Matrix3x2.CreateTranslation(center);
            Assert.True(MathHelper.Equal(scaleAroundCenter, scaleAroundCenterExpected));
        }

        // A test for CreateScale (float)
        [Fact]
        public void Matrix3x2CreateScaleTest2()
        {
            float scale = 2.0f;
            Matrix3x2 expected = new Matrix3x2(
                2.0f, 0.0f,
                0.0f, 2.0f,
                0.0f, 0.0f);
            Matrix3x2 actual = Matrix3x2.CreateScale(scale);
            Assert.Equal(expected, actual);
        }

        // A test for CreateScale (float, Vector2f)
        [Fact]
        public void Matrix3x2CreateScaleCenterTest2()
        {
            float scale = 5;
            Vector2 center = new Vector2(23, 42);

            Matrix3x2 scaleAroundZero = Matrix3x2.CreateScale(scale, Vector2.Zero);
            Matrix3x2 scaleAroundZeroExpected = Matrix3x2.CreateScale(scale);
            Assert.True(MathHelper.Equal(scaleAroundZero, scaleAroundZeroExpected));

            Matrix3x2 scaleAroundCenter = Matrix3x2.CreateScale(scale, center);
            Matrix3x2 scaleAroundCenterExpected = Matrix3x2.CreateTranslation(-center) * Matrix3x2.CreateScale(scale) * Matrix3x2.CreateTranslation(center);
            Assert.True(MathHelper.Equal(scaleAroundCenter, scaleAroundCenterExpected));
        }

        // A test for CreateScale (float, float)
        [Fact]
        public void Matrix3x2CreateScaleTest3()
        {
            float xScale = 2.0f;
            float yScale = 3.0f;
            Matrix3x2 expected = new Matrix3x2(
                2.0f, 0.0f,
                0.0f, 3.0f,
                0.0f, 0.0f);
            Matrix3x2 actual = Matrix3x2.CreateScale(xScale, yScale);
            Assert.Equal(expected, actual);
        }

        // A test for CreateScale (float, float, Vector2f)
        [Fact]
        public void Matrix3x2CreateScaleCenterTest3()
        {
            Vector2 scale = new Vector2(3, 4);
            Vector2 center = new Vector2(23, 42);

            Matrix3x2 scaleAroundZero = Matrix3x2.CreateScale(scale.X, scale.Y, Vector2.Zero);
            Matrix3x2 scaleAroundZeroExpected = Matrix3x2.CreateScale(scale.X, scale.Y);
            Assert.True(MathHelper.Equal(scaleAroundZero, scaleAroundZeroExpected));

            Matrix3x2 scaleAroundCenter = Matrix3x2.CreateScale(scale.X, scale.Y, center);
            Matrix3x2 scaleAroundCenterExpected = Matrix3x2.CreateTranslation(-center) * Matrix3x2.CreateScale(scale.X, scale.Y) * Matrix3x2.CreateTranslation(center);
            Assert.True(MathHelper.Equal(scaleAroundCenter, scaleAroundCenterExpected));
        }

        // A test for CreateTranslation (Vector2f)
        [Fact]
        public void Matrix3x2CreateTranslationTest1()
        {
            Vector2 position = new Vector2(2.0f, 3.0f);
            Matrix3x2 expected = new Matrix3x2(
                1.0f, 0.0f,
                0.0f, 1.0f,
                2.0f, 3.0f);

            Matrix3x2 actual = Matrix3x2.CreateTranslation(position);
            Assert.Equal(expected, actual);
        }

        // A test for CreateTranslation (float, float)
        [Fact]
        public void Matrix3x2CreateTranslationTest2()
        {
            float xPosition = 2.0f;
            float yPosition = 3.0f;

            Matrix3x2 expected = new Matrix3x2(
                1.0f, 0.0f,
                0.0f, 1.0f,
                2.0f, 3.0f);

            Matrix3x2 actual = Matrix3x2.CreateTranslation(xPosition, yPosition);
            Assert.Equal(expected, actual);
        }

        // A test for Translation
        [Fact]
        public void Matrix3x2TranslationTest()
        {
            Matrix3x2 a = GenerateTestMatrix();
            Matrix3x2 b = a;

            // Transformed vector that has same semantics of property must be same.
            Vector2 val = new Vector2(a.M31, a.M32);
            Assert.Equal(val, a.Translation);

            // Set value and get value must be same.
            val = new Vector2(1.0f, 2.0f);
            a.Translation = val;
            Assert.Equal(val, a.Translation);

            // Make sure it only modifies expected value of matrix.
            Assert.True(
                a.M11 == b.M11 && a.M12 == b.M12 &&
                a.M21 == b.M21 && a.M22 == b.M22 &&
                a.M31 != b.M31 && a.M32 != b.M32,
                "Matrix3x2.Translation modified unexpected value of matrix.");
        }

        // A test for Equals (Matrix3x2)
        [Fact]
        public void Matrix3x2EqualsTest1()
        {
            Matrix3x2 a = GenerateMatrixNumberFrom1To6();
            Matrix3x2 b = GenerateMatrixNumberFrom1To6();

            // case 1: compare between same values
            bool expected = true;
            bool actual = a.Equals(b);
            Assert.Equal(expected, actual);

            // case 2: compare between different values
            b.M11 = 11.0f;
            expected = false;
            actual = a.Equals(b);
            Assert.Equal(expected, actual);
        }

        // A test for CreateSkew (float, float)
        [Fact]
        public void Matrix3x2CreateSkewIdentityTest()
        {
            Matrix3x2 expected = Matrix3x2.Identity;
            Matrix3x2 actual = Matrix3x2.CreateSkew(0, 0);
            Assert.Equal(expected, actual);
        }

        // A test for CreateSkew (float, float)
        [Fact]
        public void Matrix3x2CreateSkewXTest()
        {
            Matrix3x2 expected = new Matrix3x2(1, 0, -0.414213562373095f, 1, 0, 0);
            Matrix3x2 actual = Matrix3x2.CreateSkew(-MathHelper.Pi / 8, 0);
            Assert.True(MathHelper.Equal(expected, actual));

            expected = new Matrix3x2(1, 0, 0.414213562373095f, 1, 0, 0);
            actual = Matrix3x2.CreateSkew(MathHelper.Pi / 8, 0);
            Assert.True(MathHelper.Equal(expected, actual));

            Vector2 result = Vector2.Transform(new Vector2(0, 0), actual);
            Assert.True(MathHelper.Equal(new Vector2(0, 0), result));

            result = Vector2.Transform(new Vector2(0, 1), actual);
            Assert.True(MathHelper.Equal(new Vector2(0.414213568f, 1), result));

            result = Vector2.Transform(new Vector2(0, -1), actual);
            Assert.True(MathHelper.Equal(new Vector2(-0.414213568f, -1), result));

            result = Vector2.Transform(new Vector2(3, 10), actual);
            Assert.True(MathHelper.Equal(new Vector2(7.14213568f, 10), result));
        }

        // A test for CreateSkew (float, float)
        [Fact]
        public void Matrix3x2CreateSkewYTest()
        {
            Matrix3x2 expected = new Matrix3x2(1, -0.414213562373095f, 0, 1, 0, 0);
            Matrix3x2 actual = Matrix3x2.CreateSkew(0, -MathHelper.Pi / 8);
            Assert.True(MathHelper.Equal(expected, actual));

            expected = new Matrix3x2(1, 0.414213562373095f, 0, 1, 0, 0);
            actual = Matrix3x2.CreateSkew(0, MathHelper.Pi / 8);
            Assert.True(MathHelper.Equal(expected, actual));

            Vector2 result = Vector2.Transform(new Vector2(0, 0), actual);
            Assert.True(MathHelper.Equal(new Vector2(0, 0), result));

            result = Vector2.Transform(new Vector2(1, 0), actual);
            Assert.True(MathHelper.Equal(new Vector2(1, 0.414213568f), result));

            result = Vector2.Transform(new Vector2(-1, 0), actual);
            Assert.True(MathHelper.Equal(new Vector2(-1, -0.414213568f), result));

            result = Vector2.Transform(new Vector2(10, 3), actual);
            Assert.True(MathHelper.Equal(new Vector2(10, 7.14213568f), result));
        }

        // A test for CreateSkew (float, float)
        [Fact]
        public void Matrix3x2CreateSkewXYTest()
        {
            Matrix3x2 expected = new Matrix3x2(1, -0.414213562373095f, 1, 1, 0, 0);
            Matrix3x2 actual = Matrix3x2.CreateSkew(MathHelper.Pi / 4, -MathHelper.Pi / 8);
            Assert.True(MathHelper.Equal(expected, actual));

            Vector2 result = Vector2.Transform(new Vector2(0, 0), actual);
            Assert.True(MathHelper.Equal(new Vector2(0, 0), result));

            result = Vector2.Transform(new Vector2(1, 0), actual);
            Assert.True(MathHelper.Equal(new Vector2(1, -0.414213562373095f), result));

            result = Vector2.Transform(new Vector2(0, 1), actual);
            Assert.True(MathHelper.Equal(new Vector2(1, 1), result));

            result = Vector2.Transform(new Vector2(1, 1), actual);
            Assert.True(MathHelper.Equal(new Vector2(2, 0.585786437626905f), result));
        }

        // A test for CreateSkew (float, float, Vector2f)
        [Fact]
        public void Matrix3x2CreateSkewCenterTest()
        {
            float skewX = 1, skewY = 2;
            Vector2 center = new Vector2(23, 42);

            Matrix3x2 skewAroundZero = Matrix3x2.CreateSkew(skewX, skewY, Vector2.Zero);
            Matrix3x2 skewAroundZeroExpected = Matrix3x2.CreateSkew(skewX, skewY);
            Assert.True(MathHelper.Equal(skewAroundZero, skewAroundZeroExpected));

            Matrix3x2 skewAroundCenter = Matrix3x2.CreateSkew(skewX, skewY, center);
            Matrix3x2 skewAroundCenterExpected = Matrix3x2.CreateTranslation(-center) * Matrix3x2.CreateSkew(skewX, skewY) * Matrix3x2.CreateTranslation(center);
            Assert.True(MathHelper.Equal(skewAroundCenter, skewAroundCenterExpected));
        }

        // A test for IsIdentity
        [Fact]
        public void Matrix3x2IsIdentityTest()
        {
            Assert.True(Matrix3x2.Identity.IsIdentity);
            Assert.True(new Matrix3x2(1, 0, 0, 1, 0, 0).IsIdentity);
            Assert.False(new Matrix3x2(0, 0, 0, 1, 0, 0).IsIdentity);
            Assert.False(new Matrix3x2(1, 1, 0, 1, 0, 0).IsIdentity);
            Assert.False(new Matrix3x2(1, 0, 1, 1, 0, 0).IsIdentity);
            Assert.False(new Matrix3x2(1, 0, 0, 0, 0, 0).IsIdentity);
            Assert.False(new Matrix3x2(1, 0, 0, 1, 1, 0).IsIdentity);
            Assert.False(new Matrix3x2(1, 0, 0, 1, 0, 1).IsIdentity);
        }

        // A test for Matrix3x2 comparison involving NaN values
        [Fact]
        public void Matrix3x2EqualsNanTest()
        {
            Matrix3x2 a = new Matrix3x2(float.NaN, 0, 0, 0, 0, 0);
            Matrix3x2 b = new Matrix3x2(0, float.NaN, 0, 0, 0, 0);
            Matrix3x2 c = new Matrix3x2(0, 0, float.NaN, 0, 0, 0);
            Matrix3x2 d = new Matrix3x2(0, 0, 0, float.NaN, 0, 0);
            Matrix3x2 e = new Matrix3x2(0, 0, 0, 0, float.NaN, 0);
            Matrix3x2 f = new Matrix3x2(0, 0, 0, 0, 0, float.NaN);

            Assert.False(a == new Matrix3x2());
            Assert.False(b == new Matrix3x2());
            Assert.False(c == new Matrix3x2());
            Assert.False(d == new Matrix3x2());
            Assert.False(e == new Matrix3x2());
            Assert.False(f == new Matrix3x2());

            Assert.True(a != new Matrix3x2());
            Assert.True(b != new Matrix3x2());
            Assert.True(c != new Matrix3x2());
            Assert.True(d != new Matrix3x2());
            Assert.True(e != new Matrix3x2());
            Assert.True(f != new Matrix3x2());

            Assert.False(a.Equals(new Matrix3x2()));
            Assert.False(b.Equals(new Matrix3x2()));
            Assert.False(c.Equals(new Matrix3x2()));
            Assert.False(d.Equals(new Matrix3x2()));
            Assert.False(e.Equals(new Matrix3x2()));
            Assert.False(f.Equals(new Matrix3x2()));

            Assert.False(a.IsIdentity);
            Assert.False(b.IsIdentity);
            Assert.False(c.IsIdentity);
            Assert.False(d.IsIdentity);
            Assert.False(e.IsIdentity);
            Assert.False(f.IsIdentity);

            // Counterintuitive result - IEEE rules for NaN comparison are weird!
            Assert.False(a.Equals(a));
            Assert.False(b.Equals(b));
            Assert.False(c.Equals(c));
            Assert.False(d.Equals(d));
            Assert.False(e.Equals(e));
            Assert.False(f.Equals(f));
        }

        // A test to make sure these types are blittable directly into GPU buffer memory layouts
        [Fact]
        public unsafe void Matrix3x2SizeofTest()
        {
            Assert.Equal(24, sizeof(Matrix3x2));
            Assert.Equal(48, sizeof(Matrix3x2_2x));
            Assert.Equal(28, sizeof(Matrix3x2PlusFloat));
            Assert.Equal(56, sizeof(Matrix3x2PlusFloat_2x));
        }

        [StructLayout(LayoutKind.Sequential)]
        struct Matrix3x2_2x
        {
            private Matrix3x2 _a;
            private Matrix3x2 _b;
        }

        [StructLayout(LayoutKind.Sequential)]
        struct Matrix3x2PlusFloat
        {
            private Matrix3x2 _v;
            private float _f;
        }

        [StructLayout(LayoutKind.Sequential)]
        struct Matrix3x2PlusFloat_2x
        {
            private Matrix3x2PlusFloat _a;
            private Matrix3x2PlusFloat _b;
        }

        // A test to make sure the fields are laid out how we expect
        [Fact]
        public unsafe void Matrix3x2FieldOffsetTest()
        {
            Matrix3x2 mat = new Matrix3x2();
            float* basePtr = &mat.M11; // Take address of first element
            Matrix3x2* matPtr = &mat; // Take address of whole matrix

            Assert.Equal(new IntPtr(basePtr), new IntPtr(matPtr));

            Assert.Equal(new IntPtr(basePtr + 0), new IntPtr(&mat.M11));
            Assert.Equal(new IntPtr(basePtr + 1), new IntPtr(&mat.M12));

            Assert.Equal(new IntPtr(basePtr + 2), new IntPtr(&mat.M21));
            Assert.Equal(new IntPtr(basePtr + 3), new IntPtr(&mat.M22));

            Assert.Equal(new IntPtr(basePtr + 4), new IntPtr(&mat.M31));
            Assert.Equal(new IntPtr(basePtr + 5), new IntPtr(&mat.M32));
        }
    }
}


It's been long since I baked some cookies and this seemed the perfect occasion when I should be baking more of them. My little tot is in her teething phase and loves putting almost everything into her mouth. Door-mats seem to entice her more than anything else and we have a tough time hiding them from her. We've been playing a lot of peek-a-boo games with her and my little brat is full of untiring energy, life and zest. She's been gaining strength and weight to crawl and pull herself well now, but should have some more time to go before she can be independent on her feet. While she loves pulling objects and putting them to her teeth, we have a terrible time objecting her from doing so! This seemed the perfect reason for me to bake some cookies so that she can hold them and bite into her itching teeth.
With 2 bunny teeth on lower and 1 on upper gums and the fourth breaking its way out, she hasn't yet got over her itch to bite into almost anything close to solid. While she's pretty fussy with her choices when it comes to food, digestive biscuits seem to be her favorites. And no, not the milk dipped softened ones done specifically for her, but a solid bite into the biscuit is what she demands. I played around with these Chocolate & Coffee Whole Wheat Cookies, adapted from the cookbook, Chocolate: The Food and the Music to make cookies which were healthy so she can bite into. I've made 2-3 batches of varying ingredients, all on similar lines of the base recipe. For my little one, I skipped chocolate and coffee. I omitted egg completely, instead used thin flax-meal paste. For the adults, I like to use same amount of coffee liquor as much the volume of an egg. They turn out good each time promising to be good companions for your cup of tea. And my little toddler surely seems to be enjoying them.
Preheat oven to 375 degrees F. Grease 2 large cookies sheets. Cream the butter and sugar together in a bowl. Add the egg (replace with 1 tbsp. gooey flax-meal paste or 1 tbsp. of coffee liquor, if making for adults) and beat well, using an electric mixer.
In a separate bowl, sift together the all-purpose flour, baking soda, and salt, then add in the whole wheat flour and bran. Mix in the egg / flax mixture, then stir in the chocolate chips, oats, coffee and nuts. If it's for the baby, skip the chocolates and coffee. Mix well.
Drop tablespoonful of the mixture onto the prepared cookie sheets, dabbing each lightly using the back of a spoon (if you prefer thin, crisp cookies), leaving room for the cookies to spread during cooking. Transfer the cookie sheets to preheated oven and bake for 16-18 minutes, or until the cookies are golden brown.
Remove from the oven, the transfer to a cooling rack and let cool before serving.
I like thin, crisp cookies which have a crunch with every bite. That my prefect bake. On the other hand, my husband prefers more chewy cookies over the crunch. If you want your cookies crisp, you bake 2 minutes longer. For chewy ones, remove the cookies as they begin to brown on edges.
We use flax quite a lot in Indian cooking, specially South. While my mom's roasted flaxseed chutney powder is my favorite, I personally dislike the flavor of flax in my baked goods. So I was cautious with my use of flax-meal powder this time and made a pretty thin paste instead of a thick gooey one. I like to think these are good for you. They have bran, rolled oats, whole wheat flour, flax-meal, walnuts and chocolate chips in them. Now, isn't that goodness of everything in one?
Nice cookie , please post ur moms roasted flaxseed chutney sometime.
Great to know that your little one has love for good food..will make ur life easier..and a nice recipe too!
These wholewheat cookies must have tasted great!
Can this be made without Coffee flavoring? What can I subsitute?
Yes Ravi, you can surely avoid coffee flavour if that's not your taste. A dash of vanilla or orange flavour will also be great!


Phuket Island - surrounded by warm tropical waters - is a paradise for water sports lovers. The area is well known to scuba enthusiasts but lesser-recognised water activities such a sea kayaking and kite surfing are growing in popularity.
Of course, the gentle tides and calm waters from November to April are perfect for snorkeling while the wild and rough waves from May to October are great for surfers. It's your call: either gently ride the waves on a cruise or get to your destination ultra quick on a speedboat. Enjoy watersports and activities around Phuket.
The Dragonjet boat ride is an exciting thrill ride in Patong. During a 20 minute ride you'll experience 360° spins, sharp turns and lightning acceleration on this rollercoaster on the water. Safe for the whole family, you can 'ride the dragon' as long as you are a minimum height of one metre tall.
Want to learn to dive, or simply to upgrade your skills? Phuket is a great place to achieve your PADI (Professional Association of Diving Instructors) certificate. It is rated amongst the top 10 diving destinations in the world and many of the centres in the area boast years of experience.
The tropical waters of the Andaman Sea are ideal for snorkeling - clear, calm, balmy and bursting with brilliant marine life. Snorkeling can be done year-round in Phuket, but the best time of year is November-April, when the sea's at its most placid.
Think surfing. Think waves as big as houses, curling breakers with surfers shootin' the tube, spectacular wipeouts.
Think Phuket. Surfing? Hmm. Nah. But if you think that, you're wrong. Phuket has a small but lively community of surfers. Some live here. Others have been coming back time and again for as long as 20 years.
Surf House Phuket is every surfer's dream: a place where you can ride the waves every day no matter what the weather conditions. With an adjacent bar and restaurant, Surf House Phuket is a world to itself and as a result it is tremendously popular.


Organisations depend heavily on the software it uses. And we teach your employees to get the most out of those digital tools which will benefit everyone involved.
Soft skills are skills you can learn. We help your employees in their personal development via one of our various courses.
In order to ensure that knowledge is also acquired outside a training, we offer a whole set of tools and advice tailored to your organisation.
Every day and everywhere you learn, including on the work floor. Yet everyone does that in a different way, and no organisation is the same. For example, no fewer than 92% of all courses are customised to the needs of the customer and participants. Learnia offers you a wealth of knowledge and skills, about software (Office 365, Adobe, ...) and soft skills (communication, stress control, ...). We are happy to tailor it to your organisation. This will give you training that lingers.
Are you migrating to a new software system within your organisation? Then there are a lot of changes involved. Keep it under control and aim for a successful user adaption. In addition to the necessary training, we help you with the right tools and information throughout the entire process. We support your organisation's migration from A to Z.