text:
The second priority from the Geneva phases of the World Summit on Information Society (WSIS) was the financing of the Information Society but the Internet Governance debate has overshadowed this. Given that I have made a submission on the later I feel obliged to contribute my 50 cents to the former – for me financing the information society should take more precedence over the Internet Governance debate.
The second priority from the Geneva phases of the World Summit on Information Society (WSIS) was the financing of the Information Society but the Internet Governance debate has overshadowed this. Given that I have made a submission on the later I feel obliged to contribute my 50 cents to the former – for me financing the information society should take more precedence over the Internet Governance debate.
Financing the information Society is a tall order because there are so many things to be financed and the financing principles, priorities and practice seems a bigger challenge, may be that's why we are giving it less priority but in this essay I would try to make an easy attempt focusing on the financing of infrastructure. Infrastructure is at the core of all the services and products we are envisaging to make the information society so priority must be given to the financing of same. This is not to say the financing of the others should be done later because they can be done simultaneously and as a matter of fact some of the principles am going to advance would be better served in a multi-track approach.
I think our first consideration should be the need to separate infrastructure from products and services and this distinction is advanced in the global communication paradigm. There is a general consensus to move from the "silos" approach to the communication system to a "horizontal layering" approach. In the silos approach what happened was everyone could do anything once they where licensed to, which meant that companies needed to build capital intensive infrastructure in order to provide services and trade products. This also meant that the end product or service was expensive for the market which meant it was less affordable for the majority.
Horizontal Layering
The horizontal layering approach is to distinguish infrastructure from services though there are other logical distinctions between:
* The physical layer (the actual physical infrastructure);
* The logical layer (managing the connection between the physical infrastructure and higher layers);
* The applications layer (which includes things such as the Web browser), and
* The content layer (voice, data or images conveyed by the network.)
Each layer has a set of functional rules that allow it to interface with the other layer and for information to flow over the network. Any player, including new players, can use different elements of the network, or the entire network, to provide services. The IP-based architecture of the network makes it possible for services to be provided, and innovation to occur, at any point on the network, including, notably, the edges, where the network can be further "grown" as well.
Different segments of the market – and different layers of the network — will naturally have different structures, and will attract players with different business models. For example, in most countries and regions, it will not be feasible or logical to have more than one or two providers of backbone infrastructure. The key issue in an Open Access model is to ensure that no player in one of the layers can block access to another layer or to the rest of the network through having dominant market power in one or another layer; hence some key principles of Open Access must be advanced at this stage.
Key Principles of the Open Access Model
1. Anyone can play: Particularly because of the potential for locally-provided services and network growth "at the edges" made possible by flexible technology and open network models, Open Access models should assure that any provider willing to play by the rules can "plug and play" in the network.
2. Technological neutrality: Regulation should be technology-neutral, taking into account the cost and physical properties of the technologies themselves. No one should be stopped from using a particular technology and indeed a progressive regulator would encourage cost reduction through technology innovation.
One needs to recognize that in future a wide range of applications will require higher bandwidth. But there may be no significant (order of magnitude) improvements in the performance of fibre, particularly its installation. However with wireless there will be significant improvements in performance and cost/capacity ratio and therefore wireless solutions will become more attractive in local distribution applications.
3. Fair and non-discriminatory competition at all layers: Competition should be fair and non-discriminatory. There should be no predatory pricing, cross-subsidisation or aggressive cross-ownership. Regulators will need to be capable of dealing with a range of competition issues to ensure a genuine level playing field, and to prevent market strength in one layer from creating unfair competitive advantage at another layer. For all services at a given layer, there ought to be at least two providers and whenever there are not 4-5 providers of a particular service, issues of competitive position would need to be examined.
What is true for countries at a national level holds true at a regional and international level. Ideally any country should have a choice of at least two providers to connect to neighbours and the rest of the world. The EU competition policy formulation of "significant market power" provides a useful benchmark against which competitive position might be examined.
4. Transparency to ensure fair trading within and between layers: Competitive markets thrive on transparent information about market prices and service. Internal accounting processes in companies need to be sufficiently transparent to enforce fair trading. If there is tradable bandwidth – particularly at an international level – it will allow clear comparisons to be made between different providers. There needs to be greater levels of consumer information to allow comparisons between "offers", including offers at the interface between layers.
The different roles of players need to be transparent. In order to create trust in the market, infrastructure providers need to be clear that they will not enter service markets to compete with their customers. The regulator exists to encourage competition rather than restrict it but to do so in a way that genuinely encourages increased investment and lower access costs to communications technology. Where appropriate, regulation becomes "light-touch" rather than prohibitive or restrictive. Government exists to create the legal framework through which competition issues can be mediated.
5. Everyone can connect to everyone else at the layer interface: In order for a competitive market to function, everyone must be able to connect to everyone else. Service providers would be able to get access to infrastructure from the local to the international level, whether they were small or large entities.
There will be inevitable interconnection rate issues where the interests of the infrastructure provider in keeping re-investing in the network need to be weighed against the opportunities that can be created for greater levels of new business.
6. Devolved rather than centralised solutions: It is important to ensure that the "intelligence" in the network is to be found at the edges of the infrastructure rather than at its centre. In other words, the infrastructure provider should not be allowed to reserve for itself all of the functions that create value in the market.
In practical terms, it should be possible to create a local entity that can operate on the small or medium-scale and can "plug into" the network without needing to cede control over its activities to the infrastructure provider. Local operators need to be able to own and control a significant level of "intelligence" in the system (eg billing, features, etc) to encourage open access.
Having advanced the following principles a couple of financing mechanisms are made possible namely:
* Market funding – support projects that demonstrate market demand and make a return for investors. This can be found through loan, debt and equity and an Open Access approach would be facilitated by access to local funds through SME loan programmes and local and regional stock exchanges.
* Market "stretch" funding – support the development of projects where market demand will support them in the medium to long term (5-10 years) and where either soft loan repayments are made or capital gains can be made through later sale of shareholding. This would also cover public-private funding partnerships.
* Social funding – is given because something needs to be supported because it has broader, non-market, development objectives where the returns looked for are social rather than financial. In communications terms, this would cover those parts of a country where service of any kind could not be provided on anything like a market basis, irrespective of future growth.
However these funding mechanisms must be implemented within a set of financial principles if public resources are to be used to intervene in the telecommunications sector, what should the criteria for these investments and projects be? Surprisingly, the criteria are not terribly complex, and there are only three. Readers not familiar with the sector and its traditions will be surprised to know that almost any project on the table today, such as SAT3 and EASSy fiber buildout, violate all of the following "principles".
Public money should be used to create resources that are open to all customers, including future customers who may not yet exist. When private capital creates a resource one of the forms of "Return on Investment" can be exclusion of future competitors. Private investors can give a price advantage to "early" customers or they can simply deny "late" customers a chance at all. Either form of exclusion is a fine strategy for private businesses investing private money.
On the other hand, public money should be used to create opportunity, not exclude it or reserve it for a select group. To the degree that public money finances telecommunications, the network so created should be open to all customers, for all time, on equal terms. This does not mean early contributors of capital should not be paid a fair rate of interest for making their investment early, when risk is higher. It does mean that customers who come along five or ten years later should have access on terms that are determined by the global and regional economy as a whole.
Fiber optic systems like EASSy in particular have very long operating life spans, 20 years or more, so they have the ability to grow their benefits to a region if given a chance; to have such a powerful resource controlled by a monopoly consortium is especially damaging.
Resources created with public money should be sold on a cost-recovery basis. Private investors in telecommunications seek a financial return (profit). They must charge the highest price they can get or they will eventually be pushed out by a competitor. Governments should endeavor to insure that private investors in telecommunications enterprises operate in a competitive market; that will hold prices down; but government should not regulate prices or regulate the market in other ways.
Only the free market is powerful enough to defend the customer from the natural tendency for private companies to charge the highest price they can. Conversely, when public money is used to create telecommunications networks the situation changes; governments become active participants in the market; but the objective of government participants should not be to charge the highest price they can. The objective of investing public money in telecommunications should be to create the highest benefit to the citizens and economy as a whole.
Government needs to satisfy "investors" too, but in different ways. Government needs to deliver results, not profits. Because telecommunications is a high-technology product, the cost of capacity-creation is constantly dropping in real dollars. Certain layers of the telecommunications business involve extremely high levels of technical skill and expertise, so it is never a good idea for government to try and run a telecommunications network. However, parts of modern telecommunications networks, such as fiber optic "backbones," have all the physical and economic characteristics of roads and waterworks and other "heavy infrastructure." They are the kinds of resources government can help finance without getting into something too complex for governments to manage. But to achieve maximum benefit these resources need to be made available. That means public money should not seek a financial return, but should buy the delivery of capacity into a fair market at the lowest price possible (which is a price that seeks to recover cost and no more).
In fact, public money should not be involved unless the explicit outcome will be a reduction in prices to customers. If public money can't deliver that, then we have to ask if the free market is not already operating efficiently and if there may be no role or need for public money.
Public money should not be invested in markets that are distorted by anti-competitive regulatory regimes. As stewards of public money, governments should not invest resources in an environment where customers and competitors are not treated fairly by law.
Unfortunately in every African country today telecommunications regulations are a systematic labyrinth of laws that create unfair advantages for certain companies, drive costs up for many companies, and drive costs up and deny service to almost all customers. Investment of public money into projects which must operate in these distorted "sub-economies" is a mistake; the vast quantity of telecommunications capacity created by a project like SAT3 or EASSy can only be productively sold in a fair and free market. Therefore, a precondition to large scale projects financed by global donor and World Bank money should be that governments clean regulatory house and create a business climate for telecommunications that is open and fa!
The last point may be the hardest for Africa.
The web of advantages created by the regulators, advantages that accrue to employee unions, government officials, and a handful of selected companies, is so grossly unfair and economically distorted that the backlash will be severe for any government bold enough to try and dismantle this powerful bureaucratic apparatus. It is an indicator of how important telecom is to the economies of Africa that such interests have been created in the first place; and an indicator of how much creative energy might be unlocked when these corrupt and hegemonic structures are finally dismantled. I conclude my pieces tomorrow with a focus on Africa – "Africa in Internet Governance and financing the Information Society" is next.
Reference: : This note draws from a study prepared for the WorldBank through InfoDev on "Leveraging New Technologies and Open Access Models: Options for Improving Backbone Access in Developing Countries (with a focus on sub-Saharan Africa", by a team consisting of Anders Comstedt, Russell Southwood and Eric Osiakwan, under the auspices of the consulting firm Spintrack
http://www.infodev.org and http://www.spintrack.com
It also draws from a paper written by Roland Alden on Public Finance of Telecommunication www.ralden.com/C1/EASSy/default.aspx
[The writer, Eric M.K Osiakwan, is executive secretary of AfrISPA (www.afrispa.org) Tel: + 233.21.258800 Fax: + 233.21.258811 Cell: + 233.244.386792 Handle: eosiakwan Snail Mail: Pmb 208, Accra-North Office: BusyInternet – 42 Ring Road Central, Accra-North Blog: http://afrispa.skybuilders.com/users/Eric/blog.html Slang: "Tomorrow Now" ]
Views expressed above are of the author, and may not coincide with the positions of the APC.


text:
Regardless Apple Batteries Replace Iphone Results Test Of Says To I11xfqwv5a
(KUTV) A special task for with the Utah Attorney General's Office said they have busted a substantial fake ID mill in West Valley City. {}The SECURE Task Force, which deals with felony cases surrounding undocumented immigrants in the State of Utah, has been working on a months-long investigation into Martin Ramirez-Villa, who lives at about 3900 S. 6100 W. {}Investigators say he has been selling fake drivers licenses, Social Security cards, and green cards for several months.{} Police arrested him Tuesday after setting up a sting with him. {}Later, SECURE executed a search warrant on the home he lives in with several other people. Investigators say they discovered computers and other materials used in the making of fake IDs. {}Police say undocumented immigrants primarily use the ID to get jobs at U.S. companies, but admit sometimes fake IDs are used in human smuggling and trafficking.Ramirez-Villa, who has previously been deported four times, is behind bars at the Salt Lake County Jail. He faces six counts of possession of forged writing.
_____Copyright 2014 Sinclair Broadcast Group

subset: commoncrawl


text:
Home > Suche > SHIBUYA SENDAGAYA
- Wohngemeinschaft
- Mehrbettzimmer
Foto & Video
Stimmen unserer Gaste
United states By Mason Sasser [05.01.2014]
The rooms and Building are well-maintained and always warm, so I was happy. I would stay here again.
United states By Devon H Pettigrew [03.10.2013]
SAKURA HOUSE at Sendagaya has been a really good experience for me. The location is very convenient, and you can get to many popular places such as Shinjuku, Shibuya and Ikebukero very quickly. There are always new people to meet from all over the world, all who've come to experience life in Japan.
Kyrgyz By Sabina Uzakova [10.09.2013]
Dear Sakura House, Greetings from Kyrgyzstan! I am back in my home country and I wanted to take this opportunity to email to thank all of you at Sakura House for the wonderful experience I had while staying in Sendagaya. It definitely impacted my entire experience in Japan in a positive manner. I made great many friends with other residents in my unit with whom I shared good times. Again, thank you so much for your professionalism, timely assistance with whatever issues I experienced as a resident and for the great stay! I have been suggesting Sakura House to friends and family; I also hope to stay at Sakura House again in the future. Sincerely, Sabina Uzakova
Kyrgyz By S.U [01.04.2013]
I just wanted to drop you a quick note of gratitude for the Yomoda-kai event. I joined other residents in cooking our ethnic meals at Sakura House's Ikebukuro location. It was my pleasure to meet the Sakura House staff and share meals with them. Thank you for your continuous efforts to make our stay here enriching and positive.
Spain By Pedro Díaz Durán [31.08.2011]
I have been living in Sendagaya Guest House for 1 month and a half and the experience has been really positive. Its best attribute is its location: you can go walking to Shibuya, Harajuku, Yoyogi, Shinjuku... You really have Tokio's city centre in the palm of your hand ;) If you prefer to use public transport, you have Kita-Sando station totally next to the house (less than one minute walking) and Yoyogi station is like 10 min. walking. From there, you can take Yamanote and other JR lines. It's a large house with many "units" and a lot of people in it, so I specially recommend it if you are into meeting people from many different countries and nationalities. Furthermore, the atmosphere is great: people are kind and it is so easy to make new friends. If you are a sociable person and you wanna meet new people, don't hesitate: Sendagaya 4Chome will be a great option!!!


text:
Analysis: Romney plays strong offense
Mitt Romney aggressively attacked President Obama's record on the economy, while a cooler Obama defended his health care bill and said Romney's tax proposals don't add up.
DENVER -- From the first question, Mitt Romney was on the attack.
So was Barack Obama.
But during their 90-minute encounter, the first of three presidential debates, the Democratic president sometimes seemed annoyed and defensive while his Republican challenger was energetic, focused and relentlessly on message. Romney ripped Obama's record on the economy with a tone calculated to convey more sorrow than anger.
He told the stories of individuals who have come up to him and his wife, Ann, at campaign events asking for help in getting a job or saving their home from foreclosure. "Yes, we can help," he said, looking straight into the camera, speaking to the millions of voters watching from their homes, not the hundreds in the University of Denver arena. "But it's going to take a different path, not the one we've been on."
STORY: Obama, Romney battle over economic visions
FACT CHECK: 2nd look at taxes, job gains
The presidential candidates lay out their plans for decreasing the rising deficit during the first presidential debate in Denver.
Obama hammered Romney for tax proposals he said didn't add up and economic policies he said would benefit the wealthy and damage the middle class. He defended the Affordable Care Act for its most popular provisions, including protecting those with pre-existing medical conditions. But he never raised that secretly recorded video in which Romney described 47% of Americans as "victims" who are dependent on the government and he never pressed Romney on his record as head of Bain Capital — both issues his campaign has pushed.
When it was over, it was clear which side was more eager to talk about the debate. Republican surrogates immediately flooded the media center. The Democratic ones didn't follow until several minutes later, and they left while the other side stayed to spin.
In a serious, rapid-fire discussion, the two men laid out fundamentally different visions for the role of government and the best way to lead the nation to prosperity.
"Free market and free enterprise are more effective in bringing down costs than anything," Romney said in the discussion of health care. "The private market and individual responsibility always works best."
Obama talked about the responsibilities of citizens to one another and described spending on education and other programs as an investment that in the end spurs growth and jobs. "The federal government can't do it all, but it can make a difference," he said in an exchange in which he extolled Abraham Lincoln.
There wasn't an embarrassing gaffe or a single sharp exchange that defined the evening, as there sometimes is with presidential debates.
INTERACTIVE: Who's up, down in the polls?
Romney again and again reminded voters of their economic woes and blamed Obama's policies for contribution to slow job growth, increasing poverty, home foreclosures. He questioned Obama's economic competence. "Going forward with the status quo is not going to cut it for the American people who are struggling today," Romney charged as Obama frowned.
And Obama again and again raised questions about whether Romney's numbers added up and if his policies would work, saying his tax proposals would explode the deficit and benefit the wealthy. When Romney disputed that, saying he wouldn't reduce the tax burden on the wealthy or approve tax cuts that increased the deficit, the president expressed incredulity.
"Now four weeks before the election, he is saying his big, bold plan is: Never mind," Obama said. He accused Romney of proposing to "double down" on economic policies that contributed to the economic meltdown that greeted him four years ago in the Oval Office.
In other words, Romney cast the election as a referendum on Obama's first term in office. Obama cast it as a choice between his plans and those of his opponent.
Much of the discussion was a festival for fact-checkers, a dizzying competition of numbers on tax policy, on the costs of the proposals each has made, on Romney's record as governor of Massachusetts and Obama's tenure as president.
Both men talked fast, tried to hold the floor and often ignored the entreaties of moderator Jim Lehrer to respond to his specific questions or to move on to the next topic. At times, they interrupted and talked over one another.
But Romney showed the value of the 19 debates he participated in during the GOP primaries and the extended practice sessions he has scheduled in recent weeks. He seemed relaxed and conversational, repeatedly referred to individuals he had met on the campaign trail, and gave no quarter when challenged by the president.
Obama, in contrast, hadn't debated since the last of his three encounters with John McCain four years ago. Not since then has he faced an opponent on a level playing field — the podium in front of him not even adorned with the presidential seal. He understandably didn't seem to relish having his record challenged in a direct way presidents rarely face.
After Obama vowed to reduce the federal budget deficit in his second term, Romney told him, "You've been president four years."
Bill Galston, an adviser to President Clinton and other Democrats and who is now at the Brookings Institution, said Romney "did himself considerable good" in the debate. "I would not be surprised to learn that a majority of the American people think he won it outright," Galston said in an e-mail. "I suspect that over the next week, the public opinion surveys will show a significant narrowing of the gap between President Obama and his re-energized challenger."
"He crushed it," Sen. John Thune, R-S.D., said of Romney. "Most people came away seeing a Mitt Romney they hadn't seen before."
Romney had never participated in a debate in which the audience was so large and the stakes so high.
Since the Democratic National Convention last month, polls show Obama has opened a narrow lead nationwide and a bigger one in such swing states as Ohio and New Hampshire. If Obama could be satisfied with a draw, Romney went into the race needing to shake things up.
The debate offered a more substantive discussion of the two candidates' proposals than much of the campaign to date. Even though the two sides effectively have been campaigning against one another for most of the year, the vast majority of ads have been negative and the points of attack often an ill-considered comment by the other guy.
Wednesday night, they explored the considerable differences between them on how they would spur growth and their views on the role of government in the 21st century. The length of the debate, a less rigid format than in previous elections and the focus on four broad topics were designed to encourage a substantive discussion.
The ideological divide between Obama and Romney on dominant questions of the day — this year, it's the economy and its slow climb out of recession — is as wide as it has been in any presidential election in more than a generation.
On that, at least, the two contenders seemed to agree.
"Four years ago, we were going through a major crisis," Obama said in his closing statement. "The question now is: How do we build on those strengths?"
Romney, who courtesy of a coin toss got the last word, said a second Obama term would lead to deeper economic travails. The two candidates offer "two very different paths," he said. "They lead in very different directions."


text:
Celebrating Life's Journey
The Celebrating Life's Journey arrangement guides describe the different memorial choices offered with cremation at your funeral home -- from full-service visitation funerals to memorial services or private family viewings.
While the focus is on presenting service choices, the arrangement guide also offers a simple approach to helping families select cremation caskets, urns and keepsakes.
Best of all, Aurora customizes these brochures with your itemized packaging and terminology so that arrangers can present your unique offerings to families consistently and effectively -- both pre-need and at-need. You can choose from an assortment of cover designs. The guides can even include your logo and address so your brand and identity is first and foremost.
Your customized arrangement guide is now available in tablet format, so you can take it anywhere. Ask your Aurora representative for more details on getting your guide digitized.
Next: Journey Selection Room Display


text:
Welcome to the CRG Discussion Forum!Forum registration problems: Make sure you enter your email correctly and you check your spam box first. *Then* email KurtS2@gmail for help.Classified ads are not allowed on the forum.
that dash area doesn't look quite right, maybe modified? Pretty interesting to see someone move the battery tray to the firewall. I have seen it relocated to the trunk, but first time seeing someone relocate to the firewall.
Interesting...Looks more like a 67 Camaro/Firebird dash panel. Needs some forensic work done to determine what year it is. TT indicates a very early built 69 and if it is, what happened to the original dash panel? Do we have a mystery on our hands? I'm intrigued.
The switches correspond more to a 69 firebird dash, but the 4 hole assembly in the middle doesn't ... is that for gauges, or AC?
Fahad, could you take some more close up or detailed pictures of the dash and the VIN (serial) number?
Quote from: ko-lek-tor on March 22, 2014, 04:49:45 AMFahad, could you take some more close up or detailed pictures of the dash and the VIN (serial) number?Unfortunately the VIN (serial) number is removed with the original dash, but I got it from the vehicle registration paper.
firebird, and then quarters and tail panel swapped out? Possibly, or someone swapped out the dash.Hey Fahad how about a pic of the Vin stamp on the top of the cowl? or about where your battery tray is on the firewall?


text:
Two plays really jumped out at me in the 1st quarter:
Here Ngata blows up the double and forces #70 to tackle him. Unfortunately Suggs was offside but look at the raw power.
Cody tosses Kalil (pro bowl center) aside with one arm and swallows Deangelo. Holy crap.
The Ravens have the luxury of allowing one of the best NTs in the league to rest and not lose a whole lot. If they can keep Cody and Ngata fresh opponents are going to hate the 4th quarter.


text:
Students from the Miami Ad School have put together an awesome video that demonstrates how New York could turn its subway system into a library for e-books, reports Mashable. It's only a concept right now, but they're hoping it'll get enough attention to become a reality.
The students decided to use turn the lack of internet access underground to their advantage: They propose to install near-field communication devices that will offer subway passengers 10 pages of well-known books that they can download onto their phones.
If they like what they're reading, the last page would prompt them to borrow the entire book for free from the public library.
It's a pipe dream for now, but the technology exists today:


text:
Bloody Bloody Good Theater
After all this time, I finally saw Bloody Bloody Andrew Jackson again in its current run at the Public Theater. I wanted to see it again so badly I even paid for tickets--Paid. For. Tickets. Believe me, if you're a critic, that's a big deal. If you're a Philly critic, taking money away from a Philly theater and spending it, you know, *there*, it's an even bigger deal--and here are a few reasons why:
- I wanted to see if I thought it had a shot at a Broadway run, because sooner or later, if Broadway ignores Les Freres Corbusier, it will do so at its own peril. I just wasn't sure if this was the show to take them there.
- I wanted to see if this musical that resonated so deeply during W's tenure would have the same cathartic punch under Obama.
- I wanted to see if it lived up to my own hype. After all, I've devoted a lot of blog space to one show I saw almost three years ago. (Below: BBAJ, circa 2008)
- No, I do not think this is the show that will take the boys and their swaggering Jackson, Ben Walker, to Broadway. But it's a lot of fun, and Director/playwright Alex Timbers is a veritable Wallenda when it comes to walking the line between wide-eyed and winking. BBAJ itself rests between Schoolhouse Rock and Drunk History, and doesn't even make you pick a side; enjoy them both, AND walk away with a lesson. That's value for your entertainment dollar. Composer Michael Friedman's musical moments--because they're not whole songs, although they are insanely catchy verses--burst furiously through the script much like the emotions of a bratty adolescent, which is appropriate, considering Timbers' Jackson is portrayed as a wrist-cutting emo rock star. But it's still too messy, and though scenes such as the one in which an actress snarls out a tune about "10 Little Indians" who meet an untimely end, are better integrated this time (at L.A.'s Kirk Douglas Theatre, the song stopped the show dead; here, it's set against a parade of soon-to-be-broken treaties), I just don't think it can--or should--clean up all that well. Oskar Eustis did the right thing by bringing it back for a mainstage run, and that's a pretty great legacy, well deserved. It's not the game-changer I thought it could be, but I'll tell you this much, if I weren't a theater critic, I'd gladly be an investor in whatever project LFC take on next, because I have no doubt a game-changer will emerge from BBAJ's raw material and LFC's momentum.
- No, it's not the same under Obama, although you can't fault Timbers for trying. Imagine, if you can bring yourself to do so, that it's early 2008, George W. Bush is deep into his second term as president, post-Katrina FEMA trailers are exhaling formaldehyde, the Iraq war is still racking up American casualties, and onto the stage struts Andrew Jackson, whining, drinking, indulging his expansionist fantasies, ignoring the collateral damage, singing populism's praises. The parallels are as powerful as your frustrations, and you are grateful to see them both portrayed onstage in this way--those who don't know history are condemned to repeat it, etc. Now it's 2010, and though yes, Obama was swept into the presidency on a wave of popular support, his election was a reaction to Bush's populism, just as Bush's populism was a reaction to Clinton's perceived chardonnay-drinking, Volvo-driving elitism (remember that?). It's just not the same, and aiming Jackson at Obama only serves to untie the show from its moorings. I get it, the people's desire for a hero to swoop in, make decisions and save the country is timeless. But BBAJ's genius lay in the way it equated the mass appeal of bratty, insolent, obdurate Jackson with, well, that of bratty, insolent, obdurate Bush. Now, as a parallel to the Obama presidency, it sends a disappointing mixed message--disappointing especially because its original message was so forceful and dead on (AJ would have wanted it that way!), while the Botox applied to this version seems more like a hedged bet. Maybe if we ended up with a McCain/Palin regime and the show stuck to its roots, it would have blown up Broadway. But honestly, I'm glad we didn't have to find out.
April 4, 2010 8:25 PM | Permalink
Everything I Know I Learned from Musicals
Theater Alliance of Greater Philadelphia
What's Good/What Blows in NY Theatre


text:
Investing in Your Community
Becoming a Financial Beginnings affiliate begins with a passion for empowering youth and adults to take control of their financial futures. Combining this passion with business sense, local community support, and a staff and board diverse in their abilities and expertise is the key to a successful affiliate.
Affiliates receive valuable support from Financial Beginnings USA while retaining the autonomy and discretion to modify programming and operations to best suit the needs of their specific communities. Financial Beginnings USA supports affiliates with its full suite of programs, initial matching funds to get started, and customized training in fundraising, board development, program evaluation, and much more.
Before proceeding, be sure to visit this page which addresses some of our more frequently asked questions.
Register to attend an affiliate interest call to learn more about:
- what a Financial Beginnings affiliate launch entails
- the stages of affiliate development
- the roles of individuals involved
- the importance of establishing a founding affiliate team
- And much more!


text:
New California (USA) System for Redacting Information on Birth and Death Records
The new system requires anyone requesting an informational copy from the state/local /county registrar, that the registrar request the redacted copy from the state California Department of Public Health, which is the responsible agency for the system. The certificate is then automatically redacted for the specific data (Social Security number, any signatures, or sensitive health information) contained in the certificate and sent to the local/county registrar for printing and submitting to the requester.
The purpose of VRIRSA is a single state-wide system for accessing redacted records. At present, the VRIRSA system fulfills public requests for informational copies of birth certificates from 1985 to present, and for death certificates from 1996 forward. As additional birth and death records are converted to computerized images over the next several years, more informational copy requests will be handled by VRIRSA. The state is in the process of digitizing all back records and will announce the release of the records as soon as they are available in VRIRSA. The records are being processed in yearly batches and will be released on flow basis.
From theFAQs listed on the site, it says manual redaction is not required for records that predate the range of records currently in VRIRSA. However, informational copies must still contain the legend "INFORMATIONAL, NOT AVALID DOCUMENT TO ESTABLISH IDENTITY."
If you are interested in reading more on VRIRSA, go to:
Jan Meisels Allen
Director, IAJGS and
Chairperson, Public Records Access Monitoring Committee
4 comments:
Identity thieves utilize various strategies to victimize you. Stolen wallets and physical documents accounted for 43% of all identity theft.ReplyDelete
- AnonymousJuly 6, 2009 at 7:15 PM
Document Redaction is becoming ever more important with organizations having to publicly release information whilst at the same time being able to keep sensitive information private. Being able to release documents with certainty that information marked for redaction is permanently removed has become paramount.ReplyDelete
There have been cases where supposedly redacted documents have been made public and sensitive information has been extracted from the documents. Redaction errors are usually attributed to insufficient methods and the lack of information provided to users in regard to document security.
There are a number of specifically designed software solutions available which make redacting documents a streamlined process and eliminate common mistakes associated with out-dated redaction methods. Once such product is RapidRedact, the website (www.rapidredact.com) provides a plethora of information about redaction and a software demonstration.
- Andrea EllerAugust 10, 2009 at 5:29 PM
Hello. I'm a new member here thinking that maybe someone here can help. The setting of the last and most important section of a book I'm writing for 11-16 year-olds is Elisavetgrad in Belarus (in the Ukraine) on the day of the pogrom in May of 1881. I have myriad information on shtetlach life, Russia, history, the Pale, and even the names of a number families who lived there; I lack one thing: At least one eye-witness account of the what happened to whom and when during the Elisavetgrad pogrom. As I'd like to finish the project before I start teaching in the fall, a speedy reply would be very helpful. I can be contacted at firstname.lastname@example.com . Thank you. Andrea EllerReplyDelete
- Andrea EllerAugust 10, 2009 at 5:35 PM
P.S. I forgot to mention the names of the families in Elisavetgrad, names I got from this website:ReplyDelete
BRODSKY (family of Isaac and Malka [BELACHOVSKY]), DASHEVSKY , DUBINSKY, FULNEROW/ FELZEROW , GORDON, HOROWITZ/GUREVITCH, NEUMANN , RUDISH , GRECHEVSKY, GRINBERG/ GREENBERG, POBERJESKY/ POBERESKY , RUBEL , SIEBELEWSKY, TORGAN Thanks. Andrea Eller, (email@example.com)


text:
(Reuters) - The United States marked Veterans Day on Monday with ceremonies across the nation, from small-town parades honoring those who served in the armed forces to the president marking the day at Arlington National Cemetery.
President Barack Obama laid a wreath at the Tomb of the Unknowns in a ceremony in which he called veterans "those who fought for our freedom and stood sentry for our security."
"On this hillside of solemn remembrance, in veterans' halls and in proud parades across America, we join as one people to honor a debt we can never fully repay," Obama said.
"In the life of our nation across every generation, there are those who stand apart," he said. "They step up, they raise their hands, they take that oath, they put on the uniform and they put their lives on the line."
The president singled out World War Two U.S. Army veteran Richard Overton, who at 107 is believed to be the nation's oldest surviving veteran. Obama and Vice President Joe Biden met with Overton, of East Austin, Texas, during breakfast, the White House said in a statement.
At Arlington, Overton stood and smiled as the audience at the ceremony applauded.
"He was there at Pearl Harbor when the battleships were still smoldering. He was there at Okinawa. He was there at Iwo Jima where he said, 'I only got out of there by the grace of God,'" the president said.
In New York City, a parade with some 20,000 marchers was headed by retired Army General Ann Dunwoody, the nation's first female four-star general.
Hundreds of veterans were expected to gather at the Intrepid Sea, Air & Space Museum in New York, on board the U.S.S. Intrepid, for an afternoon ceremony to feature the laying of two wreaths in the Hudson River.
Across the country, a parade honoring veterans was held in Oak Bluffs, Massachusetts, on the island of Martha's Vineyard, and others were planned in Jacksonville, Florida; Fort Worth, Texas; and San Diego, California.
Veterans in Keene, New Hampshire were feted with an honorary breakfast, those in Telluride, Colorado were being given an honorary dinner and a lighted evening parade was scheduled in Douglasville, Georgia.
In Vernal Utah, the American Legion's Women's Auxiliary was planning to donate a gift basket with handmade quilts and other goods to the first baby born on or closest to Veterans Day at the local hospital.
The purpose is to raise awareness of Veterans Day, organizers said.
Editing by Diane Craft


text:
Feminist News
Need for Survival Fuels Sex Work, High Birth Rate Kills Mothers in Afghanistan
Women and young girls are being pushed to commercial sex work due to high food prices and widespread unemployment in Afghanistan. High fertility rates, poor health services, and a high maternal mortality rate compound these issues.
Sex work is considered to be a serious crime in Afghanistan, where offenders can face the death penalty or lengthy prison sentences for engaging in sex outside of marriage. Fariba Majid, Director of the Balkh Province Women's Affairs Department, calls sex work "an abhorrent deed and an appalling crime", according to Irin News. However, many sex workers do not have other means to survive or feed their families.
Afghan women face high fertility rates and one of the highest maternal mortality rates in the world. Only 14% of women receive skilled birthing attention during childbirth. Access to health services is limited by a lack of awareness, economic barriers, and men's willingness to take women to health centers. One of six Afghan women will die from complications during pregnancy or childbirth; the average woman will have six or seven children.
Parental responsibility is often tied to sex work in Afghanistan. An Afghan prostitute, Najiba, told Irin News, "I am a widow and I have to feed my five children. I am illiterate and no one will give me a job. I hate to be a prostitute but if I stop doing this job my children will starve to death."
Media Resources: Irin News 7/14/08, 7/16/08; Feminist Majority Foundation


text:
With Code Contracts, Microsoft delivers its own flavor of Design by Contract for the .NET Framework. But wait, what is this thing sometimes called Contract-First Development? How will it change the way you develop software and write your unit tests? And first and foremost, how do you use Code Contracts efficiently? In this article, I will introduce Design
by Contract and Code Contracts, as well as give you a sneak preview of Pex-Microsoft's new test-suite generator. Along the way, I will show you how to add contracts to ADO.NET entities and some interesting coding strategies, good practices, and pitfalls you may encounter while making a deal with your code.
A little bit more than a year ago, Microsoft deployed DevLabs (http://msdn.microsoft.com/devlabs), a new MSDN portal. DevLabs can be seen as a spinoff of Microsoft Research (http://research.microsoft.com), which is dedicated to, as its name implies, research in computer science. While the latter mostly targets academics, scientists, and research groups, the DevLabs audience is the developer community who lives and breathes Microsoft technologies.
You'll find at DevLabs some of the research projects, like Code Contracts and Pex, which are most likely to end up as released products. From there, you can download trials and experiment with new .NET features before they are released, and have a word to say about what you try: the portal is as much about being a front-end for innovations as about collaboration and discussion. Active forums let you give your feedback directly to Microsoft, discuss things you like, argue about things you don't, request cleaner features, and report bugs.
Note that I used Code Contracts version 1.2.20518.12 and Pex version 0.15.40714.1 for this article and that its content reflects the design, features, and state of these products as of July 2009. My code samples require the AdventureWorksLT2008 (http://www.codeplex.com/MSFTDBProdSamples) database; they are in C#, but be assured that Code Contracts work with any .NET language.
Now that you know where to get all these nice tools, let's start talking about contracts and what they are meant for.
Introduction to Contracts
Whenever you create a class, interface, method, or property, you have a target goal in mind; a purpose that must be fulfilled by that specific piece of code. Sometimes, if you're careless, you'll just throw out the implementation and expect it to be used in a certain way, uncaring of what would happen if someone else tries to call it in an unexpectedly weird fashion. If you're wiser, you may document it using XML comments and perform some sort of validation or provide unit tests to make sure your code behaves and is used as you expect it. In fact, at the very least, you most certainly always check your method arguments and validate your object states as shown in Listing 1, right?
While these ad-hoc validations may help alleviate your worries, wouldn't it be better if you could just assume that you can code against your objects, knowing for certain that whenever you use them they answer to a predetermined set of rules? And that if for any reason they break those rules, there are safeguards preventing them from being handled in ways they shouldn't?
These are feats that the formalism of Design by Contract helps you achieve.
Design by Contract
Design by Contract (DbC) is a software engineering methodology which states that collaboration between two elements of a system must be managed by a set of clauses, which form a contract. The parties involved in such a contract are referred to as the supplier and the client. As a service provider, the supplier agrees to deliver some benefits to the client and must ensure that they will be consistent with what the latter expects. On the other side, the client also agrees to abide by a certain set of obligations, or requirements, so that the supplier can answer its request.
To help enforce a contract, which is always specified by the supplier, Design by Contract defines three sets of clauses known as:
- Preconditions
- Postconditions
- Invariants
A precondition specifies the obligations of the client, which apply on a method or property to validate its arguments or the required object states for its execution. A postcondition defines the benefits the supplier delivers to the client, and also applies to a method or property to validate its return values or the expected resulting object states. An invariant is a clause that must hold true at all times, for the lifetime of an instance. Whenever one of these clauses is violated, Design by Contract prescribes that the execution of the code should automatically result in an error.
By analogy with the Listing 1 code sample, if a service offers to send a consumer's orders by e-mail, the client of the service has an obligation to provide the service with a valid consumer instance (method precondition); the e-mail service itself must make sure it contains an initialized SMTP server name at all times (class invariant). The service contract may also require the availability of a network (method precondition). When all these conditions are met, the service supplier then ensures the order's delivery, which is the benefit the client expects (method postcondition). If one of these clauses fails, an exception shall be thrown.
Because of the complexity involved in a software program, you cannot express all of its parts as a series of contracts. Going back to my example, expressing the success of an e-mail delivery as a postcondition could be difficult. This is why contracts are also sometimes referred to as partial software specifications.
Besides describing the contract clauses, Design by Contract provides rules for contract inheritance and guidelines for error handling. It also stipulates that you can use contracts for software documentation and testing. As such, it promotes Contract-First Development, which implies that the first thing you should do when you write a new code element is to write its contract's clauses-I'll come back to this statement later, when I talk about Pex.
I'll show you now how Microsoft implemented these principles in DevLabs's Code Contracts.
Code Contracts Basics
Since Code Contracts comes with an extensive user manual, which is also available as a separate download at DevLabs, I won't cover every single feature it has to offer. Instead, I will highlight the basics required for this article and move on quickly to talk about how to strategically integrate contracts into an application, here using ADO.NET entities.
The Code Contracts project is an offshoot of Spec# (http://research.microsoft.com/en-us/projects/specsharp). Spec# is a C# extension language that supports contract constructs directly in the programming language. In contrast, you write Code Contracts statements using classes from the Code Contracts Library, which is language agnostic. While not entirely deprecated, Spec# is being moved to CodePlex as an open-source research project (http://specsharp.codeplex.com); how much and in which direction it will continue to evolve is unknown.
You will find the classes of the Code Contracts Library in the System.Diagnostics.Contracts namespace.
You will find the classes of the Code Contracts Library in the System.Diagnostics.Contracts namespace. These classes will be shipped directly within mscorlib.dll in .NET 4.0, but if you are using Visual Studio 2008 or targeting .NET 3.5, you'll need to manually add a reference to the Microsoft.Contracts Library assembly in order to use them.
The main class of the Code Contracts Library is the Contract class. As you may expect, Contract offers methods to validate preconditions, postconditions, and invariants. It also extends that support to assertions and assumptions, which I will explain very shortly. All these methods are static and accept the result of a Boolean expression as input.
You specify preconditions using the Requires set of methods. They must be the first statements of a method body and can enforce validation of arguments, properties, fields, or object states:
customer != null, "customer");
Contract.Requires(customer.CustomerID > 0,
"Customer must be registered.");
Although postcondition statements validate the results of a method or other state upon method return, they must appear immediately after the preconditions. I will cover how they kick in at the end of a method execution when I talk about the Contract Rewriter and the Static Contract Verifier. You declare them using the Ensures method:
Contract.Result<bool>() == HasErrors);
Note the call to Contract.Result<bool>(). This is how you refer to your method return value and how you use it in postcondition expressions. The code snippet simply states that it expects the return value of a method to be a bool whose value equals that of the HasErrors property.
The Requires and Ensures methods come with a few other special constructs; I encourage you to read the Code Contracts documentation to learn more about them.
Invariant statements are a bit different; you need to put them in a dedicated method and flag it with the ContractInvariantMethod attribute. The method name can be anything, but ObjectInvariant is the proposed standard for it:
protected void ObjectInvariant()
"SMTP server name not initialized.");
In Design by Contract, invariants are meant to be true at all times. Currently, Code Contracts minimizes invariant evaluations so that they are taken into account only when you invoke a public method (that includes constructors) or a property setter. Otherwise, they are ignored. This is a feature you should be aware of if you choose to add invariants to your classes.
The Code Contracts Library also introduces support for assertions with the Assert method. You can use this method to validate a condition that should be true at a specific place in your code, for instance if you couldn't or chose not to check it with the Requires or Ensures methods:
"Network is not available.");
Alongside assertions come assumptions. They work like assertions, but you can declare them to help the Static Contract Verifier understand your code (more on this tool soon). The method to use is Assume:
"Network is not available.");
At your option, when a contract clause fails, either an assertion occurs or a ContractException is thrown. ContractException gets generated in your assembly as private, and you must handle the more generic type Exception if you want to catch contract violations. Fortunately, you can customize the run-time contract error-handling behavior, as I will show later. Here is a sample exception message for a failed invariant:
Invariant failed:
SMTP server name not initialized.
Listing 2 presents a contract version of the common validations presented in Listing 1. Code Contracts also has support for using quantifiers over IEnumerable<> objects, for declaring inheritable contracts on interfaces and abstract classes, and for a few other features as well.
Behind the Scenes
OK, I said I would speedily get to the Entity Framework examples. I lied. I must first explain how Code Contracts works.
The Code Contracts Library is but one of the tools you need in order to use contracts in .NET. The library in itself does nothing; if you try to execute code containing contract statements, either nothing will happen or you'll get assertion failures. This is because the library simply prepares your code for further manipulations by the other Code Contracts tools.
Alongside the Code Contracts Library come a Contract Rewriter, whose job is to inject the run-time contract checks into your assembly, and a Static Contract Verifier, which analyzes your assembly and can detect contract violations at compile time.
Although you can run these tools individually on .NET assemblies, Microsoft has also integrated them in the build process of Visual Studio, where you'll discover a new property pane for Code Contracts settings in your project properties, as shown in Figure 1. You must enable either Runtime Checking, Static Checking, or both in order to have your contracts kick-in.
Runtime Checking
The Contract Rewriter (ccrewrite.exe), also known as the Binary Rewriter, activates runtime checking by taking your compiled assembly and rewriting its MSIL so that the contracts stipulated by your clauses get evaluated at run time. The injected MSIL is not limited to method calls and contains the equivalent of full program statements.
The best way to understand how, and in which order, an application really evaluates contract clauses is to have a good look at a rewritten method. By using the free version of Red Gate .NET Reflector (http://www.red-gate.com/products/reflector) and the SendOrdersWithContract method introduced in Listing 2, Listing 3 illustrates what becomes of the code after the Contract Rewriter tampers with the MSIL. The reflection output is not entirely valid C#, but that will do for this demonstration. I don't show the rewritten ObjectInvariant method for conciseness.
As you can see, the Contract Rewriter generated quite a lot of code to resolve the original contract clauses. Note the new position of the postcondition section and the call to the ObjectInvariant method that the Contract Rewriter inserted near the end. Having these statements there makes more sense than when they were at the beginning of the method or in a separate method.
Runtime checking comes with a few options that I will not cover here. However, there's one thing I haven't mentioned about the contract clauses that is worth highlighting: Code Contracts flags the Requires, Ensures, Invariant, Assert, and Assume methods with the Conditional attribute and requires specific conditional compilation symbols for the Contract Rewriter to activate them. Basically, you can disable contracts entirely, enable preconditions only, enable preconditions and postconditions, or even include invariants, assertions, and assumptions. You do this customization by changing the value of the drop-down list you see displaying Full in Figure 1. The user manual has all the details about the run-time checking levels and their associated contract clauses.
Static Checking
Static checking is very different than runtime checking: you don't even need to run your application to validate your contracts!
When you enable static checking, the Static Contract Verifier (cccheck.exe), also known as the Static Checker, performs contract coverage of your assembly, a task akin to code coverage. The Static Contract Verifier takes your contract definitions, analyzes the MSIL, and examines the numerous execution paths, trying to prove that it can successfully validate all the contracts you have defined. When it detects what it thinks is a contract violation, it will alert you in Visual Studio Error List and Output windows.
Doing static checking can be quite an endeavor. The Static Contract Verifier is much more sensitive than the Contract Rewriter. Also, since it doesn't run your application, it can't always understand what your code is doing. You must then help it by using Assume clauses to tell it that yes, a given condition is verified.
I have found that static checking is sometimes incapable of proving contracts accepted by runtime checking. It is often because the Contract Rewriter accepts statements using methods and properties with undetermined or partial contract specifications, while the Static Contract Verifier doesn't. In the end, instead of downgrading my contract clauses to satisfy static checking or filling my code with assumptions, I applied the following attribute to my assemblies:
[assembly: ContractVerification(false)]
Using the ContractVerification attribute with a value of false indicated to the Static Contract Verifier that static checking is globally disabled. After that, I used the same attribute with a value of true on specific methods for which I really want static checking enabled. That greatly reduced my headaches.
The following output shows the results of running static checking on an assembly containing, among others, the four methods presented in Listing 4:
Run static contract analysis.
Suggested precondition:
Contract.Requires(s.Length > 10);
Validated: 33,3%
Total methods analyzed 3
Total time 3.917sec. 1305ms/method
ensures is false:
Expected static checking postcondition failure.
+ location related to previous warning
assert unproven
Checked 3 assertions: 1 correct 1 unknown 1 false
Static contract analysis done.
By looking at the results, you can see that the Static Contract Verifier only analyzed three methods. This is because I did not mark the IgnoredRequires method with the ContractVerification attribute, so the Static Contract Verifier ignored it, like other unmarked methods in the assembly. IgnoredRequires would otherwise have been unproven because of the Requires check in the DoChecking method. The postcondition in the InvalidEnsures method was proven to be always false. Also, because there is no Requires contract on the length of the string parameter in DoChecking, the assertion there was unproven. The last method, ValidEnsures, was proven correct because I used an assumption to inform the Static Contract Verifier that it can consider that the condition in the postcondition is always satisfied.
That's a small example to start with, but it gives you an idea of what static checking can do. For the remainder of the article, I will take full advantage of runtime checking and ignore static checking.
Add Contracts to Your Entities
As promised at last, I will now explain how to add contracts to model-generated ADO.NET entities. The goals of this demonstration are not only to show you how to define real-world contracts for the Entity Framework, but also to present advanced integration techniques and strategies made possible by the design of Code Contracts. You will see how powerful contract injection can get and why Code Contracts is not just shipped as a simple class library.
You can even add contracts to third-party assemblies.
For the purpose of this exercise, I will add contracts to Customer, Address, and Product entities generated from the AdventureWorksLT2008 database. As you'll discover, you have some options before you to do that. The choice of the technique to use depends on the type of contract you need and of the availability of the entities source code. As I'll demonstrate, you can even add contracts to third-party assemblies, within certain limits. Figure 2 shows the related table schemas of the entities, which I'll use as a reference to define matching contract clauses.
The Visual Studio companion solution for this article consists of a few C# projects, and is presented in Figure 3. The Client project is a console application with full runtime checking enabled. You can run it to see the numerous samples presented here in action. I will cover the other projects in the next sections.
Before starting, please note that you can apply the strategies I'll be unveiling to any type of project. They are not restricted to ADO.NET entities or the Entity Framework.
Code Contracts Conditions
I've been enforcing preconditions in my everyday programming for years, either with homemade class libraries or existing frameworks, such as the Enterprise Library Validation Application Block (VAB) (http://entlib.codeplex.com). Some time ago, as part of the Enterprise Library Contrib project (http://entlibcontrib.codeplex.com), I provided an ArgumentValidation class, which enables you to validate method arguments using the VAB validators without the burden of the Policy Injection Application Block Validation Call Handler:
"arrayIndex", arrayIndex,
new RangeValidator(0, 9));
What I like about the VAB validators is that they look nice; just by seeing their names you understand what your code is doing. Besides that, they centralize comparison logic in one single unit of work.
With the Code Contracts Library, the previous statement would look like this:
Contract.Requires(arrayIndex >= 0 &&
arrayIndex <= 9);
One of the first things I thought of when I started using Code Contracts was: Wouldn't it be cool if the Code Contracts Library had something to make my conditions look as nice as the VAB validators? What about some helpers to make the code more readable?
So, here come the Code Contracts Conditions. They're a small bunch of extension methods I created to provide centralized comparison logic for the contract clauses. The Conditions are available as part of the Code Contracts Extensions project on CodePlex (http://ccextensions.codeplex.com). Each of these methods is flagged with the Pure attribute, a Code Contracts attribute which indicates that the callee has no visible side-effect from the caller point of view:
public static bool IsInRange<T>(
this T value, T lowerBound, T upperBound)
where T : IComparable<T>
return value.CompareTo(lowerBound) >= 0 &&
value.CompareTo(upperBound) <= 0;
Because extension methods are static, you can invoke them as extensions or call them directly:
Contract.Requires(arrayIndex.IsInRange(0, 9));
Condition.IsInRange(arrayIndex, 0, 9));
Feel free to visit CodePlex and propose your own extensions. The followings are some more examples of the Conditions in action:
(int number) => number.IsGreaterThan(0)));
I don't recommend using the Code Contracts Conditions with static checking. Although you can have the Static Contract Verifier understand some of the Conditions by providing the Ensures method to describe the return values, in general it lacks, for now, the ability to evaluate methods with undeterminable or complex contracts (such as Regex::IsMatch). Again, I choose to take full advantage of runtime checking versus static checking.
Since I'll be using the Code Contracts Conditions while adding contract clauses to the ADO.NET entities, I included the CodeContractsExtensions project directly in the Visual Studio companion solution for the article, where it's referenced by those of the other projects that need it.
Interface Preconditions and Postconditions
The C# project Entities in Figure 3 contains an ADO.NET Entity Data Model which was used to generate the Customer and Address entities in the EntitiesModel.Designer.cs file:
public partial class Customer : EntityObject //...
public partial class Address : EntityObject //...
I'll start with the Customer entity. It comes with a bunch of properties like FirstName, LastName, Phone, and others that match the Customer table schema introduced in Figure 2. What you want to do is to add contracts to these properties and make sure that the value for each property behaves accordingly to the schema.
You could directly edit the generated code and insert your clauses there, but this is a very bad practice, as any regeneration of the Customer class from the model would erase all your changes. There's a better way: Since Customer is a partial class, you can extend it in a separate file.
But how can you extend properties in one file if the code of these properties is in another file? The magic comes from the Contract Rewriter. Remember that it injects contracts in your assemblies after compilation. I also mentioned earlier that contracts can be inherited. All you have to do is to figure out a way to tell the Contract Rewriter that your Customer properties inherit the contracts you want them to enforce.
The solution turns out to be pretty simple: you'll add to the Customer class an interface whose signature matches that of the Customer properties. Figure 4 demonstrates that by using the refactoring features of Visual Studio, you can select the Customer class and, thru the context menu, extract its interface. This way, you can create the ICustomer interface.
After that, you augment ICustomer with a special Code Contracts attribute, ContractClass. Then define a dedicated contract class for ICustomer, ICustomerContract, which you also decorate with an attribute, ContractClassFor. What is left to do is to have the ICustomerContract class inherit from the ICustomer interface and implement the interface explicitly. It is in that implementation that you can define your contracts for the ICustomer interface. Note that interface contracts are always provided by a concrete class.
Listing 5 presents the ICustomer interface, the ICustomerContract class, and a sample contract for the Phone property. As you can see, you can specify contracts to match the database schema requirements as well as strengthen them-here by refusing a null value and adding a regular expression that must be matched by the phone number.
To make the Customer class inherit your contracts, you simply indicate that it implements the ICustomer interface by using a separate Customer.cs file:
public partial class Customer : ICustomer
When the Contract Rewriter runs over the Entities assembly, it will automatically inject the contracts from the ICustomer interface into Customer's properties. Since the rewriting occurs at the assembly level, your entity generated-code is left untouched.
As an example of the benefits you get from using Code Contracts, any attempt to make an invalid Phone assignment will now immediately trigger a contract failure:
Customer customer = new Customer();
customer.Phone = "0123xyz";
/* Precondition failed: value.IsMatch(@"^(\d{3}-
\d{3}-?\d{4}|1 \(\d{2}\) \d{3} \d{3}-\d{4})$") */
LINQ to Entities
If you use Linq to Entities, you can benefit from having contracts in place. However, keep in mind that you must manipulate the strongly typed entities containing the contract clauses:
Entities entities = new Entities();
IQueryable<Customer> customers =
(from customer
in entities.Customer
select customer).Take(5);
foreach (Customer customer in customers)
Console.WriteLine("{0}: {1}",
customer.FirstName, customer.EmailAddress);
This means that if you create anonymous types, you must first convert them to full-blown entities to take advantage of your contracts, as shown in Listing 6. Remember that only the corresponding fields in the strongly typed entities are initialized. If you try to access uninitialized ones, you may trigger contract failures depending of the nature of your contract clauses.
Third-party Contract Reference Assembly
Previously, you altered the Customer partial class. Sometimes, you may not have access to your entity's source code. One very cool feature of Code Contracts is that you can create contracts for assemblies even if you don't have their source code.
The ThirdPartyEntities project of the companion solution contains an ADO.NET Entity Model that defines a Product entity. For the purpose of this demonstration, pretend that the project comes from a third party and that you can't modify it. Instead of using a project reference when you need it, you'll use a direct assembly reference.
So, how can you add contracts to the Product entity contained in the ThirdPartyEntities project without modifying it? The first thing to do is to create another project whose output assembly bears the same name (that is, ThirdPartyEntities). This is what I've done with the ThirdPartyEntities.Contracts project. Then, in its Code Contracts property pane (Figure 1), you must check the Build a Contract Reference Assembly option.
After that, you define the same Product class in the ThirdPartyEntities.Contracts project. The difference is that the implementation of the class will only contain the contract clauses you want to apply to the Product class. Listing 7 shows what this skinny Product class looks like.
When you compile the ThirdPartyEntities.Contracts project, it will create the ThirdPartyEntities.dll and ThirdPartyEntities.Contracts.dll assemblies. This latter assembly contains the contracts you have defined for the Product entity. To use it in the Client application, don't reference the assembly; instead, go to the Client project's Code Contracts property pane (Figure 1) and add the path to ThirdPartyEntities.Contracts.dll in the LibPaths box:
To make your Requires method kick-in in the Client project, you also must check the Call-site Requires Checking option.
When you build the Client project, the Contract Rewriter will pick up ThirdPartyEntities.Contracts and do its magic with the Product entity. But be warned! There are important differences between using a contract reference assembly in that fashion and implementing contracts directly in your entities. First, the Contract Rewriter creates proxies for the Product methods and properties; it doesn't inject the contracts into the Product class itself. Calls from the Client application to the Product entity will use these proxies, which contain the contracts, when calling the original methods and properties. Also, keep in mind that since the third-party assembly isn't instrumented with contracts, any internal calls it makes won't benefit from your contracts.
- Only the Requires method is enforced by proxies.
- If you derive a type from a third-party assembly class or interface, it will inherit contracts from a contract-reference assembly only for methods and properties it overrides.
- Invariants are not inherited.
- On the bright side, if you look again at Listing 7, you'll see that I've done something that I couldn't have done by using an interface while working with the Customer entity: provide a contract for a static method.
In the end, building a contract reference assembly is powerful, but it has its limitations. If you are curious about this feature, explore the standard Microsoft .NET contract assemblies that ship with Code Contracts; this is the implicit way you use them.
Advanced Concepts
Now I'll introduce advanced programming techniques. You don't have to master these concepts in order to use Code Contracts, but if you want to take them to another level and improve your software development skills, don't overlook this section.
Object Validation
As a supplier, the Customer entity now implements contracts for its properties and any client will benefits from and be forced to abide by the rules you have set. Now what? Should you be content with that? Not yet. How can a client of the Customer entity knows that it can safely start using an instance of the class? All you have provided are safeguards against misuses of the entity properties. Because an ADO.NET entity must supply a parameterless constructor, nothing prevents an instance of Customer to be created and passed around without having its properties properly initialized. Sure, a contract violation will be detected at some point, but not necessarily at the best of times. Now that you have contracts in place, however, you can do better: you can provide an implicit overall contract stating that a Customer instance is valid as a whole.
The idea is not a new one. Again, I bring an Enterprise Library concept to Code Contracts. The Validation Application Block comes with an ObjectValidator whose purpose is to validate the instance of a class based on validation attributes applied to its properties or fields. If all specified validations are satisfied, an object is said to be valid. Now, you don't need the VAB anymore, you've got contracts!
You could think first of using invariants to make sure that an object is in a valid state, but since invariants apply at all times, even on parameterless constructors, they're not the best fit for a solution. Also, they don't apply on property getters. Furthermore, you wouldn't want to specify invariants to validate all Customer properties, since the properties themselves already provide their contracts.
To introduce in Code Contracts the concept of object validation in an Enterprise Library-like fashion, you have to agree to this principle: If all the properties of an object have valid contracts, then the instance itself is considered in a valid state. To enforce that, you simply have to invoke all the getters to trigger the validation of their contract clauses.
I provide the object validation feature for Code Contracts with the extension method IsValid, which you can use to validate an instance anywhere in your code, including as part of a contract clause. The IsValid method works with the ContractValidation attribute, which you can apply to a class, interface, or property. When you use the ContractValidation attribute on a class or interface, the IsValid method verifies all the properties of that class or interface. When not set to such a level, you can apply the ContractValidation attribute to specific properties to limit validation to those properties. Furthermore, the IsValid method also processes non-public properties.
Thus, to make the Customer entity support object validation, you just add the ContractValidation attribute to the ICustomer interface of Listing 5:
public interface ICustomer
Now, whenever a client invokes the IsValid method on a Customer instance, each contract clause in the getters of the ICustomer entity properties will be checked. The IsValid method will return true only if all contracts are verified successfully:
When a contract clause using the IsValid method fails, you don't get the information about which property is in error, but you can take advantage of the debugger and explore your object properties to find out, as shown in Figure 5.
As an alternative, you can call the method ContractValidationAttribute.Validate, which coldly throws a ContractValidationException if a contract clause is violated. This exception exposes a PropertyInfo instance describing the property that failed.
As you can presume, the IsValid method indirectly uses reflection and its evaluation can be a costly operation. Choose wisely the places in your code where you invoke it. Note also that the validations work only if you've set the contract run-time behavior to throw exceptions on contract failures.
You'll find the IsValid method, the ContractValidation attribute and ContractValidationException as part of the Code Contracts Extensions project on CodePlex.
Self Validation
The Enterprise Library Validation Application Block also has the concept of self validating objects, whereas one class can supply a method whose role is to validate an instance state. Although the Code Contracts Extensions don't provide anything specific for that feature, you can implement self validation by extending the object validation technique presented in the previous section and using a dedicated property to do your validations:
private bool SelfValidates
return true;
Only apply the ContractValidation attribute to your property if you want self validation to be evaluated in the IsValid method calls alongside other object validations. Otherwise, invoke the self validation property directly.
Lazy Initialization
Sometimes, having strong contracts can become a burden. When you define very strict clauses in an entity, you may trigger exceptions when you don't want to.
Let's say you have the following contract for the Address entity, which ensures it's never null and is within a given length:
string IAddress.CountryRegion
!Contract.Result<string>().IsNull() &&
1, 50));
return default(string);
// Setter skipped
Then, assume that you're getting an Address instance from a simple factory (which doesn't set any property value):
public class AddressFactory
public static Address GetNewAddress()
return new Address();
You now need to initialize the Address properties, but may have to perform some logic on them to do that. In the code snippet below, I check the value of the CountryRegion property before initializing it, but because its getter contract states that its return value can't be null-and that its value is effectively null (not initialized by the factory), I'll get a contract exception when calling the getter:
Address address = AddressFactory.GetNewAddress();
if (address.CountryRegion == null) // Throws
address.CountryRegion = GetCountry(address);
This is a situation where you perform lazy initialization (or delayed construction) of your object. This scenario occurs frequently when you have a default parameterless constructor or when proper initialization is not enforced by a constructor. This is the case here with an ADO.NET entity, but the same issue could also arise with an Inversion of Control Container or Data Transfer Objects exposed by Web Services, among others.
To fix the problem, you need some kind of lazy contract evaluation. You want the CountryRegion getter contract to be effective, but not while you're initializing your Address entity. The solution comes in two parts: managing the initialization state and defining better contracts.
In order to manage the initialization, you can use the IInitializable interface. This interface defines a single property, IsInitialized. The contract for the IsInitialized property stipulates that once you set the property to true, the implementing object must have a valid state. So, it makes sure that you can't set an object as initialized if it's not properly constructed. Listing 8 presents IInitializable and its contract. Naturally, since the object validation technique is used here with a call to the IsValid method, the implementing class must support it.
Now that you have the IInitializable interface, you can use its IsInitialized property value in other contracts to implement laziness. If you go back to the CountryRegion getter presented earlier, you can rewrite it like this:
string IAddress.CountryRegion
// Laziness
(this is IInitializable &&
!((IInitializable)this).IsInitialized) ||
// Contract
(!Contract.Result<string>().IsNull() &&
IsInRange(1, 50)));
return default(string);
// Setter skipped
The first part of the statement checks if the Address object is initialized; if not, it doesn't enforce the contract clauses. However, if the Address is set as initialized, the contract kicks-in.
Invariants can also benefit from laziness; they just have to check the IsInitialized property before deciding whether to apply their contract. Invariants are automatically validated when you set the value of the IsInitialized property to true, because they are injected in the setters by the Contract Rewriter. Listing 9 shows the Address entity with full lazy contract evaluation. You can now perform lazy initialization without a problem:
Address address = AddressFactory.GetNewAddress();
if (address.CountryRegion == null) // Safe
address.CountryRegion = GetCountry(address);
// Other initiatizations skipped...
address.IsInitialized = true; // Auto-validated
You may have noticed earlier on that the Ensures clause in the new CountryRegion getter contract verifies with the is operator that the current instance (this) implements IInitializable. This is a very powerful condition to add to your lazy contracts. IAddress and IInitializable are two distinct interfaces; you have no guarantee whatsoever that an Address class would implement both. By adding the is statement check, laziness is only enabled in the postcondition if the implementing class also implements IInitializable. Otherwise, the contract clause behaves exactly like the strong one introduced at the beginning of this section. If you download the companion code of this article, see how the Address contract behavior changes just by removing IInitializable from the list of interfaces it implements!
Note that IInitializable and its contract are also among the things you'll get from the Code Contracts Extensions project on CodePlex.
Error Handling
The importance of an adequate error handling mechanism in a software system is often underestimated. The Code Contracts team has worked hard to provide you with many interception points to manage contract violations.
The first thing to understand is that, while Code Contracts supports exceptions, the overall design of the run-time error handling subsystem is not necessarily exception-based. It instead allows any type of error management you deem appropriate.
Another thing to note about throwing exceptions is that while Requires<> gives you the ability to throw a specific exception, it only allows you to specify a string message for it. If your exception needs additional arguments, you must resort to what is called legacy requires, which use the old if/throw pattern. Such code behaves similarly to Requires<>, but provides better exception support:
void SampleLegacyRequires(Customer customer)
if (!customer.IsValid())
throw new CustomerException(customer);
// Implementation skipped...
While that feature is available to emulate Requires, it isn't available for Ensures and the other contract clauses.
You can also alter the default run-time contract behavior by defining a class implementing specific handlers. Listing 10 presents the CustomContractsRuntime class, which I created to illustrate error handling customization. CustomContractsRuntime mostly simulates the default run-time contract behavior. Notice the TriggerFailure method: this is where you specify how errors should be handled.
Remember the code injection of the Contract Rewriter introduced in Listing 3? Take a good look at it again and you'll see that it involves __ContractsRuntime and CustomContractsRuntime calls. This is because the Contract Rewriter injected calls to my custom run-time contract behavior class. I enabled this by configuring the Custom Rewriter Methods in the Code Contracts property panel (Figure 1). For the Assembly I specified CodeContractsExceptions and for the Class I specified CoDeMagazine.CodeContracts.CustomContractsRuntime.
Be aware that you must specify the run-time contract behavior in all the projects you want to customize: keep in mind that this alters the way the target assembly is rewritten and that these specialized methods are not global handlers. In the companion solution, I configured the custom behavior only for the Client application; the other projects still throw standard ContractException exceptions.
When I first experimented with run-time contract behavior, I was a bit puzzled by the fact that there are differences in the methods called by the contracts clauses. To help you demystify their workflow, I present it in Figure 6.
Run-time contract checking also provides a global event, Contract.ContractFailed, which is raised when contracts are violated. That event is system-wide and works across assemblies. This is the preferred way of intercepting contract clause errors in your application:
Contract.ContractFailed += (sender, e) =>
The ContractFailed event argument is ContractFailedEventArgs. You can use it in your handler to mark the error as handled and continue with the normal execution path by calling the SetHandled method, or to force the triggering of the failure after all handlers have executed by invoking the SetUnwind method.
Although ContractFailedEventArgs contains information about the state and nature of the current error, it doesn't provide you with the exceptions raised by a legacy requires or Requires<>, because those exceptions aren't thrown yet when the ContractFailed event fires.
I wouldn't be objective if I didn't highlight one of the major issues with Code Contracts. Multithreading is currently not supported. In fact, using Code Contracts run-time checking with multithreading can be downright dangerous sometimes.
Let's say that you have a critical section managed with a lock or another synchronization mechanism:
public class MultithreadedList<T> : IList<T>
List<T> list = new List<T>();
public void Add(T item)
lock (list)
// Code skipped...
You've seen by now that interface contracts are inherited and injected. Listing 11 shows the same method after contract injection by the Contract Rewriter. You can see that the postcondition was added after the lock. If another thread empties the list between the lock and the Ensures statement, the clause will fail. In fact, the postcondition should have been injected inside the lock (or not at all) to prevent contract injection from breaking valid code. Having the Contract Rewriter guess where to add the contract clauses in such a context is almost impossible; imagine a multiple-lock method!
The Code Contracts team will provide a way to manage or workaround multithreading in a future release.
Explore Your Entities with Pex
I couldn't talk about Code Contracts without saying at least a few words on Pex. Pex stands for Program EXploration. This tool drills down into your assemblies, gathers information, and analyzes it in order to provide you with white-box testing.
While covering Pex is beyond the scope of this article, I'll show you rapidly how it can generate unit tests based on Code Contracts clauses.
Running Pex
Once you've installed Pex and you have opened a project for which you'd like to generate unit tests, all you have to do is to use the context menu in Visual Studio to invoke it, as shown in Figure 7. If you open the context menu inside a property or method, Pex will only explore that specific piece of code; otherwise, it will apply the exploration to the entire project.
Now, be patient! Exploring an assembly can be a lengthy operation. But it's worth every second of it. When combined with Code Contracts, Pex detects your contract clauses and generates a bunch of tests to stress them. I was curious to see how Pex would behave with the Code Contracts Conditions and with regular expressions, so I challenged it with the Phone property contract already introduced in Listing 5. After tweaking the test project a little bit, I successfully got Pex to generate a valid phone number and quite a lot of unhappy paths to test the property. Figure 8 shows the Pex Exploration Results from this operation.
Pex won't create all your unit tests, but it can save you a lot of time!
The test projects included in the companion solution presented in Figure 3 are all Pex-generated. Pex won't create all your unit tests, but it can save you a lot of time!
Contract-First Development and TDD
Let me come back to one of the principles of Design by Contract: design your contracts first. Ouch! That's quite a blow for Test Driven Development (TDD), which states that you must design your tests first, isn't it? Maybe not. Maybe both worlds can agree on a truce and find peace by collaborating.
You've seen how running a tool like Pex can really help you by generating many of your unit tests. So there's definitely a paradigm shift here. However, that doesn't mean the end of TDD either, because not all unit tests can be generated. Furthermore, you can't write contracts without an API.
So, why not use TDD and start writing your happy path unit test? Then, when you create a new method or property to satisfy your test, switch to DbC. Define your contracts and generate unit tests for them with Pex. After that, switch back to TDD and complete your implementation. You can even go back and forth between both methodologies while refactoring you API before running Pex.
That's Nirvana.
In this article, I presented an overview of Design by Contract and introduced the Code Contracts Library, the Contract Rewriter, the Static Contract Verifier, and Pex. Along the way, I showed how you can apply these principles and tools to the ADO.NET entities of the Entity Framework. I covered advanced strategies and techniques you can use while implementing your contracts, such as the Code Contracts Conditions, object validation, self validation, lazy initialization, and error handling. I also highlighted some limitations you may encounter.
It's up to you now to dig deeper into these topics by going to DevLabs and familiarizing yourself with Code Contracts and Pex. You like what you see? You don't? Let Microsoft know by talking to them in the DevLabs forums.
As for me, I've got to find out what Doloto, Spec Explorer, STM.NET, Axum, Small Basic, and CHESS are!


text:
JSU2004 wrote:War Years wrote:Mr. Crackerz wrote:JSU2004 wrote:Mr. Crackerz wrote:I predict the NBA players will predictable and boring.
Did you prefer the NCAA Tourney better? Honestly after the first two rounds the rest of the tourney wasn't really that good to me. There were only two games the rest of the tourney were I was like "them dudes making plays." Those were the K-State vs Xavier game and the Tennessee vs Ohio State game. Every other game including the final four games were really that exciting. Which is sad because most of the games were close.
I do agree the NBA playoffs is usually predictable, but that's because you do play 7 game series so the best team usually wins. I don't necessarily agree with the boring. There were a few good series, not just games, last year Bulls vs Celtics, Lakers vs Rockets, Cavs vs Magic, and Lakers vs Nuggets.
I think the NCAA will get significantly worse once it expands to 96 games. It will be diluting the good product. The thing is, I hate it when leagues abuse their power and try to get as much money as possible, often resulting in quality as a casualty. Baseball plays 162 games, and their playoffs are only 3 rounds (1st round being best of 5). NFL only lasts 1 month.
See, for me as a sports fan, it is all about quality. Think about this, the NBA finals START in June. That's absolutely ridiculous. I don't watch the playoffs until the finals (and usually until then, I have minor interest). The NFL/NCAA have each playoff game a single elimination. Only 8 teams make the playoffs in baseball, so it makes the regular season that much more important (even if its 162 games). In the NBA, over 50% of teams make it AND they all have best of 7 game series. IMO, all of that results in a long, predictable and boring playoffs.
My Solution for the NBA playoffs: Keep the 16 teams that make it in. However, 1st round should be a best of 3, 2nd round should be best of 5, and the final 2 rounds then be a best of 7. That takes away the initial predictability in the first couple weeks (and speeding up the initial rounds); while having the deserved 7 game grind where it should be: towards the end of the playoffs. OR, another solution would be to allow 12 teams into the playoffs, with the first two teams of each conference have a first round bye. The format for this would be similar to that of above, which first round would be best of 3, second round best of 5....I mean, look at these predictions you all have... more or less, they all look the same.
If we were to limit teams, I'd go with the Baseball and Football wild card systems. I'd have the 3 conference winners get a bye, and have 2 wild cards from the East and West play each other for the chance to play the #1 seed of the East and West. That would be effectively 10 teams in the playoffs. But I don't think that could happen now.
I agree with you Crackerz, this goes on way too long. Unfortuanately, it's hard to reign in games and teams once you've expanded the playoffs to 16 teams. In my mind if you are going to have 16 playoff teams , you should have at least 40 overall teams. Unfortunately at this time the NBA has enough financial problems with 30 teams. Which is exactly why they won't limit teams and games, because these are the most profitable games of the year. One thing they could do though, . Is to play every other day, Allow no more than 2 days between play off rounds. I could also see having a back to back game on games 3 and 4 of each round.I mean, look at these predictions you all have... more or less, they all look the same.
Yeah, but 2 years ago, the choices were a lot more exciting. I think you would get better playoff competition with fewer teams. Just the disparity between the 1st and 8th seed in the NBA is almost insurmountable.
In essence it sounds like I'm hearing the predictability of the playoffs makes it boring. I've never really thought about changing the playoffs (I wouldn't be opposed to this), but I have thought the NBA needs to reduce the number of teams.
Cracks, you said you mainly watch the final. If that's truly the case, I can't really think of a lot of exciting NBA Finals lately. In the last 20 years, I don't think I can name 5 competitive NBA finals (Heat vs Mavs, Spurs vs Pistons, Rockets vs Knicks).
I never said they were competitive. And you are right. They usually are locks right away as well. And actually, i didn't even watch the finals last year (I was in europe and away from access).
I remember a few years back when the Cav's vs. Wiz series was on in the first round. That was fun Bball... but the inconsistency of calls was absolutely atrocious, it just fueled my suspicion on how this league is run. I dunno, maybe LeBron is just too fast for officials for them not to see him have 4 steps at a time.
But the maybe the funnest NBA finals for me was the one where the Pistons upset the Lakers. That final was Pistons from game one, but the win was so shocking (as of course, the Lakers were heavy favorites) that people were waiting for the Lakers to eventually make that rally and win the series. They never did.


text: Hi all. We are looking to continue using Mydnsconfig, however we are finding at our peak times the service will crash, to restart it is just a case of /etc/init.d/mydns restart. all is good again. However as the business continues to grow we are worried we may need either to change the product (most definately not the best option), or tweak our setup. I have a few questions. Firstly what is the limit on connections the mydns server can handle, ( I know it will depend on hardware), however a rough idea would be great. Secondly, is there a way to optimise this server? can we tweak the server to handle these extra queries. (ubuntu however if you want I can use anything) Does the new ISPconfig 3.0.4 handle DNS better than mydnsconfig, I know that may be a silly question. but it appears to be the "current" product. Lastly, does anyone know of a way to cluster the mydnsconfig programme so we can have a single external IP but multiple servers handling the requests? I hope that makes sense; feel free to ask questions. Regards John


text:
The Wyoming Department of Transportation's Aeronautics Division is conducting a survey to identify how businesses, nonprofit organizations and individuals benefit from general aviation airports in the state.
The survey is investigating how Wyoming airports improve efficiency for these users and support other important services, as well as the number of jobs in Wyoming that rely on aviation.
The Aeronautics Division is also conducting a second survey of all travelers who have used general aviation to visit Wyoming.
Both surveys will be open until the first week of November.
Take the economic benefit survey here.