The Evolution of API

It is my premise that, despite its monopolistic practices, Microsoft has succeeded by winning the minds of software developers. The Windows API, OLE/COM, the Win32 API, the distributed systems architecture, ODBC, .NET – these are all examples of API provided by Microsoft that have had tremendous impact on the industry. Even as developers decry their dependence on a single vendor, even as they install Eclipse and study Ruby, they can’t deny that it’s simply easier to run Visual Studio and program in C#/.NET.

There are chinks in Microsoft armor. PHP is pretty hard to beat for simple web apps. Microsoft’s share of the mobile device business is pretty small, too, regardless of how cool the Compact Edition of .NET might be. Overall, however, I can think of no other company or technology that has as much influence over developers as Microsoft.

To more clearly demonstrate how Microsoft achieved this hegemony, I thought it might be interesting to review the history of a particular API call and to note Microsoft’s involvement with it. Any programmer that’s read Kernighan and Ritchie’s The C Programming Language, is familiar with the “Hello World” program. (Any programmer that hasn’t read this book should be ashamed of his/herself. This would be akin to an English Lit major not having read any Shakespeare.) Let’s consider how the implementation of “Hello World” (on a PC) has changed over the years.

In 1981, when the first PC became available, the BIOS provided one way of implementing the program:

.data
    Message DB "Hello World"
.ends
.code
    MOV AX,1300h       ; set function code for "Write string", don't move cursor
    XOR  BX,BX         ; write to page 0 with no character attribute
    MOV CX, 11         ; write 11 characters
    PUSH DS
    POP ES
    LEA BP, Message    ; set ES:BP to the address of the message
    INT 10h            ; do it!
.ends

If you didn’t care about screen location or video attributes, MSDOS provided a simpler way:

.data
    Message DB "Hello World"
.ends
.code
    MOV AH,9           ; set function code for "write string at cursor"
    LEA DX, Message    ; set DS:DX to the address of the message (DS is already set)
    INT 21h            ; do it!
.ends

In the early 80’s when high-level languages (other than BASIC) started arriving on the PC, you could do it like K&R:

    int main()
    {
        printf("Hello World");
    }

The arrival of Microsoft Windows in 1985 made life much more complicated. Displaying a label on a dialog box was pretty simple (you could just place it there in the dialog box editor). If you wanted to display text in your application’s client window, that meant you had to write a window procedure and process the WM_PAINT message. Processing this message typically meant deciding on a font to use, figuring out colors to use and dealing with opacity:

    void HandlePaint(HWND hwnd)
    {
        /* Get device context for window */
        HDC hdc = GetDC(hwnd);

        /* Create a font and select it, keeping the old one around */
        HFONT hf = CreateFont(...lots of args...);
        HFONT hfOld = SelectObject(hdc, hf);

        /* Get the client rectangle for the whole window */
        RECT rect;
        GetClientRect(hwnd, &rect);

        /* Draw the text at the top left of the window */
        rect.left = rect.top = 10;
        DrawText(hdc, "Hello World", 11, &rect, DT_SINGLELINE);

        /* Select the old font */
        SelectObject(hdc, hfOld);

        /* delete created resources */
        DeleteObject(hf);
    }

No wonder so many programmers had a hard time moving to Windows! And yet move they did! What were the alternatives? VisiOn was cool but it was a pig. TopView was character-mode only. OS/2 Presentation Manager was Windows run through the IBM bureaucracy filter (e.g. put Win in front of all the API and flip the Y axis top to bottom!). The Mac was equally complicated and less capable (no multitasking, no child windows).

The arrival of 32-bit programming didn’t affect “Hello World” all that much, but it did accomplish two things. First, it freed programmers from having to worry about segmentation (putting code into 64K groups that could be efficiently swapped in and out). Second, it performed better process cleanup meaning that users had to worry less about depleting system resources (as could happen, for example, if you forgot to call DeleteObject in Win16).

OLE/COM affected “Hello World” to the extent that you could now write a “Hello world” application that could be embedded in another one, saved to a single file and printed in composite form. Your code had to worry about garbage collection (maintaining proper reference counts) and implementing appropriate COM interfaces. I’ll not cover this here as I still have scars from those days. Alternatives? None. Corba was still working on PL/1 and Ada support when OLE/COM first shipped. Microsoft was willing to punt on this problem in exchange for 99% market share.

As the final installment, let’s consider “Hello World” in the .NET era. First of all, Winforms programs are very often forms-oriented these days; you might very well choose to implement the program by simply creating a form and dragging a label there in Visual Studio. A Webforms program would do it the same way. If you do need to write a Winforms program that fully handles its client area, you’d write an event handler for a form’s Paint event:

    void Paint(object sender, PaintEventArgs e)
    {
        // get the Graphics object from the event arguments
        Graphics g = e.Graphics;

        // draw our string
        g.DrawString("Hello World", new Font("Arial", 10),
                         Brushes.Black, new Point(10, 10));
    }

If you compare this to the previous version, you can see a lot of similaries. The Graphics object is the equivant of the Windows device context. You still have to create a font. The difference is that C#/.NET has some “syntactic sugar” that makes life easier, for example, simplified arguments when creating fonts and the ability to create objects in-line. Additionally, C#/.NET perform automatic garbage collection so you don’t have to worry about deleting any created objects.

“Hello World” is an extremely simple example that demonstrates how APIs have changed over the course of 27 years. I chose it because, even this simple example, demonstrates how Microsoft has affected developers lives (both positively and negatively). There are better examples (OLE/COM and ODBC/ADO/LinQ) that demonstrate Microsoft’s contributions to the industry but none that can be so easily summarized in an already too long blog!

281 Responses to “The Evolution of API”

  1. I simply want to mention I am very new to blogging and certainly enjoyed you’re blog. Likely I’m going to bookmark your site . You surely come with great posts. Thanks a lot for revealing your web-site.

  2. Earl Cieslik says:

    This is especially crucial in those who

  3. StephenPaply says:

    how much viagra should i take the first time? viagra without a doctor prescription online doctor prescription for viagra

  4. Jamesdaymn says:

    goodrx viagra viagra generic for viagra

  5. KevinInigh says:

    cialis lowest price 20mg cialis for sale the cost of cialis

  6. DanielEmind says:

    viagra over the counter viagra viagra cheap

  7. DanielEmind says:

    viagra pill buy cheap viagra can you buy viagra over the counter

  8. WallyLes says:

    injectable ed drugs erectile dysfunction pills drugs causing ed

  9. WallyLes says:

    ed meds online without doctor prescription comfortis for dogs without vet prescription cheap medications

  10. WallyLes says:

    cheap pills online medication drugs natural remedies for ed problems

  11. WallyLes says:

    buy canadian drugs drugs for ed prescription drugs online

  12. Stevenslilk says:

    viagra 100mg buy viagra how to get viagra

  13. Stevenslilk says:

    viagra prices buy ed pills online canadian online pharmacy viagra

  14. Stevenslilk says:

    when will viagra be generic buy ed pills online canadian online pharmacy viagra

  15. I love your blog page. I’m touched. Thank anyone.

  16. Stevenslilk says:

    canadian pharmacy viagra cheap viagra viagra online

  17. Stevenslilk says:

    viagra coupons buy viagra viagra from india

  18. DanielEnank says:

    ed solutions ED Pills Without Doctor Prescription compare ed drugs

  19. DanielEnank says:

    ed meds online without doctor prescription natural remedies for ed problems supplements for ed

  20. DanielEnank says:

    anti fungal pills without prescription generic ed pills buying ed pills online

  21. DanielEnank says:

    soma therapy ed cheap ed pills tadalafil without a doctor’s prescription

  22. DanielEnank says:

    male dysfunction cheap ed pills buy ed drugs online

  23. DanielEnank says:

    herbal remedies for ed cheap ed pills natural treatment for ed

  24. At this amount, you can premiere as a author. I am just so touched. Now i am cheerful to meet you. Thank you.

  25. DanielEnank says:

    drugs prices generic ed pills over the counter ed remedies

  26. NathanHok says:

    cialis samples request buy tadalafil $200 cialis coupon

  27. Williamphish says:

    best ed solution prescription drugs ed medicine

  28. Williamphish says:

    treatment for erectile dysfunction best online canadian pharmacy ed medications comparison

  29. Williamphish says:

    cure for ed prescription drugs best non prescription ed pills

  30. Wow, the articles are so sexy. How may We write like anyone? My partner and i want the similar writing skills as you.

  31. I was so fascinated by your blog. Thank a person so much.

  32. 죠스출장 says:

    You’re consequently amazing. Oh my Lord. Jesus bless you.

  33. You’re consequently amazing. Oh my Jesus. The almighty bless you.

  34. I was so pleased because of your blog. Thank you so much.

  35. Regards to you, I learned something new. Say thanks to a person so much. My partner and i glimpse forward to nearby.

  36. Regards to you, We mastered something new. Appreciate anyone so much. My partner and i seem forward to working with you.

  37. RobertKic says:

    buy generic drugs from india buy generic drugs online from india

  38. RobertKic says:

    sildenafil online cheapest sildenafil

  39. RobertKic says:

    sildenafil online sildenafil without doctor prescription

  40. Your fantastic is great as in the event it had been written by means of a writer. Let me take a look at your blog typically. Appreciate it always.

  41. RobertKic says:

    personal loans with no credit check payday loans online fast deposit

  42. RobertKic says:

    buy tadalafil tadalafil pharmacy

  43. RobertKic says:

    buy tadalafil tadalafil

  44. RobertKic says:

    tadalafil pharmacy buy cheap tadalafil

  45. RobertKic says:

    tadalafil canada buy cheap tadalafil

  46. Regards to you, I actually realized something new. Say thanks to an individual so much. My spouse and i search forward to nearby.

  47. RobertKic says:

    canadian pharmacy buy generic drugs from canada medications

  48. I used to be able to find good information from your blog posts.

  49. I was able to find good advice from your content.

  50. The next time I read a blog, I hope that it doesn’t fail me as much as this particular one. After all, I know it was my choice to read, but I truly thought you’d have something helpful to talk about. All I hear is a bunch of complaining about something you could fix if you weren’t too busy searching for attention.

  51. RobertPrina says:

    buy sildenafil online cheapest sildenafil

  52. 출장안마 says:

    I was very pleased to discover this page. I want to to thank you for ones time due to this fantastic read!! I definitely enjoyed every little bit of it and I have you bookmarked to see new things on your web site.

  53. CalebNaf says:

    payday loans online fast deposit personal loans for bad credit

  54. JoshuaAsype says:

    cheap sildenafil https://sildgeneric100.com/ cheap sildenafil

  55. StephenFed says:

    viagra generic buy viagra generic how to get viagra without a doctor

  56. Pretty! This was an extremely wonderful article. Many thanks for supplying this info.

  57. RobinAmara says:

    levitra without a doctor prescription canadian pharmacy viagra ed drug comparison

  58. RobinAmara says:

    natural ed treatment canadian drug stores amoxicillin without a doctor’s prescription

  59. RobinAmara says:

    canada price on cialis the cost of cialis cialis and interaction with ibutinib

  60. RobinAmara says:

    vacuum pumps for ed best online canadian pharmacy treating ed

  61. RobinAmara says:

    is there a generic for viagra buy viagra non prescription viagra

  62. RobinAmara says:

    where to get viagra viagra walmart viagra

  63. RobinAmara says:

    tadalafil without a doctor’s prescription online pharmacy canada cheap pills online

  64. RobinAmara says:

    how can i order prescription drugs without a doctor buy Prednisone online medication

  65. RobinAmara says:

    causes of ed Amoxil ed drugs online

  66. RobinAmara says:

    natural ed medications buy Cipro online canadian pharmacy

  67. RobinAmara says:

    mens ed pills canadian drug stores ed pills online pharmacy

  68. RobinAmara says:

    viagra walgreens viagra pill viagra viagra pill

  69. Good day! I just want to offer you a big thumbs up for your excellent information you’ve got here on this post. I will be coming back to your web site for more soon.

  70. RobinAmara says:

    best male enhancement pills canada pharmacy online hims ed pills

  71. 구미출장 says:

    Hi, I do believe this is a great blog. I stumbledupon it 😉 I will come back yet again since I saved as a favorite it. Money and freedom is the greatest way to change, may you be rich and continue to guide other people.

  72. RobinAmara says:

    pain meds online without doctor prescription online pharmacy canada over the counter erectile dysfunction pills

  73. RobinAmara says:

    erectial dysfunction Amoxil what is the best ed pill

  74. RobinAmara says:

    viagra cost per pill viagra walmart viagra prices

  75. RobinAmara says:

    100mg viagra buy viagra viagra canada

  76. RobinAmara says:

    where to buy viagra online viagra cheapest viagra online

  77. TravisLes says:

    erectial dysfunction: cheapest ed pills best treatment for ed

  78. 일산요정 says:

    Aw, this was an exceptionally good post. Taking a few minutes and actual effort to produce a superb article횜 but what can I say횜 I put things off a whole lot and never seem to get nearly anything done.

  79. TravisLes says:

    can ed be reversed: canadian pharmacy online pet meds without vet prescription

  80. TravisLes says:

    ed pills that work: buy cheap prescription drugs online ed pills that work

  81. TravisLes says:

    best male enhancement: online ed pills best medicine for ed

  82. When I originally commented I seem to have clicked on the -Notify me when new comments are added- checkbox and from now on each time a comment is added I receive four emails with the same comment. Perhaps there is an easy method you can remove me from that service? Appreciate it!

  83. gepeamusa says:

    Baclofen Acheter En Canada AbignKignene where to buy cialis online forum foessEmeds Cialis Authentique Prix

  84. Larryorelt says:

    viagra for sale cheap viagra 100mg how much is viagra

  85. Larryorelt says:

    erectile dysfunction medications canadian pharmacy cialis real viagra without a doctor prescription usa

  86. Larryorelt says:

    cvs viagra otc viagra viagra amazon

  87. Larryorelt says:

    the cost of cialis cialis 5mg coupon cialis headaches afterwards

  88. Larryorelt says:

    zithromax capsules australia zithromax buy zithromax 500 mg lowest price pharmacy online

  89. Larryorelt says:

    viagra cheap viagra online canadian pharmacy where to buy viagra

  90. Larryorelt says:

    buy zithromax no prescription zithromax 600 mg tablets buy generic zithromax online

  91. asd says:

    An impressive share! I have just forwarded this onto a coworker who was doing a little homework on this. And he actually bought me lunch due to the fact that I stumbled upon it for him… lol. So allow me to reword this…. Thank YOU for the meal!! But yeah, thanks for spending time to talk about this topic here on your internet site.

  92. Larryorelt says:

    muse for ed canadian pharmacies online cheap pills online

  93. Larryorelt says:

    purchase zithromax z-pak zithromax 500mg price in india zithromax online paypal

  94. Larryorelt says:

    real viagra without a doctor prescription canadian pharmacies shipping to usa online canadian pharmacy

  95. Larryorelt says:

    zithromax prescription zithromax without prescription zithromax order online uk

  96. Robertunlow says:

    walmart viagra order viagra generic online pharmacy viagra
    how to get viagra without a doctor

  97. Robertunlow says:

    viagra from canada viagra without doctor prescription online viagra prescription
    viagra prescription

  98. Robertunlow says:

    viagra coupon generic pills viagra cheap
    viagra price

  99. Robertunlow says:

    where to get viagra viagra for sale buy generic 100mg viagra online
    can you buy viagra over the counter

  100. Next time I read a blog, Hopefully it does not disappoint me just as much as this one. I mean, I know it was my choice to read through, however I genuinely believed you’d have something useful to talk about. All I hear is a bunch of whining about something you could fix if you weren’t too busy searching for attention.

  101. I’d like to thank you for the efforts you have put in writing this website. I really hope to view the same high-grade content from you later on as well. In fact, your creative writing abilities has motivated me to get my very own website now 😉

  102. DavidTek says:

    canadian online pharmacy generic Aciclovir cheap Valtrex

  103. DavidTek says:

    best canadian pharmacy online buy Plaquenil Zovirax

  104. DavidTek says:

    ed pills cheap buy Valtrex online generic Zovirax

  105. DavidTek says:

    ed dysfunction cheap Zovirax Aciclovir

  106. DavidTek says:

    the best ed drug certified canadian online pharmacies canadian pharmacy

  107. DavidTek says:

    male ed cheap Plaquenil generic Aciclovir

  108. DavidTek says:

    mexican pharmacy without prescription buy Zovirax buy Aciclovir

  109. DavidTek says:

    male erection canadian healthcare pharmacy pharmacy in canada ontario

  110. DavidTek says:

    medication for ed Zovirax buy antiviral drugs

  111. DavidTek says:

    cheapest ed pills canadian pharmacy viagra online pharmacies without an rx

  112. DavidTek says:

    viagra without doctor prescription cheap Aciclovir Aciclovir

  113. DavidTek says:

    buy Amoxil cheap Amoxil pet meds without vet prescription

  114. DavidTek says:

    best online pharmacy ed meds online without doctor prescription ed meds rx

  115. DavidTek says:

    treatment of ed best erectile dysfunction pill ed meds online

  116. Josephmog says:

    over the counter ed remedies lipitor generic india lipitor for sale

  117. Josephmog says:

    ed cures that actually work canada drug pharmacy canadian pharmacy

  118. Josephmog says:

    natural herbs for ed lipitor buy lipitor online

  119. Josephmog says:

    canadian viagra how to get viagra buy viagra online

  120. Josephmog says:

    cheap erectile dysfunction fda approved canadian online pharmacies online pharmacy canada

  121. Josephmog says:

    normal dose cialis tadalafil does cialis lower blood pressure

  122. 출장안마 says:

    This is a topic which is near to my heart… Cheers! Exactly where are your contact details though?

  123. Josephmog says:

    do i have ed fda approved canadian online pharmacies fda approved canadian online pharmacies

  124. Hi! I could have sworn Iíve visited this blog before but after going through some of the posts I realized itís new to me. Nonetheless, Iím definitely delighted I found it and Iíll be bookmarking it and checking back frequently!

  125. Josephmog says:

    ed causes and treatment natural pills for ed pain meds without written prescription

  126. Josephmog says:

    new ed drugs atorvastatin lipitor lipitor generic

  127. Josephmog says:

    best male enhancement pills muse ed drug ed and diabetes

  128. Josephmog says:

    best ed medicine canada drug pharmacy canadian online pharmacies

  129. Josephmog says:

    legal to buy prescription drugs without prescription vitamins for ed buy prescription drugs without doctor

  130. Thank you so much regarding making us know what My spouse and i didn’t know. I anticipate working with you.

  131. Everything is very open with a clear explanation of the challenges. It was definitely informative. Your site is useful. Thank you for sharing!

  132. Kennethcut says:

    how much does viagra cost https://cheapvgr100.online/ xxrhqgfm

  133. Kennethcut says:

    roman viagra https://cheapvgr100.com/ xaxdirfe

  134. Kennethcut says:

    viagra prescription https://cheapvgr100.online/ pspgqgyv

  135. Whoa. Master. You’re a new genius. Give thanks you.

  136. Kennethcut says:

    ztpogvwj is there a generic for viagra viagra from india

  137. 출장안마 says:

    Hey, usually are you too great? Your current writing widens my expertise. Appreciate you.

  138. Warrenreesy says:

    cost for valtrex valtrex 500mg price canada generic acyclovir

  139. Warrenreesy says:

    amoxicillin 500mg zithromax over the counter canada where to buy bactrim

  140. Warrenreesy says:

    alesse generic brand canada where can i buy shatavari in usa pilex usa

  141. Warrenreesy says:

    yasmin ocp yasmin 415 yasmin pharmacy singapore

  142. Warrenreesy says:

    acyclovir 200 mg capsule generic acyclovir price of acyclovir

  143. Warrenreesy says:

    order zyrtec benadryl 50 mg tablet zyrtec d 24 hour

  144. Warrenreesy says:

    otc zyrtec 10mg allegra 160 mg zyrtec tablets price in india

  145. Warrenreesy says:

    prophylactic antibiotic best antibiotic for diverticulitis attack where can you buy amoxicillin over the counter

  146. Warrenreesy says:

    allegra 100 mg tablet where to get benadryl uk 600 mg benadryl

  147. Warrenreesy says:

    buy amoxicillin 500mg online doxycycline generic doxycycline order online

  148. Warrenreesy says:

    5mg zyrtec without a prescription allegra buy online uk generic brand for zyrtec

  149. Warrenreesy says:

    buy levlen online yasmin pill uk buy clomid online

  150. Warrenreesy says:

    pilex online serophene without prescription generic for clomid

  151. Warrenreesy says:

    cheap acyclovir online can you buy zovirax over the counter zovirax 200

  152. Hi there! I could have sworn Iíve been to this blog before but after looking at some of the articles I realized itís new to me. Nonetheless, Iím certainly delighted I stumbled upon it and Iíll be book-marking it and checking back frequently!

  153. I love reading an article that will make men and women think. Also, thank you for allowing for me to comment!

  154. Your style is really unique compared to other people I’ve read stuff from. Many thanks for posting when you’ve got the opportunity, Guess I’ll just bookmark this web site.

  155. 성남출장 says:

    The very next time I read a blog, I hope that it won’t disappoint me just as much as this one. After all, I know it was my choice to read through, nonetheless I genuinely thought you would probably have something interesting to say. All I hear is a bunch of whining about something that you could fix if you were not too busy seeking attention.

  156. Edwardjet says:

    olwokdoc purchasing cialis on the internet http://cialisirt.online/ coffee with cialis

  157. Edwardjet says:

    lhhseoyg 30 day cialis trial offer http://cialisirt.com/ how does cialis work

  158. Edwardjet says:

    nqixlouv viagra price comparison http://viagrastm.com/ where can i buy viagra

  159. Edwardjet says:

    rtpzvbsa buying viagra online http://viagrastm.online/ over the counter viagra

  160. Edwardjet says:

    ytgcsexu cialis dosage 40 mg dangerous http://cialisirt.com/ cost of cialis

  161. Edwardjet says:

    lcxiiyzw buy viagra http://viagrastm.online/ roman viagra

  162. I blog quite often and I genuinely thank you for your information. This great article has truly peaked my interest. I’m going to book mark your blog and keep checking for new details about once a week. I opted in for your RSS feed as well.

  163. Itís hard to find educated people for this topic, but you seem like you know what youíre talking about! Thanks

  164. Good day! I could have sworn Iíve been to this website before but after going through a few of the articles I realized itís new to me. Anyways, Iím certainly pleased I stumbled upon it and Iíll be book-marking it and checking back often!

  165. Howdy! This post could not be written any better! Looking through this article reminds me of my previous roommate! He always kept talking about this. I’ll forward this article to him. Pretty sure he’ll have a good read. I appreciate you for sharing!

  166. I챠m impressed, I must say. Rarely do I encounter a blog that챠s both equally educative and engaging, and without a doubt, you’ve hit the nail on the head. The problem is an issue that not enough people are speaking intelligently about. I am very happy that I stumbled across this in my search for something relating to this.

  167. 제주출장 says:

    I would like to thank you for the efforts you have put in penning this website. I am hoping to see the same high-grade blog posts by you in the future as well. In truth, your creative writing abilities has inspired me to get my very own site now 😉

  168. JasonCapse says:

    online medication https://canadianpharmacyvikky.com pet antibiotics without vet prescription

  169. JasonCapse says:

    natural drugs for ed https://canadianpharmacyvikky.com prescription without a doctor’s prescription

  170. JasonCapse says:

    cure for ed https://canadianpharmacyvikky.com buy prescription drugs from india

  171. JasonCapse says:

    canadian online drugstore https://canadianpharmacyvikky.com pain meds online without doctor prescription

  172. This is a great tip particularly to those fresh to the blogosphere. Simple but very accurate informationÖ Appreciate your sharing this one. A must read article!

  173. I’m very pleased to find this page. I wanted to thank you for ones time just for this wonderful read!! I definitely enjoyed every little bit of it and i also have you bookmarked to look at new information on your blog.

  174. An outstanding share! I have just forwarded this onto a friend who has been doing a little homework on this. And he actually ordered me breakfast simply because I found it for him… lol. So let me reword this…. Thank YOU for the meal!! But yeah, thanx for spending time to talk about this topic here on your blog.

  175. cbd for dogs says:

    I wanted to put you the tiny remark to be able to thank you over again on your pretty suggestions you have provided on this page. It was really strangely open-handed with you to make unhampered precisely what many people would’ve offered for sale for an ebook to get some money for themselves, particularly now that you might have tried it in case you desired. These strategies in addition served to be the good way to know that some people have the identical interest really like my personal own to learn much more when considering this matter. I believe there are several more pleasant sessions in the future for many who read through your site.

  176. I used to be able to find good information from your content.

  177. I am commenting to let you know of the fantastic encounter my cousin’s daughter experienced reading your site. She even learned many issues, not to mention what it’s like to have a wonderful giving mindset to have many people quite simply grasp chosen grueling subject areas. You really exceeded our expectations. Many thanks for giving the informative, healthy, educational and as well as easy thoughts on the topic to Jane.

  178. My husband and i ended up being comfortable Albert could carry out his analysis because of the ideas he acquired from your site. It’s not at all simplistic just to be giving for free hints that men and women have been making money from. And we all do know we have the website owner to be grateful to because of that. Most of the explanations you’ve made, the easy site menu, the friendships you can assist to engender – it’s everything exceptional, and it’s assisting our son and our family do think that content is cool, and that is extremely important. Many thanks for all the pieces!

  179. 광주출장 says:

    Saved as a favorite, I really like your website!

  180. My wife and i have been really more than happy when Louis managed to finish off his researching using the precious recommendations he made through your web site. It is now and again perplexing to simply find yourself making a gift of strategies which often some other people may have been trying to sell. Therefore we realize we need the writer to give thanks to for this. The specific illustrations you made, the straightforward web site navigation, the relationships you will help to instill – it is most remarkable, and it is leading our son in addition to us reason why this subject is interesting, which is seriously pressing. Thanks for the whole lot!

  181. You ought to be a part of a contest for one of the highest quality sites on the web. I’m going to recommend this site!

  182. PhillipOdodo says:

    can ed be cured
    https://canadarx24.com/
    ed men

  183. PhillipOdodo says:

    vacuum pump for ed
    https://canadarx24.com/
    ed treatments that really work

  184. PhillipOdodo says:

    ed treatments that really work
    https://canadarx24.com/
    ed medications list

  185. PhillipOdodo says:

    male erection
    https://canadarx24.com/
    canada ed drugs

  186. 출장안마 says:

    Very nice article. I certainly love this site. Thanks!

  187. 출장안마 says:

    This is the perfect web site for anybody who wants to understand this topic. You know a whole lot its almost tough to argue with you (not that I really would want to횜HaHa). You certainly put a brand new spin on a topic that’s been written about for ages. Excellent stuff, just excellent!

  188. JamesLap says:

    ed meds online without prescription or membership azgiepws levitra for sale best online canadian pharmacy

  189. JamesLap says:

    viagra price jnuamebe buy viagra generic cheap viagra online

  190. JamesCLADA says:

    kopr canadian viagra http://dietkannur.org kluo ivek

  191. JamesCLADA says:

    lchb cvs viagra http://dietkannur.org ydqa gtza

  192. Lesterexciz says:

    normal dose cialis jgdyiebc http://tadedmedz.com/ cialis discount card

  193. Iím amazed, I must say. Rarely do I encounter a blog thatís both educative and engaging, and without a doubt, you have hit the nail on the head. The problem is something which too few men and women are speaking intelligently about. I am very happy I stumbled across this in my search for something relating to this.

  194. Davidgox says:

    buy viagra very cheap buy medication without an rx

  195. 먹튀검증 says:

    Very good information. Lucky me I recently found your blog by accident (stumbleupon). I have saved as a favorite for later!

  196. Your style is so unique in comparison to other people I have read stuff from. Thank you for posting when you’ve got the opportunity, Guess I’ll just bookmark this web site.

  197. It챠s nearly impossible to find knowledgeable people on this subject, but you sound like you know what you챠re talking about! Thanks

  198. 대구출장 says:

    An interesting discussion is worth comment. I do believe that you need to publish more about this subject, it might not be a taboo subject but usually people don’t speak about these issues. To the next! Many thanks!!

  199. 부산출장 says:

    Howdy! I simply would like to give you a huge thumbs up for your excellent information you have got right here on this post. I’ll be returning to your web site for more soon.

  200. 먹튀검증 says:

    There’s certainly a lot to learn about this subject. I like all of the points you made.

  201. Hi, I do believe this is an excellent web site. I stumbledupon it 😉 I may revisit yet again since i have saved as a favorite it. Money and freedom is the greatest way to change, may you be rich and continue to guide other people.

  202. I’m excited to discover this page. I need to to thank you for your time just for this fantastic read!! I definitely appreciated every bit of it and I have you bookmarked to look at new stuff in your web site.

  203. GeraldOravy says:

    http://tadalafilfast20.com tadalafil 100mg

  204. GeraldOravy says:

    http://tadalafilfast20.com order sildenafil

  205. GeraldOravy says:

    http://sildenafilfast100.com sildenafil generic 5mg

  206. GeraldOravy says:

    http://sildenafilfast100.com sildenafil canada prescription

  207. GeraldOravy says:

    http://kamagrafast100.com kamagra online

  208. GeraldOravy says:

    http://sildenafilfast100.com sildenafil without a prescription

  209. GeraldOravy says:

    http://tadalafilfast20.com sildenafil nz buy

  210. GeraldOravy says:

    http://zithromaxfast500.com zithromax online paypal

  211. 먹튀검증 says:

    I need to to thank you for this great read!! I certainly enjoyed every little bit of it. I’ve got you book marked to look at new stuff you postÖ

  212. After looking into a number of the blog articles on your blog, I really like your way of writing a blog. I added it to my bookmark webpage list and will be checking back soon. Take a look at my web site as well and let me know what you think.

  213. Howdy! I could have sworn Iíve visited this blog before but after looking at a few of the posts I realized itís new to me. Anyhow, Iím certainly happy I found it and Iíll be bookmarking it and checking back regularly!

  214. Greetings from Idaho! I’m bored at work so I decided to browse your site on my iphone
    during lunch break. I really like the knowledge you present here and can’t wait to take a look
    when I get home. I’m surprised at how quick your blog loaded on my phone
    .. I’m not even using WIFI, just 3G .. Anyhow, wonderful site!

  215. I don’t even know how I ended up here, but I thought this
    post was good. I do not know who you are but certainly you are going to a famous blogger
    if you aren’t already 😉 Cheers!

  216. tinyurl.com says:

    I got this web page from my buddy who informed me concerning
    this site and at the moment this time I am visiting this site and reading very informative posts at this time.

  217. Cool blog! Is your theme custom made or did you download it from somewhere?

    A theme like yours with a few simple tweeks would really make
    my blog stand out. Please let me know where you got your
    design. Thanks

  218. Hello There. I found your blog using msn. This
    is a very well written article. I’ll make sure to bookmark it and come back to read more of
    your useful info. Thanks for the post. I will certainly return.

  219. Very good article. I’m facing many of these issues as well..

  220. 출장 says:

    After exploring a handful of the articles on your web site, I seriously appreciate your way of blogging. I book-marked it to my bookmark website list and will be checking back in the near future. Take a look at my web site as well and let me know your opinion.

  221. Very good blog post. I absolutely love this website. Thanks!

  222. Louissorse says:

    new ed pills best otc ed pills
    erection pills that work

  223. 서울출장 says:

    Very good information. Lucky me I found your site by chance (stumbleupon). I’ve saved as a favorite for later!

  224. Louissorse says:

    ed drugs top ed pills
    erection pills viagra online

  225. 먹튀검증 says:

    Very good information. Lucky me I recently found your website by chance (stumbleupon). I’ve saved it for later!

  226. 먹튀검증 says:

    Great site you’ve got here.. Itís hard to find quality writing like yours nowadays. I honestly appreciate individuals like you! Take care!!

  227. Louissorse says:

    best ed treatment pills erection pills
    best ed medications

  228. Louissorse says:

    best ed pill ed meds online
    best ed pill

  229. Jbbvapeno says:

    mexican pharmacy online medications cialis online pharmacy mexican pharmacy online

  230. Louissorse says:

    over the counter erectile dysfunction pills erectile dysfunction medications
    best ed drugs

  231. Louissorse says:

    ed meds cheap erectile dysfunction pills
    ed treatment pills

  232. Louissorse says:

    best erectile dysfunction pills best ed pills online
    best ed medication

  233. Good information. Lucky me I came across your site by accident (stumbleupon). I have saved as a favorite for later!

  234. Lbsxapeno says:

    viagra pharmacy 100mg viagra coupuns prescription drugs from canada online

  235. Ahkdapeno says:

    online canadian pharmacies doctor prescription canadianpharmacyusa24h

  236. Hello there! This post could not be written any better! Reading through this article reminds me of my previous roommate! He continually kept preaching about this. I most certainly will forward this article to him. Pretty sure he’ll have a great read. Thanks for sharing!

  237. Rolandcab says:

    viagra cost per pill online doctor prescription for viagra
    viagra otc

  238. 출장 says:

    Great post! We will be linking to this particularly great post on our site. Keep up the great writing.

  239. Fqhhapeno says:

    drugstore online canadapharmacy prescription discount

  240. Jbnbirore says:

    cheap medications canadian pharmacy kingcanadian viagra ordering prescriptions from canada legally

  241. This website was… how do I say it? Relevant!! Finally I’ve found something which helped me. Cheers!

  242. Hello! I simply wish to offer you a huge thumbs up for the great information you have here on this post. I’ll be coming back to your site for more soon.

  243. NncsExork says:

    viagra super force side effects viagra kaufen per nach nahme viagra gum

  244. Kbcxsmat says:

    us pharmacy no prior prescription online pharmacy without a prescription canada pharmacy online reviews

  245. 출장안마 says:

    Great web site you’ve got here.. It챠s hard to find good quality writing like yours nowadays. I seriously appreciate individuals like you! Take care!!

  246. GlennNab says:

    minomycin capsules ceftin online
    clindamycin for sale

  247. GlennNab says:

    order fucidin buy ceftin
    cipro for sale

  248. 먹튀검증 says:

    Hello! I could have sworn Iíve been to your blog before but after browsing through some of the posts I realized itís new to me. Regardless, Iím definitely delighted I found it and Iíll be bookmarking it and checking back often!

  249. GlennNab says:

    order stromectol online sumycin generic
    order tinidazole online

  250. GlennNab says:

    buy sumycin online floxin generic
    buy noroxin

  251. GlennNab says:

    generic biaxin bactrim generic
    order bactrim online

  252. tinyurl.com says:

    My family every time say that I am wasting my time here at web, however I know I
    am getting know-how daily by reading thes fastidious posts.

  253. GlennNab says:

    order panmycin online buy zithromax
    ciplox online

  254. Jbbnapeno says:

    manipular cialis dangers of counterfeit cialis does cialis cause memory loss

  255. Labxapeno says:

    cialis voor de vrouw cialis online fast delivery emivita del cialis

  256. Everything is very open with a very clear description of the issues. It was really informative. Your website is very useful. Many thanks for sharing!

  257. Ahbzapeno says:

    payday loan places in topeka ks cash america payday advance hawthorne are internet payday loans legal in colorado

  258. I must thank you for the efforts you have put in penning this blog. I really hope to see the same high-grade content by you in the future as well. In fact, your creative writing abilities has encouraged me to get my own, personal website now 😉

  259. Jbnvirore says:

    cash advance payment plans west river cash advance loan cash easy

  260. Excellent site you have got here.. It챠s difficult to find high-quality writing like yours these days. I really appreciate individuals like you! Take care!!

  261. FbsgExork says:

    cialis online buy cialis with dapoxetine does cialis work

  262. Kvaxsmat says:

    cash advance alliance ky cash advance berea ky are payday loans illegal in florida

  263. Fqbbapeno says:

    payday loans woonsocket ri money loans richmond direct lender payday loans in michigan

  264. bookmarked!!, I really like your web site!

  265. Richardlaf says:

    what are the side effects of cialis cialis vs levitra
    cialis online

  266. Richardlaf says:

    5 mg cialis coupon printable canada cialis
    cialis without a doctor’s prescription

  267. Richardlaf says:

    cialis patent expiration does medicaid cover cialis
    coupons for cialis

  268. Richardlaf says:

    fda warning list cialis cialis side effects
    cialis 30 day trial coupon

  269. Richardlaf says:

    real cialis without a doctor’s prescription tadalafil vs cialis
    how to get cialis samples

  270. A fascinating discussion is worth comment. I do believe that you ought to publish more about this topic, it might not be a taboo matter but generally people do not talk about such issues. To the next! Many thanks!!

  271. Triago says:

    You actually expressed this exceptionally well. https://www.kamagramama.com kamagra zel Ittueyd

  272. Richardlaf says:

    cialis prices 20mg cialis pills
    30ml liquid cialis

  273. Richardlaf says:

    cialis for daily use cialis vs levitra
    what are the side effects of cialis

  274. Richardlaf says:

    legitimate cialis by mail how to get cialis samples
    cialis online pharmacy

  275. Iím impressed, I have to admit. Rarely do I encounter a blog thatís both equally educative and amusing, and let me tell you, you’ve hit the nail on the head. The issue is something too few people are speaking intelligently about. I’m very happy I came across this in my hunt for something regarding this.

  276. Richardlaf says:

    normal dose cialis lowest cialis prices
    liquid cialis

  277. I blog frequently and I genuinely appreciate your information. Your article has truly peaked my interest. I am going to book mark your website and keep checking for new details about once per week. I subscribed to your RSS feed too.

Leave a Reply