Programming Matters

My thoughts on all things technical, programming and otherwise

Why Silver Bullets Tarnish Over Time - New Paradigms Getting Thrashed in the Field

Filed under: Software Technology, Development Philosophy, Programming, General — by Steve Riley at 12:30 am on Friday, January 19, 2007

This concept really applies to much of life, however, computer science in particular.

Why is is that new ways of doing things can have remarkable success when they are at “the discovery stage” and end up being useful but disappointing in the field? Object oriented programming turns into spaghetti class interdependencies and deep hierarchies in day to day use. A giant leap forward and two steps back. Software patterns turn into misuse and abuse of the Singleton pattern and inappropriate shoehorning. Extreme programming becomes an excuse to write unmaintainable code that passes each and every unit test. Simplicity becomes an excuse to build things so bare bone as to become unusable. It seems like each new “promising technique” becomes troublesome once it goes mainstream. Still worth the trouble, but troublesome all the same.

You may find yourself scratching your head about why such issues aren’t discovered before they gain mass acceptance. Why when things are in “the R&D” phase they perform so well. Even when these same things are tested in limited circles on “real world problems” they continue to seem like the next silver bullet.

The answer unfortunately is as hard to swallow as it is simple. Early on the people developing and working with these new technologies are quite often some of the best in the field and the smartest guys out there. By the time the concept migrates to the other 90% of the coding world it finds itself slammed against the middle and trailing ugly end of the bell curve. These portions of the curve will often times misunderstand and misuse the new tools and techniques presented to them. It’s during these phases that the backlash usually kicks in. Guidelines and rules must be created to keep the average programmer from hanging himself with too much rope.

Often times new paradigms go through a few separate stages of development and acceptance. In stage 1 the really smart R&D types hit it. These people are actually great at creating new solutions that are both groundbreaking and elegant. Once these “conceptual entrepreneurs” have firmed things up it is ready for stage 2. In stage 2 the brightest of the “real world group” is brave enough to tackle integrating these concepts into production code. They become evangelists of the techniques they have had so much success with. Stage 3 involves more risk takers embracing the techniques advocated by stage 2. They pour over the concepts involved, grok them and integrate them into their code bases. It’s at stage 4 that the tide starts to turn. At stage four the middle of the bell curve is beginning to be pierced. The new mantra is gaining success. By stage 5 you have everyone accepting the new paradigm as “the way to go” based more on appeal to authority and peer pressure. At this stage a significant number may not understand the new techniques at all. They will advocate them but only graft them on top of their existing ways of doing things.

I like to think of myself as a stage 3 integrator. At this point things have hit my comfort zone and they are worth a try. I will do everything I can to understand a new technique, but by no means have created it or been the true dare devil integrating it at stage 2 into production code. Later down the pipe when I see these concepts misused and abused - I avidly follow the “shoring up” techniques to keep people from blowing body parts off my misusing a new technique.

No matter what the latest silver bullet appears to be, it is merely getting it justly deserved 15 minutes of fame during its integration period. These techniques will live on but the focus will move on. It’s important not to throw the baby out with the bath water. New techniques may disappoint after several years of growth - but in the end they often stay part of our process. Object orientation, design patterns, components, agile programming, the list goes on. Don’t forget that silver bullets are still bullets even when they tarnish. Just because a concept hasn’t completely lived up to its hype doesn’t make it a great and useful part of your process.

del.icio.us Digg Reddit dzone Live

How null breaks polymorphism: or the problem with null: part 1

Filed under: Development Philosophy, Programming — by Steve Riley at 12:19 am on Sunday, December 31, 2006

Preface: After talking to a number of people I realize that somehow I managed to misrepresent myself with respect to type systems in this article. This article is an attack on null, and to point out that null is still problematic in many (if not all) strongly typed languages. Many who prefer strong types and static types feel they are more immune to certain runtime type related inappropriate behaviors. I feel the ability to use null in most languages in place of an object breaks polymorphism in the most extreme possible way. I am in no way implying that dynamic or weak type systems are better at handling these issues. As for me - I prefer languages with stronger compile time type checking.

This is a difficult concept for a lot of died in the wool strong staticly typed OO programmers to fully digest and accept. There is an immense sense of pride in the strong staticly typed community about the fact that unlike untyped languages, strong staticly typed languages protect them from run-time errors related to type mismatches and unavailable methods. Unless you do a dynamic type cast (frowned upon heavily) you should be safe from at least this broad class of error. But they are wrong. Type mismatches and unavailable methods occur all the time in strong staticly typed languages. And it is a common form on runtime surprise. What causes this common problem: the null which can be used with any type yet breaks polymorphism with every single one.

Unlike types in loosely typed languages the null is guaranteed not work polymorphicly thus requiring a specific type check. Did I say type check? But I have no dynamic casts, I’m following all the rules. Why should I have any type checks? Checking for null is a type check. It’s the mother of all type checks. Instead of having code littered with conditional checks for types and branches based on those types (an OO worst practice) you have code littered with conditional checks for null having branches based on whether it is null or not.

Now granted, life in a world without nulls isn’t easy and I use null often myself. It’s too tempting to use this magic value instead of writing code more appropriately. Some will mention the null object design pattern that “does nothing” with pride as a solution to this problem. These are in fact polymorphic. The only issue is that null objects only work in special circumstances. If you really don’t have a thing you shouldn’t be pretending you do and having it do nothing. You should have a separate chain of logic that doesn’t use the thing you don’t have.

I have talked to a number of coders that think that removing null from a majority of their code would be difficult to impossible. An difficult to grok kind of problem perhaps but intractable, no. Consider the following function:

int DoSomethingSpecific( int x, int y, int z);

Now I will asked the magic question. Do you check z for null in case you don’t have it? (or x or y for that matter). In C++ that isn’t even possible because it’s passed by value. If an appropriate default exists for z you may set z to that default before it is called. However plenty of times that concept isn’t the one you are looking for. What do you do? You simply write another function that doesn’t take z.

int DoSomethingSpecific(int x, int y);

Now let’s use generic objects:

int DoSomethingSpecific(object x, object y, object z);

int DoSomethingSpecific(object x, object y);

Using this approach doesn’t break polymorphism. You only call the appropriate function when you actual have the parameters in question.

Of course this brings us back to a more fundamental problem. The concept of null is so burned in to most OO languages that visual inspection of code reveals that most any object should be nullable and thus checked for null. C++ has a way around this with references that can not be null or checked for null (yes I know many compilers will let you assign null but you make clear your intent in using a reference:it should not be null). The C++ reference being used this way is at best an afterthought in the language. These references can’t be reassigned and thus are limited to incoming parameters on function calls in many cases.

Even if you create a class which prohibits non-null assignment casual readers of your code in many languages will miss this fact and do gratuitous checks for null anyways; defeating much of the purpose. The key is supporting syntax that makes clear the fact that an object can not be null. But that discussion is for another day.

In part two of this article I will explain many of the misconceptions and supposedly intractable issues related to removing null. It’s not as hard as you might at first think. I will also further explore the syntax issue, or without language support at least a possible naming convention.

del.icio.us Digg Reddit dzone Live

The D Programming Language - a Pleasant Surprise

Filed under: Development Philosophy, Programming — by Steve Riley at 7:20 pm on Thursday, December 21, 2006

From the D website,

“D is a systems programming language. Its focus is on combining the power and high performance of C and C++ with the programmer productivity of modern languages like Ruby and Python. Special attention is given to the needs of quality assurance, documentation, management, portability and reliability.

D is statically typed, and compiles direct to native code. It’s multiparadigm: supporting imperative, object oriented, and template metaprogramming styles. It’s a member of the C syntax family, and its look and feel is very close to C++’s.”

This language first piqued my interest about 2 years ago. At the time I saw it as a great idea but wanted to wait to see if it would catch on at all. Since then I have been hearing about it from time to time and finally decided it was time to take a close look. And I’m really glad I did.

This article mainly compares C++ to D from the perspective of what C++ is missing that D has. If you haven’t read my last article about what I love about C++, you’ll probably want to do that first.

Favorite additions C++ is missing:

1. Garbage Collection – this is almost always faster and more efficient use of runtime cycles and the developer’s development cycles; a total no-brainer in most cases. You can do manual memory allocation when you think you know better.
2. Nested functions – The nested function has full access to the local variables of the function it is nested in. Being able to break up large functions in the scope of the calling function makes things sensible and clean.

3. Inner (adaptor) classes – Nested classes support access to the variable scope of the calling class. Use a static nested class to prohibit access.

4. Properties – Being able to use the syntactic sugar of values with underlying functions makes good sense. Why shouldn’t value be able to be abstracted out and have underlying functions?

5. foreach – cycle through all the elements and let the compiler decide the most efficient way.

6. Implicit Type Inference – this is coming to C# soon as well. It’s nice not to have to specify the type when it is already specified by what it it’s being set equal to.

7. Strong typedefs – This one is especially nice. You want to create a typedef that isn’t considered the same as the original as function signatures are concerned. C++ forces you to create a class to do this thing that should be simple.

8. Contract Programming – puts your in and out contract constraints into the code in a clean, consistent way. The compiler can now better optimize and inherit contract constraints.

9. Unit testing – makes it simple to include unit tests directly within each class to validate it.

10. Static construction order – Being able to explicitly define in what order static objects are created in shouldn’t be too much to ask. I’ve seen more than a few projects bit by this in C++. In C++ you have no guarantee when statics will be initialized. Interdependencies in C++ can leave you shaking your head as you unravel the evil.

11. Guaranteed initialization – you have to explicitly say that you want no initialization for performance reasons. 95% of the time not initializing is a mistake – let the compiler do it for you.

12. No Macro text preprocessor – the source of so much potential ugliness – gone!

13. Built-in strings – sure the STL has them but being built in to the language certainly seems like a reasonable way to go.

14. Array bounds checking – built in support for checking bounds on all arrays. Turn it on or off – very nice. How many times in C++ have you wished you could flip a switch and make sure nothing was going out of range at runtime. Maybe you should use the STL all the time, but I don’t know anyone who doesn’t use built in arrays at least some of the time.

Nice to haves C++ is missing:

1. Function delegates – a convenient way to point at member functions.

2. Resizable arrays – being built in to the language is the way to go for such a basic operation.
3. Array slicing – another minor convenience.

4. Associative arrays – an STL plus that is built in to the language.

5. String switches – its definitely convenient at times.

6. Thread synchronization primitives – with the prevalence of threads having basic sync support in the language is a timesaver.

7. Typesafe variadic arguments – gets around C++ clunky access to an unknown number of arguments.

8. Documentation comments – a consistent way of documenting code.

9. Try-catch-finally blocks – I’m still not a big fan of exceptions. I blame it on my background in game programming.

There are more advantages over C++, but I just wanted to mention a few of the highlights.
For a complete comparison of D vs. C, C++, C# and Java go to the D website’s comparison

Doing a little deeper digging under the covers I found a few things I didn’t like - and one was a deal-breaker.

First of all - all classes in each module have access to each others private data. There is no way to turn this off. This forces a loss of encapsulation - a concept i don’t agree with.

Unfortunately the dealbreaker that would make me prefer Managed C++ from Microsoft over D is the lack of interop with C++. D is very proud of it’s simple interop with C. But unlike Microsoft’s Managed C++, D requires cumbersome mechanisms to interop with C++. This is extremely unfortunate and leaves me wishing the C++ standards commitee would make C++ over time more like D.

All in all, D appears to be a very promising language with much to offer. With more straightforward support for coexisting with C++, I would think it would be a shoe-in to eventually gain mainstream popularity. It seems very suitable for performace based coding across multiple platforms. It certainly might be possible to use an auto-wrapper generater like SWIG to bridge C++ libraries to D.

I will admit that I have only given D a laymen’s overview. I haven’t coded at length in it yet. However I think I’ll end up coding lower level constructs in C++ and using C# for higher level garbage collected code.

In my mind D is a pleasant surprise but doesn’t quite fit the bill. I would love to see more convenient interfacing with C++ to the extent that such seemless interfacing is feasible.

del.icio.us Digg Reddit dzone Live

Why I Still Love C++

Filed under: Development Philosophy, Programming — by Steve Riley at 3:41 pm on Sunday, December 17, 2006

This article is actually a precursor to my article on the D programming language. I lay the foundations for my interest in D by talking about what I love about C++.

I have been coding in C++ for a long time now. Even though from the start the language had certain warts I didn’t like, certain aspects of it were irresistable to me and made it top dog.

1. An expressive language - Once learned, few languages are intrinsically as expressive as C++. It has a million nuances (like the English language) that somehow make expressing exactly what you want to say seem easier than other languages. Having true const support, multiple inheritance (in those rare circumstances where it makes sense) and references that can never be null are just a few of the unqiue ways that it supports saying exactly what you mean. Even if saying it sometimes may seem to the novice a little verbose and complicated. How many times have you checked for null in a Java or C# program and gritted your teeth knowing that the value should in fact NEVER be null. In C++ once you define a reference you have made a contract with the compiler expressing your intent. The language spec will not let you check for null.
2. Multi-paradigm - A Even though 10 years ago I jumped on the OO paradigm in a big way, single paradigm language never could quite cut it. Even though generics exist in other languages, few are as strong as C++. Simpler, yes. Powerful, no. Support for objects and generics is a must in my book. Supporting a simple functional style is important as well. Some concepts in the real world are both functional and freestanding. Granted - it is rare that I use freestanding functions, but there are times when they can reduce coupling in a big way. In object-insistant languages you are forced to wrap these guys in a class to “objectify” them. This is silly at best.

3. Supporting low level constucts - someday this will go away. But doing a good amount of 3D coding I still like to be able to optimise things pretty tightly sometimes. The day has come and gone when assembly or flat C was a must in this category. But C++ is still very useful in this way.

4. Huge opensource support - let’s face it C & C++ are still the reigning kings here.

5. Ability to interface with C & C++ effortlessly - given this “isn’t quite fair”. Of course C++ works well with C and C++. This is important because of #4. Many langauges support clumsy bindings to C++ and C and this adds a layer of inconvenience to “get at” the wealth of opensource code already out there.
Many other aspects of C++ have been absorbed by other languages. I like the availibility of generics. Being able to force strong typing when it is important is key to me - like const correctness. You know exactly what you want. Being able to also use generics and avoid strong typing is equally important. Your intent is clear. C# is a close runner up for me in many respects - the two main things that makes it difficult to fully embrace include clumsy bindings with C++ and its lack of ubiquity on other platforms. The thought of writing a large body of code in C# and then having to rewrite it for say the Wii or a handheld makes me cringe. Mono may help, but as far as I’m aware the jury is STILL out on how widely accepted it will be.

For the certain types of coding C++ is still essential to me. It’s a love hate relationship. I look forward to the day when everything I enjoy about C++ is in a language that removes the things I truly dislike.

In this article’s follow up I’ll talk about the D programming language. You might be pleasantly surprised by what it brings to the table. There I will mention the things that D does right and C++ clearly does not.

del.icio.us Digg Reddit dzone Live

Scenegraphs and Openscenegraph for 3D Software Development

Filed under: Development Philosophy, Programming — by Steve Riley at 10:47 am on Wednesday, December 13, 2006

I get a lot of questions about scenegraphs and 3D development. Many people either aren’t sure what they are or have misconceptions about them. For this article I will explain the concept of scenegraphs from the standpoint of OpenSceneGraph, an amazing opensource scenegraph inspired by the granddaddy of the modern scenegraph - SGI’s Performer. For purposes of this article I will use the terms OpenSceneGraph and scenegraph interchangeably in many places. It is beyond the scope of this article to explain all possible permutations of the scenegraph concept.

Standard graphics objects and a spatial graph

At their heart, scenegraphs are nothing more than a graph of nodes representing the spatial layout of a 3D scene while encapsulating primitive graphic characteristics in objects. This sums up the two greatest strengths of the scenegraph - spatial organization for culling and encapsulating graphics characteristics in a data format.

Standard graphics objects

Why is this such a great thing?

When model data is read into memory to be utilized in OpenGL or Direct3D using non-scenegraph solutions, proprietary formats are often used that are suited to the exact needs of the application. While this isn’t a bad thing in many respects, it makes it difficult to impossible to grab libraries and pieces of code you need from sources and use them without significant modification. Many times graphics programmers will see a technique they like and be forced to dig into the code and rewire things to work with there data structures. Scene graphics enable users to create code that works with the basic object primitives out of the box. This can quickly lead to a huge amount of code that is available for just about any graphics technique or purpose, ready to use out of the box.

Many ask, “What if you choose the wrong data format for these objects? Why is one superior to another? Scenegraphs choose a format that encapsulates the lowest level graphics primitives and states into unique objects. These objects are combined in the graph to visualize anything that can be procedurally generated in a lower level graphics API. Various graphics states such as material attributes, blend modes, textures, etc. each have a corresponding object that is applied when the scenegraph itself is drawn. Because of this flexible “standardizing” of basic graphics operations it is both possible to represent most anything the graphics sub-system can create as well as allowing new objects to be built to utilize them in a standard way.

Culling of the scene, optimization, transform stacking, billboards, LOD management, texturing are all able to have powerful, simple and standard code to manage them.

A spatial graph

By setting up the scenegraph as a spatial non-acyclic graph culling can be more easily managed as well as graphics state. A node with children can set the state for the children without the need to redundantly specify it in the children. A scenegraph is traversed as it is drawn and state is popped and pushed to both minimize setting state without need and to simply the organization and management of the scene as a whole. Scenegraphs are often used in a complimentary fashion to other more “automatic” and hardboiled culling and spatializing strategies such as bsp nodes. I have seen many scene graph systems over the years that use bsp structures at various levels in the scene graph strictly for collision detection. The main thing about this approach is flexibility. Scenegraphs can build very sophisticated scenes in a way that is logically consistent, as simple as possible and easy for the (relative novice) to learn and understand.

What scenegraphs don’t do

Scenegraphs are very powerful but not much easier to learn than the underlying graphics API’s themselves such as OpenGL or Direct3D. They are not “game engines” that the novice can pick up and with little understanding create 3D scenes from.

You may ask yourself what the point is. The point is to not reinvent the wheel. The scenegraph is so flexible a tool because it doesn’t try to hide capabilities or oversimplify them. However, it mirrors the kind of system one would generally have to write themselves through much trial and error to achieve the same functionality. Many of these concepts are “classic” at this point. OpenSceneGraph, for example, is chocked full of appropriate and useful design patterns. Performer used these design patterns long before the term became a buzzword. SGI spent a lot of time and money developing Performer, and like OpenGL, the results were impressive. Most modern scenegraphs are directly influenced by Performer and can be seen at their core to be “Performer-clones”. Those who try to build fast and flexible graphics solutions will eventually come to something close to a scene graph on their own eventually. But why reinvent the wheel. With solutions like OpenSceneGraph already waiting……

The choice seems obvious

Use an existing scenegraph solution. You wouldn’t try to write your own graphics API in today’s world. In just the same respect you shouldn’t try to think you’ll create a better scenegraph. If you need a fast, flexible graphics solution and use one of the scene graphs out there today. I personally prefer OpenSceneGraph, something I mention often. It has a huge user base and an unmatched set of features for an opensource project. Other commercial options include Gamebryo or Renderware.

In short the benefits of using a scenegraph are numerous. A reusable, flexible and fast object system and a graph structure for hierarchy give it a strong user base and an ever expanding collection of useful code.

The next time you think about doing a project coding in a low level graphics API think about bumping up to a scenegraph. They sit nicely on top of the underlying graphics API’s and make your job much simpler at the end of the day by allowing you to focus on the problem at hand and avoid reinventing the wheel.

del.icio.us Digg Reddit dzone Live

Next Page »

 

The Internet Marketing Experts at Adventual.com
hsbc direct credit card best way to get rid of credit card debt instant online credit card approval bad crdit american express airline credit card shell gas credit card online payment cash back credit card comparison low interest apr credit card search for best credit card deal bp credit card payment household bank credit card company american express credit card status providian real rewards credit card credit card and 0 apr introductory credit card consolidation services shell select credit card card credit gas mbna credit card kinkade washington mutual credit card company credit card consolidate non profit instant approval credit card no credit shell gas credit card application mbna american credit card card consolidation credit debt equity home no chase credit card services 800 number citibank rewards credit card credit card apr 0 sears credit card pay debit consolidation credit card home loan car loan chase credit card account access accept credit card no merchant account consolidate credit card debt nj bank america credit card account fixed rate credit card offer apply for a wal mart credit card financial help for credit card debt household bank credit card services.com credit card secured online credit card merchant account consolidate credit card debt near fargo nd account card credit debit merchant uk instant approval credit card application racetrack gas credit card how much is a prepaid credit card best airline rebate credit card apr balance transfer credit card credit card cash back offer credit card free companion ticket offer wal mart credit card security online discover card instant approval credit card pay pal update credit card best deal credit card citi shell credit card household bank credit card complaints search sears credit card services credit card processor small business shell credit card pay my bill card consolidation credit debt service student credit card 10 apr apply for a 0 apr credit card definition of low interest rate credit card status of my wal mart credit card hsbc kawasaki credit card capital one credit card services credit card debt reduction consumer federal gov american express credit card website card credit prepaid student mbna credit card net access want to eliminate credit card debt legally how can i best eliminate credit card debt credit card processing service credit card citibank low interest rate credit card for balance transfer accept credit card with no merchant account small business credit credit card for start up credit card terminal system secured credit card with bad credit online credit card approval at www.rapidapprove.com working credit card numbers poker searchers.com q credit card debt management household bank visa credit card credit card cash back benefits bank washington mutual credit card online credit card processing companies unsecured credit card with $5000 limit apply for aspen credit card online aaa credit card small business instant decision credit card poor credit bank of america special offer credit card how to deal with credit card collectors prepaid credit card eu mandee credit card application card credit debt elimination pay credit card online compare credit card apr apply for low interest credit card apply card credit online chase credit card badcredit unsecured credit card instant approval chase credit card balance transfer master card credit card application kohls credit card application credit card online ordering merchant account first national merchant credit card low interest credit card offer sears credit card account access chase credit card services phone numbers household bank credit card customer service mbna credit card payment online free isp trials no credit card required orchard bank credit card site alliance leicester credit card cash back apr credit card offer instant online approval for major credit card discover gas credit card canadian credit card application credit card company practices pay an orchard bank credit card online how to attain an unsecured credit card with bad credit eliminate credit card debt timetable wireless credit card processing terminal cross country bank online application for a credit card transfer balance credit card rebuild credit card 0 apr horizon secured credit card credit card machine talento cheaper uk credit card low interest rate gas credit card credit card with 0 apr transfers captial one apply for free credit card online visa credit card with low fixed apr capital one credit card of secured small business credit card texas credit card counseling guaranteed uk credit card card credit processing consolidate credit card debt n exxon mobile gas credit card sears online credit card payment credit card and debt and low interest unsecured master credit card for bad credit people federal credit card fraud apply for gas credit card name change notice to credit card company application card college credit student tranz 350 credit card machine free credit card business card consolidation credit debt free zero percent apr on balance transfers credit card low apr on credit card texaco shell credit card hsbc credit card customer service department apply for credit card bad credit ok being sued for an unsecured credit card ezcardinfo credit card account u.s. credit card services chase credit card reward redeem wal mart refund to credit card credit card debt help in cleveland ohio free live cams no credit card trusting companies that deal with credit card debt new credit card rate or special will not accept my credit card credit card for college student with bad credit aspire credit card pay online walmart credit card application how to pay my citi credit card online hsbc co signed credit card policy credit card processing no application needed no sign up fee america west airline credit card bank of american credit card grant to pay credit card company all credit card for 0 credit card bank of america credit card rate 2007, credit card, 0 percent, 15 months business credit card online application chase universal credit card need a pin for my bank of america credit card merchant credit card processing county governments prepaid credit card for european people resident credit card balance transfer 0 for life finding a credit card merchant for adult business student credit card visa fraud prepaid credit card hacking t460 credit card machine instant approval unsecured credit card bad credit no credit consolidate credit card debt non homeowner merchant accounts credit card services 800 credit card debt college student credit card application how to eliminate credit card debt card consolidation credit loan student credit card low rate credit card 0 balance transfer no transfer fee cash back on a credit card deal "0 apr" "credit card" "no transaction fee" citibank credit card payments credit qualify citibank credit card approve credit card airline miles cruise unsecured visa approval credit card bad consumer credit card debt counseling business credit card 0 interest for 12 months bad credit card unsecured gauranteed approval consolidate credit cards to one card online credit card company providian bank credit card login secured credit card for business chase prepaid credit card aspire credit card co best rebate credit card credit card 0 transfer balance 12 months free interest the best credit card international student credit card unsecured bad credit card or loan free credit card debt consolidation refinance loan credit card 0 apr no annual fee fixed rate low rate credit card providian credit card credit card 0 interest for a year no annual fee travel reward credit card how can i consolidate credit card debt card credit reward zone debt debt counseling credit card american express small business credit card card college credit mbna student cant pay my sears credit card jerrys home center credit card offer virgin credit card uk providian + credit card credit card no annual fee low rate credit card visa interest 0 best rewards credit card best card credit deal uk chase visa credit card account access chase credit card services company in san antonio, texas sony gift card offer credit chase visa credit card services low cost credit card processing online simular to paypal consolidate credit card debts approval card credit instant online visa chase credit card ost services credit card deals cash back student loan consolidation,credit card debt,personal loan, non profit organization to consolidate credit card credit card machine loans household bank credit card make payment on line free porn no credit card required capital one credit card zero apr imagine 300 dollar unsecured credit card online purchase with no credit card small business credit card machine 18 month 0 credit card wireless credit card terminal premier bank credit card instant use online prepaid credit card number credit card instant response credit card merchant paper chase credit card login credit card application low apr best deal credit card for students in uk gas credit card rebates low interest rate visa or mastercard credit card hypercomt7e credit card machine ua airline credit card hong kong credit card rebate offer pickens sc non profit credit card counseling best credit card offers visa card for people in ontario wuth bad credit accept my visa platium credit one bank card 49 fixed rate credit card sears credit card dept need to check on my credit card aspire credit card imprint machine manual how to deal with credit card co automatic payments household bank scam credit card citi credit card account lookup credit card offers bad credit low apr balance transfer balance transfer on credit card how do i consolidate credit card debit credit card counseling services of la online credit card processing services rewards cash back credit card tadalafil search.com q credit card debt management credit card terminal graphic bank of america government credit card victim of credit card fraud student visa credit card low fixed rate credit card apply online for a citgo credit card report lost wal mart credit card cash back credit card home depot orchard bank credit card sign on orchard bank credit card online payment direct reward credit card consolidate credit card debt in minnesota poor credit unsecured credit card applications credit card low apr transfer 5000 credit card offers low interest low intrest credit card consolidate credit card fraud penalties bank one credit card offer discover redit card existing account free credit report with no credit card required wal mart credit card safety technology apply for radio shack credit card online consumer credit card dept settlement consolidation credit card 0 balance transfer 16 monthns citi bank credit card account instant online credit card approval bad credit citgo credit card offer best rate c a credit card compare overseas credit card fees capital one credit card stories from hell travel credit card low exchange rate college student apply for credit card chase credit card reward program credit card "quick response" 0 percent interest capital one need to pay household bank credit card card credit debt help online pay pal without saving credit card best credit card for people with bad credit card credit debt eliminate companies that consolidate credit card debt uk credit card low interest rate low interest credit card consolidation web credit card processing hsbc credit card login card credit pal pay gm credit card account accept credit card payments instant approval student credit card chase credit card with 0 interest until oct 2007 credit card terminal tranz 460 sears credit card payment capital one credit card payment credit card rental cash back free porn videos no credit card college student credit card debt uk credit card for people with bad credit checkstatu of credit card at orchard bank credit card online instant approval business reward credit card apply for a student visa credit card business card credit offer mbna credit card online credit card offers 0 balance transfer shell reward credit card loans to consolidate credit card debt capital one secure credit card credit card airline points chase credit card pay phone number for providian credit card card credit online processing qoclick what is the email address for chase credit card services visa credit card offer orchard bank card credit report secured credit card citi pay shell credit card on line shell citi credit card cash back visa credit card no annual fee household credit card payment low cost credit card processing online similar to paypal business credit business credit card credit report no credit card porn credit card processing with no merchant account credit card application uk airline card china credit best rate for student credit card new credit card offers for people with bad credit zero apr and zero balance transfer fee credit card credit card company judgment shell gas credit card payment juniper bank credit card online application sears credit card insurance hsbc credit card accounts citibank platinum select credit card aarp credit card services from chase small business credit card "guarantor" visa card credit application mbna platinum plus visa credit card capital one premier credit card fake credit card numbers credit card balance transfer credit card companies with 0 interest back best card cash credit hsbc credit card disclosure bad credit card in canada compare reward points credit card open source or php online credit card processing software at t credit card citi card free porn no credit card needed credit card fraud alert low or zero interest credit card balance transfers credit card consolidate loan online help me pay my credit card debt apply for low interest rate no fee credit card bank of america credit card payment center credit card student college less than perfect credit small business card guaranteed credit card - unemployed - student help getting out of credit card debt american express credit card payment applying for a credit card instant approval free music downloads no credit card required mbna credit card services orchard bank credit card payment citibank credit card cash back credit card debit counseling best lowest credit card rate which credit card the best rate hsbc india credit card nurit 3010 credit card terminal bank of america credit card online payment credit card merchant processing credit card debt consolidation in omaha ne accept credit card no merchant acco how to find credit card companies phone numbers sears credit card pay a bill credit card account balance all bank reward credit card point how do i get help with credit card debt citi credit card customer service small business hosting credit card cingular wireless credit card machine prepaid credit card uk cheap small business credit card processing company non for profit credit card consolidation higher credit card limit 0 apr washington mutual credit card check status of application bankruptcy credit card debt consolidation yamaha credit card application chase card services credit card pay hsbc credit card online credit card fraud kevin trudeau search credit card counseling sears department store credit card credit card counseling service credit card cash back on health care credit card terminal software capital one credit card activation low apr credit card transfer balance racetrac gas station credit card credit card balance transfer no fees 0 comfort inn credit card deal consumer credit card debt unsecured credit card for bad credit customers apply for visa credit card online how to get a credit card college student poor credit card application 0 interest orchard bank / credit card uk credit card debt help how to accept credit card payment via the internet credit card company philippines apply online credit card application citibank government credit card credit card low fixed rate account services merchant credit card processing no fee balance transfer credit card mexico credit card processing companies non secured credit card college student credit card low interest rate citi bank credit card sign on kroger 0 interest credit card citizens advice bureau statistics student debt credit card cash back, credit card list of free credit card numbers pay my washington mutual credit card accept credit card for my business true facts about credit card fraud limit for credit card for college student find a credit card for people with bad credit procedure for credit card debt elimination instant online approval credit card credit card counseling credit card account theft debt consolidation credit card toseeka instant approval redit card household bank credit card offers card credit discover offer bank of scotland credit card major credit card compare rates credit rating small business credit card companies bad credit ok airline miles credit card premiere pass credit card transfer balance 0 interest business card credit processing small lowes credit card account american express clear credit card discover credit card payment prepaid credit card mastercard world point from reward credit card all banks uk credit card company credit card business industrial 5k bad credit no credit check unsecured credit card credit card fraud catching cash back business credit card best deal credit card balance transfer online credit card applications instant decision orchard bank credit card activation phone number discover credit card services credit card with low intrest rate capital one credit card billing discover credit card account credit card terminal leads household bank credit card pay bill online student loan debt consolidation credit card money bank servicing site for pay pal plus credit card college student credit card with low apr credit card with cash back credit card counseling debt consolidation credit card no anual fee low interest rate pay washington mutual credit card bill credit card with low rate worldwide reward credit card bank credit card offering free airline tickets walmart online credit card application credit card application aspen credit card company zero interest rate credit card bank credit card consolidation credit card debt negotiation credit card company hacks mbna ncl credit card bank of america instant approval credit card visa credit card cash back help in getting out of credit card debt credit card zero percent balance transfer life of the capital one credit card activation phone number credit card debt and help accept account card credit merchant no retail chase credit card payment line shell credit card online bill pay goodyear credit card payment best secured credit card card credit debt patriot relief sears credit card payment center instant approval of credit card online credit card processing low rate credit card with best rate bad business credit card need a unsecured credit card with bad credit credit card offer balance transfer best credit card with reward apply instant use credit card today credit card balance transfer offer credit card acceptance for small business unsecured credit card approve no credit check credit card online application with instant approval small business association credit card low interest credit card transfer credit card to accept paytel calld banks unsecured instant credit card approval success with instant reward small business credit card low apr credit card rates small business credit card australia household bank credit card payment online bank of america credit card center low intrest bad credit card areyou accept a credit card credit card fraud punishment free credit report no credit card required credit card consolidation debt loan relief providian credit card offer aaa credit card application accept paypal payment must have credit card best deal on credit card balance transfer low cost low interest credit card business card credit offer small redit card appilications washington mutual credit card status citi card credit card credit card processing restaurant credit card offers with 0 interest hsbc redit card pay online explanatio analysis on credit card fraud small business credit card processing with ok credit apply in-store credit card instant approval small business credit card comparison accept card credit providian national bank credit card accept credit card nutrition unsecured credit card application online bank card credit household secured best deal on business credit card credit card 0 apr 16months apply for a redit card credit card with gmc 0 apr until oct2007 alaska airlines credit card application online help get out of credit card debt valero gas credit card first premier bank gold credit card deal best credit card companies card chase credit online government help with credit card debt best gas rebate credit card imagine credit card company visa credit card payment "car loan" more than price "cash back" pay "credit card" credit card debt consolidation loan wells fargo mbna co uk credit card instant approval for unsecured credit card approval aspire credit card in columbus ga customer service number accept credit card phone small business credit card with rewards reward points credit card best credit card for buying gas my household credit card household bank silver genus credit card debt help credit card airline miles conversion accept credit card payment on line credit card 0 balance transfer 12 months shell credit card accountonline aspire credit card company paypal accept credit card card college credit debt in student credit card 0 balance transfers magnetic reader credit card fraud how to card chase credit services business airline miles credit card looking for aspire credit card washington mutual personal credit card student credit card visa united credit card monthly payment calculator top 10 free credit card debt relief cash back avings credit card guaranteed unsecured credit card no checking account apply for business credit card small business credit card offer credit underwrite card citibank criteria no annual fee no application fee low rate credit card apply for source credit card online guaranteed unsecured credit card bad credit consolidate credit card debt comparison don cooper credit card fraud ohio visa credit card with cash back capitol one credit card services mbna credit card uk american express gold consolidate credit card debt bank one credit card services card consolidation credit debt pittsburgh fina gas credit card real credit card numbers cell phone credit card processing photo credit card 0 transfers accept credit card transactions visa check card for people with bad credit credit card miles reward chase credit card online services merchant credit card verification credit card 0 apr transfer balance prepaid credit card anonymous reasons for a percentage rate increase on a credit card south african credit card machine best credit card to rebuild credit wireless credit card terminal parts richard d eliminate credit card debt national city, student visa credit card what is the best credit card for airline miles hack redit card numbers credit card bad credit unsecured visa shell credit card accounts wal mart credit card account what is a good credit card interest rate how do credit card companies deal with write off debts largest cash back bonus credit card credit card cash back on health care rebate free online credit card debt consolidation quote capital one credit card in uk small business cash advance credit card sales bank of america credit card reward toward to airline uk cheap credit card best credit card after bankruptcy verizon visa credit card account online american express credit card cash back reward capital one credit card service get prepaid credit card best credit card interest rates compare visa reward credit card rates credit card travel reward apr card college credit low rate student credit card account access