Pages

Saturday, 16 June 2012

How To Submit a Good Database Bug Report

When an open source project becomes popular, bug reports start flocking in. This is both good and bad news for the project developers. The good news is that someone is using the product, and they are finding ways of breaking it that we didn't think of. The bad news is that most of the times the reporters assume that the developers have super human powers, and that they will find what's wrong by the simple mentioning that a given feature is not working as expected. Unfortunately, it doesn't work that way. An effective bug report should have enough information that the ones in charge will be able to reproduce it and examine in lab conditions to find the problem. When dealing with databases and database tools, there are several cases, from simple to complex. Let's cover them in order.

Installation issues
This is often a straightforward case of lack of functionality. When a tool does not install what it is supposed to, it is a show stopper, and a solution must be found. In this case, it's often enough to state the environment where the installation is happening (operating system, version of the tool, version of core components such as the MySQL database used) and the command used to start the installation. The error message could be an expected failure, when the installation procedure checks for requirements and fails if they are not met. For example: "Missing Ruby interpreter". The message tells (or suggests) you what to do. Filing a bug report on an expected failure is a waste of time. You should install the missing part and try again. Even if the message is about an unexpected failure (e.g. you get a stack trace from Ruby or Java), usually the first message tells you enough to be able to find a workaround. For example, if you get an exception from Ruby complaining about a missing 'curl' command, you can file a bug report to ask for the installer to check for 'curl' in the requirements, but if you install 'curl' yourself, the installation should continue.

Simple database issues
Reporting a database bug means complaining that the DBMS is not behaving as advertising by the documentation, or as common usage dictates. If it is a missing or misbehaving functionality, the best way of showing the problem is by starting with an empty DBMS, followed by the creation of the objects needed to reproduce the issue (CREATE SCHEMA, TABLE, INDEX) and by a minimal amount of data that triggers the problem. Some information about what operating system and database version was used is probably necessary to reproduce the problem consistently.

Simple database replication issues
By simple replication we mean a vanilla master/slave topology. In this scheme, data inserted in the master will eventually end up in the slave. Bugs in this category may fail to replicate the data totally or partially, or they may cause a break in the replication flow. Reproducing them is almost as easy as with simple database bugs. If you start with an empty system and manage to reproduce the error with a short sequence of commands, it should probably reproducible by a third party. Sometimes, settings in the master and the slave are essential to reproduce the problem. In MySQL, the format of binary logs, the default database engine and SQL modes can affect replication and produce different results with the same stream of SQL commands.

Complex database replication issues
The most difficult bugs to report are the ones where the error shows up only in a given topology. While MySQL native replication offers only few options to pipe data around (single, circular, hierarchical), Tungsten replicator allows a rich set of combined pipelines that can change the outcome of a data change event, depending on the originating node and the direction it took. In these case, information o how the cluster was installed becomes essential.

Concurrency issues
This is one of the most difficult bugs to report. When an error happens only because of the contemporary action of two or more threads, there is no easy way of reporting it in a way that it can be easily reproduced. Three methods are possible:
  • Describe the action of the first thread, then mark the change of thread and describe the actions of the second thread, continuing in this way until you reach the error point.
  • If you are a developer and feel comfortable with multi thread applications, write a script that reproduces the error by running several threads (Perl, Python, and Ruby offer the best environment for this kind of tests).
  • If the database offers a tool to write such multi-threading tests, consider using it.
Heavy load issues
This is a more complex case of the above one. Not only you need concurrency, but a lot of it happening at the same time. Reproducing this kind or error is challenging. If you have a support agreement with the provider of the database or the tool, you may let the support engineer have a look at your running environment, to find some clues. But even in this case, the support engineers or yourself need to ultimately reproduce the case in such a way that a developer can fix the problem and test the fix. There are two methods to report this problem:
  • Simplification: if you can reduce the concurrency to the elements that are misbehaving, the methods for concurrency issues will apply also in this case.
  • Enabling a query log could lead to identifying the sequence of events that have generated the error. The log should be integrated by the DDL of the objects involved in the action (schemas, tables, triggers, views, etc).
Large data issues
If your error only shows itself with large data, there is often a logistical problem, as you can't easily provide gigabytes of data, even if there privacy and security issues weren't in the way (which usually are). There are three strategies that you can use to report such bugs:
  • If only the size matters, then describing the kind of data used could be enough. E.g. When a table with such fields and such indexes grows beyond X GB, then the optimizer warp drive explodes. (Don't try this at home)
  • Create a script to generate the data that will ultimately trigger the error. This method requires both skills and an understanding of what the error is.
  • You may use a publicly available database to reproduce the error (for example, the Sample database with test suite.) Just mention in the bug report where to find the database, eventually how to load it if it is not simple, and then describe the steps needed to reproduce the bug after loading it.

DOs and DONTs


DO
  • Search the bug repository and the mailing lists (or forums) before submitting yours. Someone may have had the same problem before you did. (Thanks, Robert Hodges, for this important reminder.)
  • Put yourself in the receiver's position, and try to reproduce the problem from a clean initial state.
  • If there is a workaround, mention it: it might give a good clue to the developers.
  • More information is better. Anything that can improve the identification of the bug root cause will be welcome. (But don't overdo: see below)
  • If you feel that a missing feature should be useful, report it as a feature request. (Even better: suggest a patch)

DON'T
  • Don't report a missing feature as a bug, unless the docs say that the feature should be there.
  • Don't just send the error message without the events that generated it.
  • Don't include SQL commands embedded in code.
  • Don't say "my application doesn't work anymore," assuming it's the database's fault. Remember The First Rule of Programming: It's Always Your Fault
  • Less is better. If there is a long way and a short way of reproducing the bug, the shorter one is better. Don't send more info just for the sake of it.
  • Don't tell the developers that they are retarded. This will not increase the priority given to your bug, or your credibility.

How To Find a Best Museum Career

Are you passionate about history, art or science? Have you assembled an interesting personal collection over the years? A museum may be the perfect place to share your zeal and build a legacy.

The United States has more than 17,000 museums, according to the American Association of Museums (AAM). Whether you live in a metropolis or in the country, chances are you can find a nearby museum for a second career or volunteer position. Check your state's museum association for a list of museums and job opportunities in your region.

Education and Skill Requirements
Museum studies and professions are called museology. Like most 21st-century industries, technology is quickly transforming the field. Today's museum professionals have high levels of knowledge and expertise, according to Zinnia Willits, director of collections administration at Gibbes Museum of Art in Charleston, S.C.

"The museum profession is constantly changing," Willits writes on the museum's blog. "New standards for collection care, exhibition design, curatorial research, digitization of information, use of social media, educational programming, membership tracking and every other aspect of museum work are being discussed daily on listservs, blogs and at various gatherings of museum professionals."

Curator and archivist are the elite positions within the museum system. Curators collect, study and interpret three-dimensional objects. Archivists are responsible in areas involving paper, film and electronic records. These positions typically require advanced degrees in the museum's subject area. Those with undergraduate degrees may find entry-level work as technicians or in other specialized job roles.

Finding Work
The U.S. Bureau of Labor Statistics says the number of jobs for curators, archivists and archival techs is expected to grow at a faster-than-average rate, but notes that graduates face keen competition for positions. If you need to bolster your resume to qualify for a job, check out the Smithsonian Center for Education and Museum Studies directory of universities offering museum-related training programs.

The beauty of museum employment is that these American institutions require workers with a vast array of skills. You may already have the qualifications to launch a museum career. Museums need publicists, fundraisers, event planners, information technology experts, plumbers, electricians, drivers and retail specialists. Taxidermists, book conservators, photographers, landscape professionals and other workers may also find opportunities. Each plays an important role in helping a museum meet its mission.

"Curatorial scholars, conservation scientists and technical art historians melded into a tasty soup of cosmic union," says Allysa Browne Peyton about her experience at the 2011 Association of Art Museum Curators annual conference.

Browne Peyton, the curator associate for Asian Art at the University of Florida's Samuel P. Harn Museum of Art, also notes the importance of multidisciplinary approaches in museum staffing: "Each ingredient will complement the other and amount to something greater than its parts," she says.

Thursday, 14 June 2012

How To Cut Your Tax Bill

As many seniors learn, retirement can be as stressful and as frustrating a time as any when it comes to paying taxes.

With 401(k)s, traditional and Roth IRAs, as well as Social Security benefits and working wages, there's plenty to calculate on a tax return.

So, how can the retirement crowd cut down on their tax bills? Analysts say it starts with managing your money.

"Retirees usually have a bit more control over their tax situation than other taxpayers," says Steven Gershon, a director at the Kansas City, Kansas, office of the accounting and financial service firm, CBIZ MHM. "That's because they can decide how much they might need to withdraw from their retirement plans to keep their taxes low."

Delay, delay, delay

Most experts agree that delaying withdrawals from a 401(k) or traditional IRA until the age of 70½ years is best for taxpayers — letting these plans grow tax deferred.

Taxes on withdrawals from these plans are eventually taxed at ordinary income rates — but that can increase by more than 10 percent if withdrawals occur before age 59½.

This is where a Roth IRA can help, says Mike Scholz, tax director at Wegner CPA. Funds there can be withdrawn by age 59 when needed, tax free, if they've been open for at least five years.

"If a retiree doesn't have a current Roth IRA, it's worth it to see if a rollover from an existing IRA or employer plan to one makes sense," Scholz explains. "They have tax-free growth and tax-free distributions."

And having more than one type of IRA can help taxpayers when the required minimum distributions withdrawal, RMD, for these funds hits at age 70.

"RMD management is essential," says Lee Martinson, owner of PGA Financial. "Seniors have to know to take advantage of the aggregate rule, which says that withdrawals from one can satisfy withdrawals from all your vehicles. That will lower tax bills."

One other tactic to lower taxes is to shift taxable income around to different types of lesser- taxed investment vehicles.

"Some methods are very popular, like family limited partnerships, and things like trust life insurance annuities," says Alexey Bulankov, a financial planner at McCarthy Asset Management. "There are what's called Stretch IRA's to deal with estate taxes. Seniors should weigh the benefits of all."

Besides moving money, some retirees consider moving themselves to states like Nevada and Florida, that traditionally have low or no income taxes. But times have changed, says Gary Duboff, managing director of CBIZ MHM's New York City office.

"With the economic downturn, many states are enacting or thinking about new and higher taxes on residents," Duboff explains. "It's a common approach for many retirees to move, but unexpected changes in tax law could have an impact on planning."

Another problem for retirees on the move are gift and estate taxes. Many states — 21 to be exact — do not adopt the federal rules excluding up to $5 million of estate tax assets. That could cost retirees and their heirs additional taxes if they re-locate.

It's obvious, say experts, that retirees need to check out the tax laws of any new state they might want to move to.

A dollar earned . . .

Social Security checks are welcome income for many retirees, but benefits are often taxed if a person has substantial additional income — such as wages, dividends, or interest.

No one pays federal income tax on more than 85 percent of benefits, but the combined income threshold — benefits and other income like wages — for when the tax kicks in is low: $44,000 for couples and as little as $25,000 for some individuals.

That means retirees ought to think about pushing back any extra income.

"Seniors should postpone taking discretionary income, like capital gains, to early January of a following year, instead of December, if they can," says Larry Karmel, a partner at the tax specialty firm, Metis Group.

"With the income threshold at 85 percent, delaying the income for a time makes the benefit dollar worth more than a dollar of other income," argues Karmel.

For married couples, itemized deductions also can help off set potential taxes on benefits, says Bulankov.

"Filing jointly may enable couples to deduct all or part of the long term care insurance premiums they pay for themselves if they meet certain IRS criteria—and help minimize benefit taxation," Bulankov explains.

Looking ahead

If retirees find the tax burden heavy now, it could get heavier with tax reform. Some proposals include flat taxes with the elimination of taxation on dividends and interest, but that could mean higher rates on wages.

Expiration of the Bush tax cuts — set for the end of 2012 — could raise rates on dividends from 15 to 39.6 percent — regular income that many seniors depend on.

Meanwhile, taxes are going up in 2013. The health care bill passed in 2010 adds a 3.8% tax on wages above $200,000 for individuals on unearned income, including interest, dividends, capital gains and other investment income. And there will be a 0.9 percent increase in Medicare taxes on all wages for the same income levels.

With all that in mind, some tax analysts worry that retirees aren't prepared for their senior years.

"The cost of retirement has grown and many people have not saved enough," says Lee Isaccson, a CPA with the accounting firm, Reznick Group. "They need to budget their costs and understand that taxes are now part of their responsibility and start making estimated payments, where as an employee, they didn't have to."

In the end, experts say, cutting down a tax bill takes work.

"Plan ahead for taxes as much as planning for a vacation," says Mike Scholz. "A little tax planning now can produce enough tax savings to actually pay for a trip."

Wednesday, 13 June 2012

How To Design the Best Navigation Bar for Your Website or Blog

The navigation bar is the most important design element on a website. Not only does it guide your users to pages beyond the homepage, but it’s also the singular tool to give users a sense of orientation. With this in mind, it’s important to adhere to time-tested design and usability conventions. Doing so will give your users a comfortable and easy reference point to fully engage with your content.

Despite the necessity of an accessible navigation bar, usability studies on navigation across the web aren’t positive. One study by User Interface Engineering shows that people cannot find the information they seek on a website about 60% of the time. While this failure rate might be acceptable for your average blog, a business website simply cannot afford these stats. Even worse, many users often find navigation usability extremely frustrating, citing annoying hover errors and inconsistencies. Another study by Forrester found that 40% of users do not return to a site when their first visit is negative.

So how do you ensure that your users are able to quickly and easily find the information they need?

The Basics

Employ these basic concepts to help users move more efficiently through your website.

Start with content. Believe it or not, most websites start backward, meaning a designer will suggest navigation items before determining all the content possibilities. This isn’t entirely unusual — often the content isn’t ready before the design process begins. Jeffrey Zeldman, a usability guru, suggests, “Content precedes design. Design in the absence of content is not design, it’s decoration.”

It’s important to properly analyze and organize all your content into a logical and highly usable structure before even considering design choices. Once you accomplish this, only add complexity if absolutely necessary for your users.

Don’t overwhelm. The main role of a navigation bar is to provide your user with a choice. Overwhelming a site visitor with too many options impedes his ability to quickly make a choice. A navigation bar with five to seven channel items is sufficient organization for most websites. Plus, it fits nicely in the width of most website designs. Once you reach eight navigation options, you severely limit readability and usability due to width constraints.

Keep it simple. Use precise and recognizable words in the navigation bar. Refrain from long phrases that consume screen real estate by limiting each navigation item to 12 characters or less. Also, don’t use words that an average user wouldn’t completely understand. People are used to conventions; therefore, err on the side of familiarity. For example, use “Contact Us,” not “Get in Touch” or “Let’s Talk.” Finally, leave out unnecessary words that don’t add anything to the navigation item. Instead of “In the News,” consider simply “News.”

Actions on the right. Because people read from left to right, they naturally expect action links on the right-hand side of the navigation bar because moving right suggests moving forward. Use the left side for more informational links. The exception is the “Home” link, which as a backward action, should be furthest left.

Avoid Flash, for the most part. While Flash is generally frowned upon by usability experts, it presents aesthetic possibility. Flash’s biggest problem is that it typically is not implemented in a way accessible to screen readers and mobile devices. And while you don’t want to implement the actual navigation with Flash, you can get away with embellishing an HTML/CSS Navigation Bar with Flash to add visual interest and retain usability. One great example of this is the http://www.atlantabotanicalgarden.org.

One-Level Navigation Bars

Now that you know a few basic principles about creating a highly effective navigation, let’s learn from already existing navigation bars, including one-level bars, drop-down multi-level bars and mega drop-down bars. While you’ll ultimately decide which type of navigation works best for your website, we can show you what to do and what not to do depending on the type of navigation bar you eventually choose.

Apple vs. CNN

Experts have often heralded Apple.com as the gold standard in web design. The company has managed to distill everything it does into seven links, not including the logo and a search bar. It’s the epitome of simplicity and straightforwardness — from one of the largest companies in the world.

To its credit, CNN.com has to cover an entire planet of news, which makes it somewhat understandable that its site features a whopping 16 navigation bar links. While this navigation structure might work for CNN, it’s highly unreasonable for your average personal or business website. Cramming this many links in the full width of the website hinders readability by forcing a small font size and very little negative space on either side of a link. On a practical level, it’s a huge chore to read through every single link to decide where you need to go.

Drop-Down Multi-Level Navigation Bars

Drop-down menus became very popular at the end of the ‘90s during the dot-com boom because they allowed a user to get to any page on a website with one click. While that may seem like a huge advantage at first, the option presents several usability problems if done incorrectly. Many users find these types of navigation bars frustrating because they require precise cursor movements in order to successfully move through deeper levels. With this in mind, it’s best to reserve ample vertical and horizontal space for each link so that users can navigate without clicking on the wrong page.

Denny’s vs. Sony

Earlier this year, Denny’s.com new website design that was met with mixed reviews. On one hand, the website featured an innovative and technically complex browsing experience, but for many critics, it was overdone. The navigation bar features gimmicky JavaScript “enhancements” that actually slow the user down. For example, when you hover over a link with the cursor, it takes a fraction of a second for the animation to fully reveal its contents. Even that fraction of a second is slower than our mind’s ability to move forward.

Sony.com , sticking true to its understated style, provides a no-nonsense drop-down menu that gets the job done efficiently. Sony’s helper icons next to links specify parent and action links. Overall, Sony’s navigation bar responds instantly and manages to stay out of the user’s way with its subtle yet effective design.

Mega Drop-Down Navigation Bars

Mega menus are the newest design craze for large sites with a lot of depth and categories, such as Zappos.com and The White House website. These menus are usually only two levels deep, but the second level features a large panel complete with images or multiple columns of links. The benefit to these menus is that a site not only provides more links for the user, but also includes context and hierarchy within those links.

Target vs. Lowe’s

A mega menu’s blessing can also be its curse. Sure, these navigation bars give you more room to include links, but without proper hierarchy and context, mega menus can quickly turn into a sea of unnavigable options. Perhaps the best example of this is Target.com. It doesn’t take long to see that the company has crammed way too many links in its mega menu, without the proper hierarchy or context.

While it might seem convenient that a user can get to Target’s “Spice Storage” department directly from the second level of its menu, is that really necessary? Including links like this creates too much noise and doesn’t let the user focus on the important higher-level category items. Another big no-no is the sheer size of Target’s menu. Some of the mega menu panels exceed the height of a standard 13-inch laptop screen size. The last thing you want is to force someone to scroll down to use your navigation menu.

Target could learn a few things from Lowes.com website. Lowe’s has managed to provide a wealth of links with plenty of hierarchy and context. For every panel of links, the company has made the most popular and timely links stand out by elevating them to large blocks of thumbnail images.

By distinguishing the most popular items, Lowe’s makes it easy for users to access the links they’re most likely to click anyway. The thumbnail images also contribute greatly to context. By providing recognizable images for their most popular categories, the user doesn’t even have to read to understand which part of the menu he’s in. It’s akin to walking by Lowe’s brick and mortar store, and scanning the contents of each aisle to zero-in on your desired product.

Conclusion

When choosing a navigation bar type, start simple. Evaluate your content thoroughly and ask yourself what your users need to access quickly. More often than not, a complex navigation system is an indicator you need better content planning and organization. If you absolutely need to give your users so many options directly inside the navigation bar menu, follow the principles mentioned above to create an efficient and enjoyable experience for your users.

Recent Comments

Ebook Google Adsense