Tuesday, August 23, 2005

Web Databases vs. Web Services/API's

It seems like everyone and their mother is talking about Web 2.0, mash-ups, and Web Services, lately. On the same day that Mike Weiksner posted this article to my del.iciou.us "for" bucket, I was reading a BusinessWeek article called "Mix, Match, and Mutate". Today, News.com published an article entitled "From Web page to Web platform". Perhaps the most lyrical and eloquent rhapsody around this idea appeared in the most recent issue of Wired, in an article entitled "We are the Web". The passage begins:
These are safe bets, but they fail to capture the Web's disruptive trajectory. The real transformation under way is more akin to what Sun's John Gage had in mind in 1988 when he famously said, "The network is the computer." He was talking about the company's vision of the thin-client desktop, but his phrase neatly sums up the destiny of the Web: As the OS for a megacomputer that encompasses the Internet, all its services, all peripheral chips and affiliated devices from scanners to satellites, and the billions of human minds entangled in this global network. This gargantuan Machine already exists in a primitive form. In the coming decade, it will evolve into an integral extension not only of our senses and bodies but our minds.
Later he remarks:
By 2015, desktop operating systems will be largely irrelevant. The Web will be the only OS worth coding for.
This vision is similiar to previous pipe dreams, like The Intergalactic Foundation (which I, in my college years and fresh-out-of-college years, happened to have been a big believer in), except it doesn't seem like such a pipe dream anymore. The web has taught us a great deal about what it is necessary to make a truly "intergalactic" web platform work, and if we look at the evolution of pipe dream towards realistic vision we see a trend towards increasing simplicity of the model. SOAP was a revelation because it looked like CORBA reincarnated on a more lightweight web substrate. In its first incarnation it did not require any specialized software other than a web server and xml parser, which are much easier to come by and simpler beasts than CORBA ORB's. Unfortunately, SOAP seems to be following the path of CORBA in a spiral of increasing complexity towards irrelevance. For that reason, REST appears to be the architecture of choice for these emerging "web service" applications.

The common thread through all of these discussions about distributed computing platforms is the notion of API's, and so the RPC (remote procedure call), in some form, to this day remains the key figure in the vision of Web 2.0. But what I think has been absent from these discussions is consideration of a DBMS for the web. For decades now, some sort of DBMS has served as the backbone for the vast majority of "data-driven" applications, which happens to comprise virtually 100% of corporate IT systems and "business apps". The reason is simple: a standard, consistent, elegant data management platform is not a trivial undertaking, and yet is a requirement for all such applications. For most software developers, developing these applications would be unthinkable without a DBMS, usually an RDBMS.

Databases often serve as an integration point between several applications that share the same data (in fact, this was one of the primary motivations for the development of the first database management systems). Sometimes the quickest way to extend the functionality of an existing application that you've inherited, is to go around the code and look at the database and build a new app directly against that. This is frowned upon but fairly common, in my experience, often because the existing code either doesn't provide an API, per se, or the API is deficient in some way (functionally, or non-functionally). Still, the philosophy that one shouldn't access a database directly, and should go through API's instead, persists and this is still the way many systems are integrated. What are the reasons for this?

Well one reason is that you want to protect your database from "corruption". There are often complex rules surrounding how records get updated that cannot be fully expressed through the "data integrity" machinery of the DBMS, and so some sort of API call (which might be a stored procedure in the RDBMS) backed by code which enforces these rules is required. Furthermore, the space and shape of update operations is usually pretty well understood and to some degree fixed. The application designers can usually map out the majority of useful write operations and provide API calls, or end-user functionality, which accomplish them. Not so with the reading of the data. Application developers often find that users need to be able to generate "reports" about the data that were not foreseen. There are myriad possible ways that a user might want to filter, sort, count, or see relationships amongst the different data elements, and the chances of predicting all of the ones users will want ahead of time is slim. Thus the robust market for reporting and OLAP software that hit the database directly, as well as the trend of building data warehouses - large uber-databases with data culled and integrated from multiple systems across an enterprise, to which OLAP software is then applied.

Another reason for the persistence of this API-oriented thinking, I think, is that there is still engrained in our collective software engineering unconscious this notion of the importance of "encapsulation". We were taught the importance of writing, and writing to, abstract interfaces in our software development, and to treat the implementations of these interfaces as "black boxes" that cannot, and should not, be seen into. It was thought that encapsulation could not only provide greater security, but also prevent users of software libraries from building dependencies in their systems on the parts of the software library most likely to change (the implementations vs. the more stable interfaces), causing the client system to break. While this interface vs. implementation concept has a lot of merit when developing software frameworks, from a practical standpoint its value is negligible in the context of pure read access of data, particularly when the database software and database schema of a production application is the thing least likely to change. Even when the schema does change, this usually requires a change to interfaces representing data anyway since there is usually a straight mapping from database schema to these interfaces. The open-source era has also taught us a lot about the relative value of this black-box notion of software components. Contrary to our prior intuition, in a globally networked environment with constant, instant, and open communication, lots of eyes looking deep into software can increase its safety and reliability. Our ability to respond to changes in software components which break the apps we build on top of them is also enhanced.

A Case Study

Recently, I wrote a Greasemonkey script that reinforced my belief in the need for a web database service for Web 2.0 apps. While it was a fairly trivial script that I wrote simply to tinker around, it highlights some of the shortcomings of a purely API-centric approach to these new cross-web applications. Basically what the script does is replace the photos in the slideshows of city guides on the Yahoo travel site with Flickr photos that are tagged with that city's name and have been flagged by the Flickr system as "interesting".

Well, the first problem is that the Flickr API does not give you a way to retrieve interesting photos. They have a search method that allows you to retrieve photos with the tags you specify, but "interestingness" is some special system attribute which is not modeled as a tag. In a situation like this, where the method hard-codes a limited set of ways in which you can query the data, you're pretty much shit up the creek if you want to query the data in a way that the developers didn't anticipate. You can ask the Flickr development team to provide it, and hope that they honor your request, and implement it within a reasonable timeframe, but your deadline will likely be past by then. Luckily for me, there's a screen I can scrape to grab the photos I need, an inelegant hack that does the job, but which is an ugly solution.

The second problem I had was that I wanted to filter out any photos tagged as "nude", not wanting to offend the users of my script with the sight of unwanted genitalia when they're exploring possible vacation destinations. There is no exclude tag option for the search method, and no easy way to do this. I could if I wanted to, put a loop in my program to repeatedly call the search method (assuming the search method did actually provide an option to specify "interesting" photos), and for each photo in the result page invoke the Flickr service again to find out all that photo's tags and throw it away if it has a "nude" tag, calling the search method repeatedly until I have the number of photos I need to fill in the slide show. Now, it's unlikely that the search method will need to be invoked more than twice, but I have to code for an indefinite number of iterations of this loop cuz I can't know for certain at any time for any given city how many nude photos there will be in the results. And two invocations of the search method is already more than I should have to make. Not only is this solution more work to implement, but it has very unfavorable performance characteristics, and puts unnecessary load on the server. Instead of making one service call over the network, I have to make (N+1)*X calls, where N is the number of results in each page, and X is the number of pages that need to be processed to fill the slide show. In this case, this requirement turned out not be worth the effort and performance impact it would have, so I let it go.

The third problem I encountered was a consequence of the screen scraping approach I was forced to take. I wanted to display the title of each photo, just like the default Yahoo slideshow does. The search method of the Flickr API returns the title of each photo in the results, but unfortunately the screen that shows a page of "interesting" photos with a given tag does not. If I want to display the titles of each photo in the slideshow, I have the same (N+1)*X problem I have with wanting to filter out nude photos; I'd have to make a seperate call to get the title for each photo in the page. This was not such an easy requirement to let go of, so we're forced to pay the performance penalty.

Now this was a very small script with very limited functionality, but you you can see the issues that crop up when you want to build a real-world web app using a purely API-based approach. It is not possible to approximate the power of a full relational/pattern-matching calculus, the kind that is approximated with a typical database query language like SQL, with a set of name-value pairs, which is what the input to a method/REST-endpoint essentially is (the usual way around this is to allow one of the name-value pairs to represent a query that gets executed directly against the database; this is nothing more than proxying the DB query interface through the method call). It is also generally much more efficient to look at a diagram of a data model to figure out what query to run against a database than it is to read a functional API spec to figure out how to orchestrate a set of API calls to accomplish what one query could.

We need a WDBMS (Web Database Management System) or WDBS (Web Database Service)

I say, let's use API's when appropriate(for most write access to data), and give access to DBMS query interfaces when appropriate (which is often the case for read access to rich data repositories). We have a good architecture for Web Services/API's, which is proving itself in real and prominent (press-worthy, at least) apps, in REST. Where's our web database architecture, which can complement REST in its simplicity and ability to scale to a global level? Well, as I've expounded on in previous posts, I think RDF is it.

Another point to consider is that as these mash-ups get more sophisticated they will no longer be pure mash-ups. Instead of merely exploiting existing relationships between data in different web sites, they will allow for the creation and storage of new relationships amongst data that is globally distributed across the web. These applications will need to have write access to their own databases, built on DBMS's designed for the web.

Designed for the web, these databases should be available as online services that can be accessed over the web. There should be a consistent serialization defined from an arbitrary dataset to an "on-the-wire" transport format in the lingua franca of the web - XML - which RDF provides, or alternatively into another web format that is simpler and better - JSON ( this simple requirement could have naively be achieved by storing your data as XML with some sort of XML database technology, but XML has many problems as a data model, not the least of which being that it violates the KISS principle) . Physically, they should look like the web, with a similiar topology and the ability to be massively distributed and decentralized, with distributed query mechanisms that can work in a peer-to-peer fashion. As the data substrate underpinning the sophisticated mash-ups of the future, I see them filling in what might be viewed as the currently "negative space" of the web, the gaps between web sites. I can see these kinds of database services really coming into their own serving as data hubs between multiple sites.

As an experiment, I will be putting a stab at such a WDBS online in the near future. A web app that I'm putting together using Kowari's RDF database engine. It will be available for free use by mash-up experimentalists who just have a Mozilla browser with Greasemonkey at their disposal, and need some place online to store their data. More news on that coming up ...

24 comments:

Chris Marino said...

Dan, I really liked this post. Curious why you haven't posted since? This is an area I'm pretty interested in. Would like to connect.

What's the best way to get in touch??

Send me an email at chrismarino99@yahoo.com

Thanks
CM

Anonymous said...

I think its a really nice blog... web template

Anonymous said...

Can anyone recommend the top performing Managed Service program for a small IT service company like mine? Does anyone use Kaseya.com or GFI.com? How do they compare to these guys I found recently: N-able N-central software monitoring
? What is your best take in cost vs performance among those three? I need a good advice please... Thanks in advance!

Anonymous said...

Your blog keeps getting better and better! Your older articles are not as good as newer ones you have a lot more creativity and originality now keep it up!

Anonymous said...

Sorry for my bad english. Thank you so much for your good post. Your post helped me in my college assignment, If you can provide me more details please email me.

Anonymous said...

Attraction casinos? verify this advanced [url=http://www.realcazinoz.com]online casinos[/url] counsel and get up online casino games like slots, blackjack, roulette, baccarat and more at www.realcazinoz.com .
you can also impede our new [url=http://freecasinogames2010.webs.com]casino[/url] steer at http://freecasinogames2010.webs.com and flourish in genuine folding money !
another new [url=http://www.ttittancasino.com]casino spiele[/url] place is www.ttittancasino.com , in return german gamblers, slip in free online casino bonus.

Anonymous said...

vaginal lubricant for herpies http://planetofporn.in/hcg-oral/definition-of-oral-information
[url=http://planetofporn.in/condom/anal-dildo-gay]hentaikey interactive hentai games[/url] charlette anal [url=http://planetofporn.in/adult-stories/montgomery-county-adult-education]montgomery county adult education[/url]
little aaaaaaaaaaaaaaangels hentai http://planetofporn.in/free-amateur/the-most-beautiful-amateur-women-of-2007-videos
[url=http://planetofporn.in/anal-life/skinny-chick-anal]asian cuties xxx[/url] amatuer adult porn free [url=http://planetofporn.in/ass-video/juicy-ass-and-chunky-thighs]juicy ass and chunky thighs[/url]
cellebrity sexy nude pics http://planetofporn.in/anal-life/gauge-anal-sex
[url=http://planetofporn.in/free-adult/adult-real-spanking-paddling]evening adult classes[/url] pokemon free porn [url=http://planetofporn.in/ass-sex/lopez-ass]lopez ass[/url]
ashly blue porn http://planetofporn.in/ass-sex/ass-to-mouth-girls-free-membership
[url=http://planetofporn.in/erotic-gay/erotic-stories-about-girls-getting-spanked]free naruto hentai comic[/url] blonde tenn porn clips [url=http://planetofporn.in/bondage/transvestite-bondage-personals]transvestite bondage personals[/url]

Anonymous said...

anal exam pictures http://xwe.in/thongs
[url=http://xwe.in/thongs/amateurs-in-thongs]anal sex cause anal sphincter atrophy[/url] amateur nudist webcam [url=http://xwe.in/adult-xxx/free-adult-pic]free adult pic[/url]
he her dildo stretch brutal http://xwe.in/erotic-video/erotic-reading-for-women
[url=http://xwe.in/nylon/nylon-mature-tgp]free amateur asian group sex video[/url] monster hentai streams [url=http://xwe.in/adult-xxx]adult xxx[/url]
erotic with virgin http://xwe.in/blowjob/karen-dreams-blowjob
[url=http://xwe.in/archive-adult/texas-adult-protection-services]adult christmas games for hospital[/url] amateur free housewife video [url=http://xwe.in/gay-anal/adam-levine-gay]adam levine gay[/url]
amateur adult sites http://xwe.in/girl-anal/anal-facials
[url=http://xwe.in/shemale/vegas-shemale-escort]sexy pattycakes[/url] submit my adult site [url=http://xwe.in/blowjob/japanese-blowjob]japanese blowjob[/url]

Anonymous said...

Make room the animal with two backs casinos? check this new [url=http://www.realcazinoz.com]online casino[/url] president and tergiversate online casino games like slots, blackjack, roulette, baccarat and more at www.realcazinoz.com .
you can also inhibit our stylish [url=http://freecasinogames2010.webs.com]casino[/url] control at http://freecasinogames2010.webs.com and be heir to in legitimate tangled cash !
another solitary [url=http://www.ttittancasino.com]casino spiele[/url] purlieus is www.ttittancasino.com , in return german gamblers, get philanthropic online casino bonus.

Anonymous said...

Hello everybody,

What online mags do you read and would recommend?

For all you rockabilly folks out there I recommend The Enough Fanzine. It is one of the first punk zines on the web.

They have throusands of interviews from the most independent bands all over the world. Check them out online: [url=http://www.enoughfanzine.com]Enough Fanzine[/url]. Best of it all, they are 100% non-profit and just helping the scene!

Looking forward to your recommendations.

Cheers!

Anonymous said...

vegetarian shoes http://luxefashion.us/long-sleeve-tops-page5.html durango shoes [url=http://luxefashion.us/48-polo-shirts-size1.html]dance clothes and acessories[/url] wide dress shoes
http://luxefashion.us/-casual-on-sale-category34.html fashion runway shows [url=http://luxefashion.us/?action=products&product_id=2561]two lips lucite shoes[/url]

Anonymous said...

klein adept geometry large http://www.thefashionhouse.us/white-violet-roberto-cavalli-color182.html personal designer used clothing shopper [url=http://www.thefashionhouse.us/green-casual-color53.html]flower girl shoes wedding[/url] oakley shoes
http://www.thefashionhouse.us/celyn-b--brand123.html dress up games where your fashion sense gets tested [url=http://www.thefashionhouse.us/paul-smith-t-shirts-for-men-brand96.html]calvin klein moso leaves[/url]

Anonymous said...

lindsay lohan smoking [url=http://usadrugstoretoday.com/products/acticin.htm]acticin[/url] reflections in health by stockwell http://usadrugstoretoday.com/products/vitamin-a-and-d.htm
success stories and drug addiction [url=http://usadrugstoretoday.com/products/kamasutra-longlast-condoms.htm]kamasutra longlast condoms[/url] diagnosing irritable bowel syndrome [url=http://usadrugstoretoday.com/products/femcare.htm ]ecstacy for treatment of post traumatic stress disorder [/url] name and desribe the two types of milks in breast milk
structure of five member hterocyclic medicine [url=http://usadrugstoretoday.com/products/femara.htm]femara[/url] trinity blood mp3 http://usadrugstoretoday.com/categories/anti-allergico---asma.htm
diabetic food lists [url=http://usadrugstoretoday.com/products/levlen.htm]levlen[/url] sex with a curved penis [url=http://usadrugstoretoday.com/products/lukol.htm ]calcium in diet [/url] medical journals passwords

Anonymous said...

kleinspitz http://www.thefashionhouse.us/-hoodies-men-category11.html hot tomato shoes [url=http://www.thefashionhouse.us/black-red-hoodies-color15.html]svensk designer[/url] bacio fashion show
http://www.thefashionhouse.us/green-long-sleeve-tops-color53.html red wing shoes [url=http://www.thefashionhouse.us/men-page71.html]pictures of designer rooms[/url]

Anonymous said...

shoot the moon lyrics jump5 [url=http://usadrugstoretoday.com/products/kamasutra-dotted-condoms.htm]kamasutra dotted condoms[/url] girls with small breast http://usadrugstoretoday.com/products/vitamin-a-and-d.htm
januvia prescription assistance [url=http://usadrugstoretoday.com/categories/anti-saure.htm]anti saure[/url] eye infections and disease [url=http://usadrugstoretoday.com/products/acai-natural-energy-boost.htm ]cholesterol over the counter reducer [/url] pain medication online pharmacy
does soy milk have calcium [url=http://usadrugstoretoday.com/products/kamasutra-contoured-condoms.htm]kamasutra contoured condoms[/url] separation anxiety disorder tcm http://usadrugstoretoday.com/products/cefixime.htm
south beach and miami andnot hotel andnot diet [url=http://usadrugstoretoday.com/contact.htm]medications without a prescription[/url] health watch nsystems [url=http://usadrugstoretoday.com/products/combivent.htm ]nonparaphilia sexual disorder [/url] ohio best rx local pharmacy drug pricing comparison

Anonymous said...

drug reconstitution and nursing [url=http://usadrugstoretoday.com/products/avapro.htm]avapro[/url] claritin drugs http://usadrugstoretoday.com/products/keppra.htm
heart implode [url=http://usadrugstoretoday.com/products/isoptin.htm]isoptin[/url] laboratories for erb duchenne syndrome [url=http://usadrugstoretoday.com/categories/anti-diabetici.htm ]free generic request for medical records [/url] evista and cervical cancer
allergy medication for those with igh blood pressure [url=http://usadrugstoretoday.com/products/pepcid.htm]pepcid[/url] breast smother grapevine pin http://usadrugstoretoday.com/products/stop-smoking.htm
efflorescence and health [url=http://usadrugstoretoday.com/products/prazosin.htm]prazosin[/url] movement disorder neurologist atlanta [url=http://usadrugstoretoday.com/categories/anti-diabetique.htm ]fasting instructions prior to blood test [/url] natural acne medicine

Anonymous said...

dell bluetooth travel mouse http://xwl.in/maps/freedom-maps-f18 antique travel russia
[url=http://xwl.in/airport/airport-el-paso-tx]galileo travel[/url] what months to travel [url=http://xwl.in/airline/cheap-airline-to-canada]cheap airline to canada[/url]
united states travel tour consolidators http://xwl.in/tourist/reasons-tourist-come-to-visit-jamaica
[url=http://xwl.in/travel/world-travel-statistics]bangkok travel affiliate programme[/url] map fill in where you travel [url=http://xwl.in/adventure/adventure-purse]adventure purse[/url]
tourism travel flights http://xwl.in/cruise/cruise-boat-propellers commonwealth of virginia travel voucher [url=http://xwl.in/tourist/tourist-attractions-in-northwest-territory]tourist attractions in northwest territory[/url]

Anonymous said...

interior designers and realtors partnering up http://www.thefashionhouse.us/gucci-suade-leather-shoes-for-women-dark-brown-item2470.html chanel sunglasses [url=http://www.thefashionhouse.us/?action=products&product_id=2001]wide tennis shoes[/url] hippie baby clothes
http://www.thefashionhouse.us/white-grey-gucci-color26.html lauren savoy [url=http://www.thefashionhouse.us/pecci-front-zip-hoody-sport-jacket-for-men-brown-item1677.html]womens casual shoes[/url]

Anonymous said...

casino quebec city http://xwn.in/jackpot_jackpot-nv-hotels casino ac 200 robot action clock
[url=http://xwn.in/poker-online_card-games-poker]casino games for laptop computers[/url] siena ristorante italiano lumiere casino and hotel [url=http://xwn.in/keno_free-keno-game-downloads]free keno game downloads[/url]
false imprisonment by casino personnel http://xwn.in/jokers_art-sketches-of-jokers
[url=http://xwn.in/lottery_knights-of-columbus-home-lottery-saskatoon]maderia beach sun cruz casino[/url] online keno game casino [url=http://xwn.in/poker-online_drink-tables-for-poker-tables]drink tables for poker tables[/url]
casino design takeoffs http://xwn.in/slots_monopolly-slots-on-line office scratch off gambling cards [url=http://xwn.in/online-casino_casino-blackjack-rules]casino blackjack rules[/url]

Anonymous said...

softwear shoes http://topcitystyle.com/30-gucci-size12.html web designer job qaulifications [url=http://topcitystyle.com/-jeans-cut-pants-dolce-amp-gabbana-category27.html]working conditions for being a fashion designer[/url] lauren burch
http://topcitystyle.com/dolce-amp-gabbana-page20.html fashion glamour photographer [url=http://topcitystyle.com/?action=products&product_id=1204]plus size clothes[/url]

Anonymous said...

http://xpv.in/amiodarone/amiodarone-and-dimentia
[url=http://xpv.in/dostinex/dostinex-para-que-se-utilisa]drug fluoxetine[/url] online pharmacy albuterol [url=http://xpv.in/raloxifene/raloxifene-preventing-mood-disorders]raloxifene preventing mood disorders[/url]
future health care http://xpv.in/amaryl/amaryl-prescribing-information
[url=http://xpv.in/domperidone/domperidone-10mg]price cialis mexico pharmacy[/url] carrier convince kinney drugs [url=http://xpv.in/amoxicillin/swimmers-ear-infection-treatment-amoxicillin]swimmers ear infection treatment amoxicillin[/url]
identifying pharmacutical drugs http://xpv.in/pyridostigmine/pyridostigmine-bromide
[url=http://xpv.in/reglan/veteranarian-med-reglan]poppers drug[/url] school drug prevention programs [url=http://xpv.in/altace]altace[/url] pharmacy drug prices [url=http://xpv.in/amlodipine/discount-norvasc-generic-amlodipine]discount norvasc generic amlodipine[/url]

Anonymous said...

lottery pens choose your lotto numbers http://wqm.in/online-casinos_the-effect-of-casinos-in-oklahoma winners of the 2008 greencard lottery from sri lanka
[url=http://wqm.in/jackpot_swine-jackpot-shows]pa lottery result[/url] big lottery grants [url=http://wqm.in/slots_free-video-poker-and-slots]free video poker and slots[/url]
lottery techniques http://wqm.in/casino-playing-cards_us-playing-cards
[url=http://wqm.in/gambling-online_slots-online-gambling-gambling-online]indiana gambling boats directions[/url] wikipedia blackjack [url=http://wqm.in/bingo_ohio-bingo-laws-2008]ohio bingo laws 2008[/url]
casino mohegan sun http://wqm.in/roulette_roulette-set-game olympic sports betting [url=http://wqm.in/online-casinos_a-list-of-casinos-in-wisconsin]a list of casinos in wisconsin[/url]

Anonymous said...

apple movie ratings [url=http://moviestrawberry.com/films/film_gardens_of_the_night/]gardens of the night[/url] variey girl movie imdb http://moviestrawberry.com/films/film_flood/ windows movie player download
movie flix [url=http://moviestrawberry.com/films/film_saw/]saw[/url] aafes movie schedule http://moviestrawberry.com/films/film_win_a_date_with_tad_hamilton/ movie iaccessories
smart movie free download [url=http://moviestrawberry.com/films/film_tom_and_jerry_the_movie/]tom and jerry the movie[/url] pay to view movie pc downloads
johnny appleseed movie [url=http://moviestrawberry.com/films/film_the_believer/]the believer[/url] free sex mom movie http://moviestrawberry.com/films/film_newcastle/ movie labels for discs
how to write a movie a movie review [url=http://moviestrawberry.com/films/film_goofy_and_wilbur/]goofy and wilbur[/url] movie listings nyc http://moviestrawberry.com/films/film_son_of_flubber/ luna harry potter movie

Anonymous said...

top [url=http://www.c-online-casino.co.uk/]casino online[/url] brake the latest [url=http://www.casinolasvegass.com/]casino bonus[/url] manumitted no deposit perk at the best [url=http://www.baywatchcasino.com/]free casino games
[/url].