| Tena Koutou Katoa, |
I have recently been asked by my resident's association to assist with the maintenance of a website. This is a volunteer position, but I see it as an opportunity to put into practice my professional skill-set outside the corporate intranet and into the "real" world.
The website was originally created in 2001 by the daughter of the Chairman as a university project. It received an A+ rating. So, initially, my job was merely to negotiate a domain name with an external ISP, and migrate the project there, which I have achieved: http://www.GrenadaVillage.org.nz. The ISP I chose, purely on price, was www.openhost.co.nz.
Over the following weeks, I intend to do the following:
- Change all the HTM and IFrame pages into ASPX and Content pages with MasterPage (in progress).
- Add a Google Map
- Add an email email@example.com which will redirect to firstname.lastname@example.org
- Add a Newsletters portion to the site (PDF files)
- Add a Membership form (PDF initially, online eventually).
- Add META tags for better search engine coverage.
- Add an extensible photo gallery.
- Investigate a members only portion of the site, for the membership database.
You are invited to participate alongside, and make (helpful!) suggestions over the coming weeks.
| See the best of Tech.Ed 2009 & NZ Developer Community on Tech.Ed Online Today |
"Developers! Developers! Developers!" Microsoft CEO Steve Ballmer makes it clear that he sees helping developers be successful in innovating on the Microsoft platform as critical to Microsoft's ongoing success. Supporting Ballmer's philosophy Tech.Ed New Zealand featured a wide range of development related topics. Amongst the highlights from Tech Ed, US based Sara Ford, "queen of open source at Microsoft" was in town to talk about Visual Studio Tips & Tricks and you can also checkout what's coming with Visual Studio 2010 and .NET 4, both released early in 2010. An Overview of the Azure Services Platform
Cloud computing looks like the biggest change to hit our industry in many years. One important aspect of this change is the rise of platforms that let developers create applications for the cloud. This session takes a broad look at the Azure Services Platform, Microsoft's entry in this area.
| || Get Ready: What's coming with .NET 4.0 |
In this session John-Daniel Trask will be covering some of the cool new features coming as part of .NET 4.0 and Visual Studio 2010. Come and see how .NET 4.0 will make software development easier with new core framework features and language improvements in C# 4.0 and VB 10. Beyond the core framework, we will be covering new features of Workflow Foundation, Windows Presentation Foundation and Windows Communication Foundation.
| Here's our new logo |
I had to keep this under my hat for a week prior to launch, because the internal Email Signature Builder is one of the applications I support.
I actually like it. It's a lot less corporate and a lot more personal. And the NZ squared is cool too.
| Certification Magazine |
The November 2009 digital edition is now available at http://www.certmag.com/digital-edition/.
In This Issue:
- Crossover Careers for Technical Professionals
- The Great Firewall: How China Polices Internet Traffic
- Developers to the Rescue: A Career in Financial Services Software
- The Two Year Degree: A Happy Medium?
- Ernst & Young: Leveraging Business-Savvy IT Veterans
- The Open Group: Testing Your IT Street Smarts
I hope you enjoy this issue of Certification Magazine, and I encourage you to share it with your friends and colleagues worldwide.
President and Editor in Chief
SQL Server News
| SQL Azure |
SQL Azure is a new offering from Microsoft that takes SQL Server into the cloud. Helpful Resources and Tips
| Idera is proud to announce two revolutionary new products! |
- SQL safe v6.0 - 4 New Killer Features!
- New compression algorithms for the smallest backups EVER
- Patent-pending technology to optimize speed and compression
- Network fault-tolerance-- no more backup failures
- Secure encryption with virtually zero impact on speed!
- SQL virtual database v1.1. - Brand New Product!
- Turn backup files into a virtual database-- instantly!
- Retrieve data from backup files without restoring!
- No storage space needed to create virtual databases!
- Great for reporting, data extraction, analysis and more!
Try the beta editions of our new products and send us feedback and you'll be entered to win one of five free Netbooks!
Download both Beta products now!
Microsoft Partner News
| October After 5's: Windows 7 Deployment |
The October After 5 sessions will be run by Miguel Rojas and will cover off Windows 7 Deployment including an overview of the tools available to assist in deployment. Wellington 28th October Microsoft New Zealand Partner team now on Twitter!
You can now follow news, views, and updates from the New Zealand Partner Team on Twitter. We will regularly tweet about events, partner resources, and anything that we find interesting! To follow click on this link: http://twitter.com/mspartnernz or if you aren't on Twitter click here to subscribe to the RSS feed. Windows 7 Launched October 22
Today, Windows 7 becomes available around the world and we have some great ways for you to join in celebrating the launch of Windows 7 in New Zealand.
This morning the crowds gathered to take part in the launch events. Richie McCaw, another famous number 7, was in Auckland, and Wellington took over from where the last Olympics Opening Ceremony left off to create two uniquely Kiwi moments'
More than a dozen photographers captured these events, and you can view the Photosynths of the two moments plus images from the events here... Win an HP Notebook!
But what's a celebration without prizes? We've got HP notebooks to give away and here's two ways you can win:
Great Retail Offers!
- Enter our Facebook contest - become a fan of Windows NZ and upload your photo, image, video or original interpretation of 7 for the judges to review. More info here...
- Enter our Windows 7 desktop theme contest. The subject is Keeping It Kiwi so send us your photos or digital images, and some words, which show us how proud a Kiwi you really are and your work could end up as an official Windows 7 theme download! More info here...
Windows 7 hits retail stores today so here are some great retail offers. Plus, for anything and everything Windows 7 visit the official Windows 7 website.
We're also having some fun on the MSN NZ website today, check it out! Partner Competitions
A big thank you to all the partners who entered our Windows 7 competitions prior to launch. We had a huge number of entries and it is great to see the high level of adoption of Windows 7 in the partner channel. The winners will be notified today and communicated in the next partner newsletter. Partner Deployment
We will be actively promoting those Gold Certified Partners who have deployed Windows 7 in their business through our customer websites and newsletters. See the list below for those gold partners who have deployed. If you are not on this list and are a gold partner who has deployed contact us and we will ensure you are included in our communications.
Datasouth Business Solutions Ltd
Lexel Systems Ltd
Remember for any Windows 7 information or resources visit the partner portal here.
The Microsoft New Zealand Partner Team
| These hot jobs and new career opportunities may shortly be available on the external careers site: INF0229L Technical Specialist - Cisco Configuration |
Put your naturally inquisitive nature and customer service experience to good use and gain valuable qualifications along the way. Advance your career as part of a fun, sharing team who thrive on meeting and constantly exceeding customer expectations. PRO0207M Service Delivery Manager
Apply your knowledge of building management and client delivery in this immensely challenging role. Test your problem solving expertise and seek out your desire to surpass our customers' expectations. Assume responsibility for our often high-profile issues and succeed in turning them into great solutions. With expertise in our products and services, gather the clues, and piece the puzzle together as the champion for our customers. FIN020G9 Compliance Programme Leader
Lead and work within a small team of highly motivated and driven professionals who are passionate and committed to the resolution and delivery of revenue compliance issues. Become one of a team who work with our BU's to successfully resolve and deliver reparation and communications through FIN020G8 Senior Finance Analyst
Enhance your accounting and financial analysis skills within our busy, fast paced Business Operations and Finance group. Partnering with Heads of delivery, Programme and Project Managers, gain some real world insight and exposure to project management. As part of the end to end project lifecycle collate your financial findings ensuring that we remain compliant with project budgets and key stakeholders financial expectations. INF0229E Device Development Engineer
If getting your hands on future technology flicks your switch you'll live for this role. Be part of Telecom's Device Technology Realisation team testing and certifying mobile devices to make sure they're up to scratch. Ensure devices connecting to our wireless networks work well and our customers experience bug-free handsets. If it connects to Telecom's network, you'll get your hands on it before anyone else! ARC02045 Senior Solution Architect
This is the big time. Be part of our quick thinking and fast-moving solution design team where vision becomes reality on some of the most complex ICT projects in town. Put your design and architecture experience to the ultimate test and take full ownership of technical delivery in our fluid and solution focussed environment. Proactively shape new technologies that will touch thousands of Kiwis every day.
| Please Give Microsoft Press Feedback About Their Books |
This just in from Microsoft Press:
For many years Microsoft Press books have included a survey page at the back via which we ask for your feedback about the book you purchased, borrowed, checked out of the library, stumbled upon, or whatever, and then--thank you!--used. That page promised a "brief online survey." Well, that survey was pretty brief, and every year Microsoft Press editors would review all of your feedback to look for ways to make our books better. But that was then...
We've just revised the survey to make it even shorter, and we've started a review program in which we, as a team, look at your feedback by book, by series, by author, and by audience every quarter. This is all good, but it's meaningless without your input.
Please give us feedback about the Microsoft Press books you use via the new survey. We've also added a survey link to the Quick Links in the right column of this newsletter.
Your participation will help Microsoft Press create books that better meet your needs and standards. Thanks in advance for helping us do that!
P.S. On the back of each of our books, you'll find an ISBN. The survey begins by asking you for that number. The ISBN ensures that your feedback is correctly linked to the book you're commenting on. If you don't have the book at hand, you can find its ISBN by searching for the book in the Microsoft Learning Catalog or at the sites of online retailers such as Barnes & Noble and Amazon.
Dot Net News
| Wellington .NET User Group Meeting |
Behaviour Driven Development Abstract
- Level 22 State Insurance Tower
- Wednesday 21 October 2009 @ 6pm
- BDD or behaviour driven development: you may have heard of it. But what does it mean? Learn the foundations of caring about behaviour. Learn how the process helps guide developers to the software that helps rather than hinders. Learn about "given, when, zen" and how bdd came about. Get an overview of some of the tooling that can help you become a bd-developer.
In this section, I highlight dates, times and venues of events either I am presenting at, or of interest to METTLE. I'm available for bookings.
|Date ||Event ||Venue ||Speaker|
|26-Oct-09 - 09-Nov-09 ||European Road Show Career Express ||Milan, Italy || |
|28-Oct-09 ||SilverLight: RIA Services ||TBA ||Andrew Tokeley|
|28-Oct-09 ||October After 5 Session (Wellington) ||Ace Training, The Terrace ||Miguel Rojas|
|09-Nov-09 ||Tech-Ed Europe ||Berlin, Germany || |
|19-Nov-09 ||SQL Server growth in the NZ Fire Service ||Wellington SSUG ||Geoff Laws|
| Inside Microsoft SQL Server 2008: T-SQL Programming |
- by Itzik Ben-Gan, Dejan Sarka, Roger Wolter, Greg Low
- Ed Katibah, and Isaac Kunen.
[Microsoft Press is] happy to announce the availability of Inside Microsoft SQL Server 2008: T-SQL Programming. Below is an excerpt from the book's Introduction, by Itzik Ben-Gan. You can also find the book's Foreword, complete Table of Contents, and an excerpt from Chapter 3, "Stored Procedures," on the Microsoft Press blog. Introduction
This book and its prequel--Inside Microsoft SQL Server 2008: T-SQL Querying--cover advanced T-SQL querying, query tuning, and programming in Microsoft SQL Server 2008. They are designed for experienced programmers and DBAs who need to write and optimize code in SQL Server 2008. For brevity, I'll refer to the books as T-SQL Querying and T-SQL Programming, or just as these books.
Those who read the SQL Server 2005 editions of the books will find plenty of new material covering new subjects, new features, and enhancements in SQL Server 2008, plus revisions and new insights about the existing subjects.
These books focus on practical common problems, discussing several approaches to tackle each. You will be introduced to many polished techniques that will enhance your toolbox and coding vocabulary, allowing you to provide efficient solutions in a natural manner. These books unveil the power of set-based querying, and they explain why it's usually superior to procedural programming with cursors and the like. At the same time, they teach you how to identify the few scenarios where cursor-based solutions are superior to set-based ones.
The prequel to this book--T-SQL Querying--focuses on set-based querying and query tuning, and I recommend that you read it first. This book--T-SQL Programming--focuses on procedural programming and assumes that you read the first book or have sufficient querying background.
T-SQL Querying starts with five chapters that lay the foundation of logical and physical query processing required to gain the most from the rest of the chapters in both books. The first chapter covers logical query processing. It describes in detail the logical phases involved in processing queries, the unique aspects of SQL querying, and the special mindset you need to adopt to program in a relational, set-oriented environment.
The second chapter covers set theory and predicate logic--the strong mathematical foundations upon which the relational model is built. Understanding these foundations will give you better insights into the model and the language. This chapter was written by Steve Kass, who was also the main technical editor of these books. Steve has a unique combination of strengths in mathematics, computer science, SQL, and English that make him the ideal author for this subject.
The third chapter covers the relational model. Understanding the relational model is essential for good database design and helps in writing good code. The chapter defines relations and tuples and operators of relational algebra. Then it shows the relational model from a different perspective called relational calculus. This is more of a business-oriented perspective, as the logical model is described in terms of predicates and propositions. Data integrity is crucial for transactional systems; therefore, the chapter spends time discussing all kinds of constraints. Finally, the chapter introduces normalization--the formal process of improving database design. This chapter was written by Dejan Sarka. Dejan is one of the people with the deepest understanding of the relational model that I know.
The fourth chapter covers query tuning. It introduces a query tuning methodology we developed in our company (Solid Quality Mentors) and have been applying in production systems. The chapter also covers working with indexes and analyzing execution plans. This chapter provides the important background knowledge required for the rest of the chapters in both books, which as a practice discuss working with indexes and analyzing execution plans. These are important aspects of querying and query tuning.
The fifth chapter covers complexity and algorithms and was also written by Steve Kass. This chapter particularly focuses on some of the algorithms used often by the SQL Server engine. It gives attention to considering worst-case behavior as well as average case complexity. By understanding the complexity of algorithms used by the engine you can anticipate, for example, how the performance of certain queries will degrade when more data is added to the tables involved. Gaining a better understanding of how the engine processes your queries equips you with better tools to tune them.
The chapters that follow delve into advanced querying and query tuning, addressing both logical and physical aspects of your code. These chapters cover the following subjects: subqueries, table expressions, and ranking functions; joins and set operations; aggregating and pivoting data; TOP and APPLY; data modification; querying partitioned tables; and graphs, trees, hierarchies, and recursive queries.
The chapter covering querying partitioned tables was written by Lubor Kollar. Lubor led the development of partitioned tables and indexes when first introduced in the product, and many of the features that we have today are thanks to his efforts. These days Lubor works with customers that have, among other things, large implementations of partitioned tables and indexes as part of his role in the SQL Server Customer Advisory Team (SQL CAT).
Appendix A covers logic puzzles. Here you have a chance to practice logical puzzles to improve your logic skills. SQL querying essentially deals with logic. I find it important to practice pure logic to improve your query problem-solving capabilities. I also find these puzzles fun and challenging, and you can practice them with the entire family. These puzzles are a compilation of the logic puzzles that I covered in my T-SQL column in SQL Server Magazine. I'd like to thank SQL Server Magazine for allowing me to share these puzzles with the book's readers.
| Wellington SQL Server User Group Meeting |
Optimizing tempdb Performance (slides available at this link)
- Level 7 Plunket House
- Tuesday 20 October 2009 @ 5:30pm
- Brad M. McGehee
- Author, How to Become an Exception DBA
- From Hawaii, USA
- From www.Red-Gate.com
- Director of DBA Education
- From SQLServerCentral.com
- (and, he's a home-schooler, like me!)
My Assumptions about You
- You are most likely a DBA or developer with one or more years SQL Server experience.
- You have a basic understanding of how to use Performance Monitor and Profiler.
- You have a basic understanding of DMV/DMFs.
- You have a basic understanding of SQL Server internals
What we are going to Learn Today
- How tempdb is Used
- Tempdb Internals
- Ways to Monitor tempdb
- Ways to Optimize tempdb
What is Stored in tempdb
- tempdb is used to store three different categories of temporary data:
- User Objects
- Internal Objects
- Version Stores
- Local and global temporary tables and indexes
- User-defined tables and indexes
- Table variables
- Tables returned in table-value functions
- Work tables for DBCC CHECKDB and DBCC CHECKTABLE.
- Work tables for has operations, such as joins and aggregations
- Work tables for processing static or keyset cursors.
- Work tables for processing Service Broker objects
- Work files needed for may GROUP BY, ORDER BY, UNION, and SELECT DISTINCT operations.
- Works files for sorts that result from creating or rebuilding indexes (SORT_IN_TEMPDB)
- Storing temporary large objects (LOBs) as variables or parameters (if they won't fit into memory).
- The version store is a collection of pages used to store row-level versioning of data.
- There are two types of version stores:
- Common Version Store: Used When:
- Building the inserted and deleted tables in after triggers
- When DML is executed against a database using snapshot transaction isolation level.
- Online-Index-Build Version Store: Used for online index builds or rebuilds. EE edition only.
Keep the Following in Mind
- If your SQL Server instance doesn't employ many of the activities just described, then tempdb performance may not be an issue for you.
- Lon the other hand, if your SL Server instance uses many of these feature, then tempdb could become a significant bottleneck for your SQL Server instance.
- Oly by investigation will you know.
- Keep in mind that there is only one tempdb, and it is possible for one misbehaved application and database to indirectly affect the performance of all the other databases on the same instance.
Tempdb Internals (1)
- tempdb is dropped and recreated evrery time the SQL Server service is stopped and restarted.
- When SQL Server is restarted, tempdb inherits many of the characteristics of model, and creates and MDF file of 8MB and and LDF file of 1MB.
- Auto-growth is set to grow by 10% with unrestricted growth.
- Each SQL Server instance may have only one tempdb, although tempdb my have multiple physical files.'
Tempdb Internals (2)
- tempdb often doesn't act like other databases:
- tempdb only uses the simple recovery model.
- Many database options can't be changed e.g. Database read-Only, Auto Close, Auto Shrink).
- Tempdb may not be dropped, detached, or attached.
- Tempdb may not be backed up, restored, be mirrored, have database snapshots made of it, or have many DBCC commands run against it.
- tempdb logging works differently from regular logging.
Execution Plans and tempdb
- When a query execution plan is cached, the tempdb work tables required by the plan, if any, are often cached.
- When a work table is cached, the table is truncated (from the previous execution of the code) and up to nine pages remain in the cache for reuse.
- This improves the performance of the next execution of the query.
- If the system is low on memory , the Database Engine removes the execution plan and drops the associated work tables.
Types of tempdb Problems
- Generally, there are three major problems you run into with tempdb:
- Tempdb is experiencing an I/O bottleneck, hurting server performance.
- Tempdb is experiencing DDL and/or allocation contention on various global allocation structures (metadata pages) as temporary objects are being created, populated, and dropped. E.g. Any space-changing operating (such as INSERT) acquires a latch on PFS, SGAM, or GAM pages to update space allocation metadata. A large number of such operations can cause excessive waits while latches are acquired, creating a bottleneck, and hurting performance.
- Tempdb has run out of space.
- Ideally, you should be monitoring all these on a proactive basis
Identifying tempdb I/O Problems (1)
- Use Performance Monitor to determine how busy the disk is where your tempdb MDF and LDF filds are located.
- LogicalDisk Object: Avg. Disk Read/Sec
Identifying tempdb I/O Problems (2)
- SQL Server Database: Log Byes Flushed/sec: the total number of log bytes flushed. A large value indicates heavy log activity in tempdb.
- SQL Server Database: Log Flush Waits/sec: the number of commits that are waiting on log flush. Although transactions do not wait for the log to be flushed in tempdb, a high number in this performance counter indicates an I/O bottleneck on the disk associate with the log.
Identifying Contention on Allocation Structures
- Use these performance counters to monitor allocation/deallocation contention in SQL Server:
- Access Methods: Worktables Created/sec: The number of work tables created per second.
- Access Methods: Workfiles Created/sec
- Temp Tables Creation Rate
- Temp Tables For Destruction
DMVs to Help You See What is Happening
- sys.dm_db_session_space_usage: Retrns one row for each session, with cumulative values for spaced allocated and deallocated by the session
tempdb Space Allocation
- A higher % allocation for user objects implies that objects that are created by applications are the major consumers of tempdb. This may or may not be a cause of concern, but can imply potential allocation page contention.
- A higher % allocation of internal objects implies..
Monitoring tempdb Space
- Performance Counters
- SQL Server: Database: Data File(s) Size(KB): tempdb
- SQL Server: Database: Log File(s) Used Size(KB): tempdb
- SQL Server: Transactions: Free Space in tempdb (KB)
- Consider creating an alert on these if you are having space-related tempdb problems.
If tempdb Space Runs Low, Errors Occur
- Check the SQL Server error log for these errors:
- 1101 or 1105: A session has to allocate more space in tempdb in order to continue
- 3959: .
- Be sure auto-growth is turned on for tempdb, and ensure that you have enough available free disk space
Tips for Optimizing tempdb: Overview
- Minimize the use of tempdb
- Don't return more rows than you need
- Don't sort data that doesn't need sorting
- Don't use UNION or SELECT DISTINCT if not needed
- Keep transactions short
- Use proper indexing to (e.g. use clustered indexes for columns where a lot of sorting occurs)
- Avoid using local and global temp tables. Either rewrite your code to avoid using them, or consider creating a permanent work table.
- Avoid using static and keyset-driven cursors. In many cases, cursors can be avoided by rewriting the code.
- Avoid using recursive common table expression queries. If the execution play for such a query sows a spool operator, then tempdb is being used to execute it.
- Avoid using the SORT_IN_TEMPDB option when creating or rebuilding an index. If you decide to use this option, schedule to run during a slower time of the day.
- Avoid using online index rebuilding (Enterprise Edition).
- Avoid aggregating excessive amounts of data
- Avoid joins that indicate a hash-type join in the query execution plan. Rewrite the query or use betting indexing.
- Avoid using triggers.
- Avoid using row-versioning-based transaction isolation levels.
- Schedule jobs, such as DBCC CHECKDB, that use tempdb heavily, at times of the day when the SQL Sever instance is less busy. Or perform DBCC CHECKDB on a database backup on another server.
- If you need any of these features, use them, but realise they have an impact. Just don't be lazy.
- Add more RAM to your server
- Depending on the operation, SQL Server tries to perform the action in the buffer cache (e.g. sorts, CTEs)
- If the buffer cache does not have enough available space, then the operation may have to spill to tempdb.
- This places additional overhead on tempdb.
- If your server is experiencing a memory bottleneck, then adding RAM can help reduce the load on tempdb.
- On the other hand, if your server has plenty of memory, adding more won't help tempdb performance.
- Leave Auto Create Statistics & Auto Update Statistics on
- By default, these database options are turned on for tempdb
- In most cases, don't turn these options off, as SQL Server will automatically create and update statistics as needed in temporary tables and indexes, helping to boost performance of many operations performed on them.
- Pre-allocate tempdb space - everyone needs to do this
- The default 8MB of tempdb space that is automatically allocated is generally way too small a value.
- As SQL Server needs more tempdb space, it will request it, and through autogrowth, it will get it, 10% at a time.
- Using Instant file Initialization can greatly speed the process of growing the tempdb at system start.
- Start with an educated guess for new servers. For existing servers, observe how much tempdb is used.
- Don't shrink tempdb if you don't need to
- The best way to shrink tempdb is to stop and restart the server so that the pre-allocated size is recreated. Using DBCC SHRINKFILE might work, but is often ineffective.
- Locate tempdb on its own array
- If tempdb becomes very active, disk I/O contention can become an issue.
- One way to help mitigate this problem is to locate tempdb on its on array (or LUN) so that tempdb activity doesn't have to compete with other disk I/O activity.
- Locate tempdb on a fast I/O subsystem
- Always locate tempdb on the fastest I/O subsystem you have available.
- Prefer RAID 1 or RAID 10. RAID 5 is slow for writes and should generally be avoided for tempdb, as tempdb is over write-intensive
- If using s SAM, consult with a SAN engineer to ensure that tempdb wont' be affected by other disk I/O.
- Consider SSD drives for tempdb MDF and LDF files.
- Divide tempdb Into Multiple Files
- Be default, single physical files.
- While the LDF should always remain as a single physical file, often dividing the tempdb MDF into multiple physical files can help performance.
- Balance between using more physical disk files (which can increase switching costs and file management overhead)
How to Optimize tempdb - General
- Generally, if you are building a new SQL Server instance, it is a good idea to assume that tempdb performance.
| It's How You Look At It. |
A family had twin boys whose only resemblance to each other was their looks. Opposite in every way, one was an eternal optimist, the other a doom and gloom pessimist.
Just to see what would happen, on the twins' birthday, their father loaded the pessimist's room with every imaginable toy and game. The optimist's room, he loaded with horse manure.
That night, the father passed by the pessimist's room and found him sitting amid his new gifts crying bitterly. "Why are you crying?" the father asked.
Because my friends will be jealous;
Because I'll have to read all these instructions before I can do anything with this stuff;
Because I'll constantly need batteries;
Because my toys will eventually get broken,
answered the pessimist twin.
Passing the optimist twin's room, the father found him dancing for joy in the pile of manure. "What are you so happy about?" he asked.
To which his optimist twin replied, "There's got to be a pony in here somewhere!"
...so for all of you neck high in it - there has got to be a pony in there somewhere......