Coding – Hare or Tortoise ?


You have a product to build, this requires an embedded operating system (of course!) and applications/services – you have a choice of application development tools, languages and frameworks



  • Assembler – small, fast, error prone, takes for ever to code – and looks stupid on a printout (only taking the first few characters on a page, but the comments can of course make up for that [you do comment your code, right?])

  • C/C++ – relatively small, faster development than Assembler – still error prone, easy to make mistakes with pointers, object lifetimes etc…

  • C/C++ with libraries (OWL/MFC/ATL/STL/WTL) – can still be relatively small (when dynamically linked), still faster than assembler, and perhaps faster than “pure” C/C++, but you have a framework to assist with common tasks (string, file, graphics)

  • .NET/Java – binaries still small, large framework, memory leaks and object lifetimes are taken care of by the framework, great libraries to assist with graphics, files, XMLWS, database etc… – RAD !

The further down the list you get the faster the development becomes, you spend less time worrying about the core technologies your application uses (file access, XML parsing etc), but instead focus on gluing the various technologies together – you also put more trust in the underlying framework and the code that’s been written by someone else – the same can also be true of the underlying embedded operating system – you *could* write your own operating system, you could take an existing operating system and write your own infrastructure technologies (TCP stack, MQ, database etc…), but that doesn’t make any sense, you would be focusing on the infrastructure, not focusing on getting your device to market.


Here’s the question – where is your trust level for application development frameworks and embedded operating systems ?


– Mike

Comments (36)

  1. I think you’ve forgot about one but important thing: pure C/C++ way is a portable way. I mean, you may compile your source code on many platforms.

    Second, Java/.NET isn’t a solution for every problem around the world. Simply, professional developer should know many technologies and tools then he is able to select the right tool to solve particular problem. You know, if you are only Java/.NET developer then your skills are poor and your solution strongly depends on those two technologies, let’s say managed environments.

    But what are you going to do if you need to write some fast and robust code i.e. numerics or graphics library, you know what I mean.

    I think good developer should deliver to the user as best solution as it’s possible.

    I usually says that user must not pay for developer’s comfort. Does mean e.g. if you will write something in Java because it has GC and provides you with faster development time but your app runs slowly and user must spend seconds to get some response from your app then your user pays for your comfort, but he shouldn’t.

    Another story is that I’m C++ purist (+ I use ATL/WTL on Windows XP/CE) and everything what runs slower than written in C++ is simply slow :-)))

  2. mikehall says:

    I was talking with Chris Muench from Siemens a few days ago, we recorded a video for MSDN Channel 9 on Direct3D programming – one of the comments Chris makes in the video is how "new" developers are only being taught the higher level development languages (Java/C#/VB) without knowing lower level languages which bring you closer to the hardware and also help you better understand what’s happening in the system.

    – Mike

  3. I tried to find it searching for "Chris Muench" through the Channel 9 but no results returned.

    Has this video been published?

  4. tzagotta says:

    Mateusz, why do you assume a managed environment would always be slower than native code? Both are compiled – either by a JIT compiler or a conventional compiler. In theory as more optimization is done on managed environments, the performance should be similar. There is no real reason for a performance difference except that the conventional compiler has been optimized for many years, and JIT compilers are newer.

    Also, managed code can be very portable too – take Java for example.

    I think in the future, for applications and components, nearly all code will be written in managed environments. There are lots of advantages, and really no serious disadvantages.

    FYI, our managed C# apps run just as fast, or faster, than our C++ native apps did in the past. In fact, for our very first C# app, our customer, without any prompting, told us how surprised they were that it was so fast. The didn’t even know that we had switched technologies.

  5. Sean says:

    I think you need to keep in mind your target platform. If you are doing an embedded design with a 300MHz ARM CPU running WinCE, managed code is going to be quite lethargic for graphics intense operation. Your context switching and load times will be slow. There are many things you cannot do in .NET CF that will require you to go back to native code. When compared to native, there is no doubt which one you should choose.

    Sean

  6. tzagotta says:

    When C compilers first became popular, everyone programmed in assembly language, and what you heard most often was that folks need to continue to do all development in assembly because you couldn’t afford the inefficiency of the C compiler, or that there were some things that just have to be done in assembly. But compilers improved, and hardware became faster, and now nearly nobody involved in software development would consider development in assembly language, other than small bits that absolutely have to be done that way. This is because of the productivity gains of going to a higher level of abstraction, which is Mike’s thesis in his blog post.

    I (and others) see the same situation with managed code versus native code. You are at a slightly higher level of abstraction, and the managed code is maybe not quite as fast as native code for some applications. But again, these compilers are going to continue to improve, and hardware will continue to become faster, so these drawbacks will eventually be erased. And the main benefit of programming with managed code versus native code is again productivity (and safety/security, etc.). This is the compelling reason for changing over to, e.g., C# instead of C++.

    I will agree that there are some areas where native code is still required, e.g., device drivers and maybe some other similar low-level code. So, in these areas, there really is little choice, at least in the current generation of operating systems.

    Sean, as you say, there is no doubt which one you should choose. I agree with your statement, but maybe not your conclusion. At our company, time-to-market and low development cost (NRE) is important. We are developing primarily applications on MS platforms. So in our case, the obvious choice is C# on .NET.

    I should say, as a disclaimer, that we have just closed the chapter of over 15 years of native code development in C/C++, and we are just getting started with C# (6 months). So my opinions and observations are really based on our particular experience with the transition to managed code. So far, for our application development, we haven’t come across anything in C# that required that we use C++. And with that transition, we have probably increased our programming productivity by 25-50%, depending on the particular task. Of course, your mileage may vary.

  7. Sean says:

    tzagotta,

    I don’t necessarily disagree with you. I just think your target platform will dictate your design. One thing to consider if you are doing Windows CE is how you would handle initial boot, especially if your target device is not ‘always on’. In other words, your customer can power on and off your device. If you make your device’s UI entirely managed, you will have some challenges at boot time with getting your shell loaded. I doubt you could even do a custom managed shell in CE. We do our own custom native shell, which in turn can load other native applications.

    Also, imagine if your company were transitioning from an in-house OS mostly written in C and assembly. 99% of your code is in C. Much of that code does calculations and heavy lifting, you might say. Imagine the performance hit you would take by having to constantly dip back into this native code from managed code.

    Customer satisfaction is another key area. If your company is transitioning to Windows CE within a product line, you want to be darn sure that this next generation is as fast if not faster than the previous generation, while keeping the component cost reasonable. Managed code requires quite a bit more CPU power to keep up. That adds cost to your Bill of Materials (BOM). Changing horses to a more powerful processor would affect your schedule.

    So to recap, it reallly depends on your target platforms, target market, and the expectations of your customers. For my dev team, we have chosen to go with WTL and custom in house frameworks that keep the speed good and gives us the ultimate in flexibility.

    Sean

  8. Sean says:

    I had another thought. I was just at CES for a day to scope out various embedded consumer electronic devices. One thing I noted was that those embedded devices running Windows CE tended to be quite slower to the equivalent device running in-house OS or embedded Linux. The UIs tended to be sluggish. Many pushed up an hourglass just to context switch between applications! In my company that would be unacceptable. When we compare our devices with our in-house OS to those running Windows CE, there is no comparison, ours is far more responsive with often less powerful processors.

    So it is important to not only optimize and be concerned about managed versus native but to also be concerned about native as well. There are inherent performance tweaks that need to be profiled and learned when using Windows CE. Obviously a lot of these consumer embedded WIndows CE devices that you see at CES are just canned ODM reference designs, with some third party software tacked on, with no attention given to integration and performance.

    Part of my goal is to keep my WinCE designs lean and mean so that my customers can’t tell the difference between our in-house OS embedded products and our WinCE products.

    Sean

  9. mikehall says:

    Sean,

    Why wouldn’t you be able to write a managed shell on Windows CE ? – take the following blog post for example – http://blogs.msdn.com/mikehall/archive/2005/08/03/447386.aspx

    Many Windows CE devices don’t need to UI task switch (although background tasks like devices, services etc… may need to switch), take for example the industrial control devices, GPS devices etc…

    BTW, the Chris Muench video is in the MSDN Channel 9 queue, hopefully this will be up shortly.

    – Mike

  10. mikehall says:

    Sean, when you say "sluggish" when context switching between applications, do you mean starting another process or switching between one running process and another running process ?

    Think of Pocket PC devices, there isn’t a concept of "Shutting down" an application, all applications run in the background, sure, when you start an application for the first time you may see a wait cursor while the process starts, you don’t see a wait cursor when swapping between running processes.

    If you’re building a dedicated device, you could start all processes at boot time, this will of course eliminate the startup time when a new process is loaded (since you will just be task switching) – think of real-time systems, you allocate all of your memory, threads and objects up front so you don’t need to spend cycles creating new objects on the fly.

    – Mike

  11. Oskar Berreteaga says:

    To me it’s a matter of selecting the right tool for the job. It’s nice to have frameworks, foundation classes and everything else. It means that my toolbox is bigger and that I have more ways of accomplishing different tasks. That’s ok with marketing.

    Then, reality bites you and you’re asked to deliver a fast reliable real-time control system. This usually translates into C/C++ programming.

    However, I really hope that in the future frameworks, middleware and whatever they come up with, will help me build more reliable and faster real-time systems. Those tools need to be fast. I think it isn’t fair play just to wait and see how hardware gets faster. Software must improve its speed, too.

  12. mikehall says:

    Oskar, I agree that you should use the right tool for the job, and having a choice of C/C++, or C/C++ with frameworks, or managed development makes our lives as developers much better.

    You mention real-time, and how it might be interesting to use some of these frameworks, perhaps even managed code in a real-time environment – here’s a link to an article written by Maarten Struys from PTS Software that discusses the use of managed code in real-time systems – the results are surprisingly good – http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dncenet/html/Real-Time_NETCF.asp

    – Mike

  13. tzagotta:

    > Also, managed code can be very portable

    > too – take Java for example.

    I don’t think Microsoft will take such effort to make it portable. The only chance is the Mono project but without any help from Microsoft they won’t deliver fully featured portable .NET.

    tzagotta:

    > FYI, our managed C# apps run just as fast,

    > or faster, than our C++ native apps

    > did in the past.

    Yes, but I can bet you run it on modern machines. Second option is that your apps are quite simple, I mean they do simple stuff i.e. display grid from database etc.

    Yet another option is that your C++ apps were written in not-a-C++ way, I mean modern C++. You know, VC++ 6.0 is not the same C++ as today. In example, MFC is not a C++, this is C with classes. So, there are many many many factors to consider.

    I’m not going to show you any chart to prove native code is faster than managed etc.

    You know, with statistics in hand you can prove every argument, even that which is not true at all 🙂

    What is the most important factor for me is simply user’s feeling. Take your Windows Mobile PDA and try to parse 1MB XML files with DOM using both C# and C++. Then come back and tell me what times you’ve observed. I can tell you what I observed, the .NET application does the job in seconds, when native code app in less-than-second time.

    The same with graphics operations (I don’t talk about GAPI/DirectX).

    In our company, we’ve tested many GIS/GPS toolkits for .NET and we observed significant time delays in this field. Check it yourself testing products from: http://franson.biz/

    You can observe that opening simple dialog window is also slower. You can see this delay so you don’t have to measure exact time at all.

    User won’t do any measurements, he just observes.

    Conclusion: if user will run your app on modern PC with 2-4 GHz and 512MB – XGB RAM then OK, I also say there is not much difference. But on Windows Mobile devices or older PCs with small amount of memory you will observe significant delays. That’s all.

    The same with Java, try to run Eclipse on Windows NT/2000 with 128MB of memory and 700MHz CPU 🙂

    Certainly, you can say that today noone uses such old computer but that’s not truth.

    Consider why Microsoft is going to release cutted-down edition of next Windows?

    Because Microsoft sees that there is so huge amount of users running even Windows 98 and they won’t do any hardware upgrade.

    My opinion is that it’s to earlier to move whole mobile bussines to .NET. May be around .NET 3.0

  14. tzagotta:

    > […]

    > This is the compelling reason for changing

    > over to, e.g., C# instead of C++.

    I prefer to have more flexibility: no-GC or with GC but if you move to .NET completely then you have to relay on GC which is not a panacea for all problems.

    tzagotta:

    > At our company, time-to-market and low

    > development cost (NRE) is important.

    > We are developing primarily applications on

    > MS platforms. So in our case, the obvious

    > choice is C# on .NET.

    OK, so may be you could say what is the kind of your applications?

    Another question I’d ask you, and in fact it’s the most important for me, could you list all advantages of .NET and C# which carried the biggest weight on your decision to move to .NET?

  15. Sean:

    > For my dev team, we have chosen to go with

    > WTL and custom in house frameworks that keep

    > the speed good and gives us the ultimate in

    > flexibility.

    That’s the same way we decided to go in company I work for. Simple, database driven applications are made in .NET but mapping applications usually based on heavy geometry calculations etc are made with WTL (+ ATL).

    BTW, I’m a big fun of WTL!

  16. Sean:

    > […]

    > The UIs tended to be sluggish.

    Yes, I can say I have very similar experience.

    Yet another one (not very .NET related):

    Yesterday, I played for while with one of latest HP iPAQ hx2XXX (I’m not sure which one exactly).

    What I want to say is that it’s less responsive than my iPAQ 2210 or even older one iPAQ 1930.

    There is 2-5 seconds delay even if you play with Control Panel applets. I have no idea why it works slower, may be WM5 libraries are not well optimized for Intel PXA270 CPU. Honestly, I can’t believe that’s the reason. So, why?

  17. Mike Hall:

    > Here’s a link to an article written by

    > Maarten Struys from PTS Software that

    > discusses the use of managed code in real-time

    > systems – the results are surprisingly good

    > –http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dncenet/html/Real-Time_NETCF.asp

    >

    Hmm, from the first look (Figure 1) I see that real-time stuff lives inside the native Win32 DLL but .NET is used for presentation layer only. So as such I’d not say that .NET runs as in real-time etc.

    Yes, I agree that’s a good explanation of how to connect those two worlds but I don’t see any ting about putting real-time responsibilities on .NET side.

    What do you think about it?

  18. mikehall says:

    Mateusz, I’m not suggesting that all real-time responsibilities are handed over to the managed portion of the process (how are you going to handle the IST in managed code?) – A combination of RAD UI written in C#/VB and underlying native code DLL that handles the IST would appear to combine the best of both worlds – fast application development AND real-time response.

    – Mike

  19. Mike:

    > I’m not suggesting that all real-time

    > responsibilities are handed over to the managed

    > portion of the process

    Sorry, I didn’t want to say so. It’s small misuderstanding. But yes I agree it’s great solution to combine both worlds that way.

  20. Phentermine says:

    <a href="http://lol.to/bbs.php?bbs=phenST">phentermine</a>”>http://lol.to/bbs.php?bbs=phenST">phentermine</a>[url=http://lol.to/bbs.php?bbs=phenST]phentermine[/url]<a href="http://4allfree.com/cgi/gb.id?Tphentermine">phentermine</a>”>http://4allfree.com/cgi/gb.id?Tphentermine">phentermine</a>[url=http://4allfree.com/cgi/gb.id?Tphentermine]phentermine[/url]<a href="http://bingo.up-a.com">bingo</a>”>http://bingo.up-a.com">bingo</a>[url=http://bingo.up-a.com]bingo[/url]<a href="http://online-slots.spycounter.net">slots</a>”>http://online-slots.spycounter.net">slots</a>[url=http://online-slots.spycounter.net]slots[/url]<a href="http://myjavaserver.com/~thegame/blackjack.html">blackjack</a>”>http://myjavaserver.com/~thegame/blackjack.html">blackjack</a>[url=http://myjavaserver.com/~thegame/blackjack.html]blackjack[/url]<a href="http://www.cheapest-viagra-source.com">viagra</a>”>http://www.cheapest-viagra-source.com">viagra</a>[url=http://www.cheapest-viagra-source.com]viagra[/url]<a href="http://tamiflu.usa-online-pharmacy.net">tamiflu</a>”>http://tamiflu.usa-online-pharmacy.net">tamiflu</a>[url=http://tamiflu.usa-online-pharmacy.net]tamiflu[/url]<a href="http://www.viagra-here.com">viagra</a>”>http://www.viagra-here.com">viagra</a>[url=http://www.viagra-here.com]viagra[/url]<a href="http://www.viagra-exchange.com">viagra</a>”>http://www.viagra-exchange.com">viagra</a>[url=http://www.viagra-exchange.com]viagra[/url]<a href="http://www.0-online-casino.us">online”>http://www.0-online-casino.us">online casino</a>[url=http://www.0-online-casino.us]online casino[/url]<a href="http://www.0-poker.biz">poker</a>”>http://www.0-poker.biz">poker</a>[url=http://www.0-poker.biz]poker[/url]<a href="http://www.phentermine-support.com">phentermine</a>”>http://www.phentermine-support.com">phentermine</a>[url=http://www.phentermine-support.com]phentermine[/url]<a href="http://www.spaceref.com/inserts/phentermine.html">phentermine</a>”>http://www.spaceref.com/inserts/phentermine.html">phentermine</a>[url=http://www.spaceref.com/inserts/phentermine.html]phentermine[/url] 4wzhs9ej-800056189

  21. Phentermine says:

    <a href="http://lol.to/bbs.php?bbs=phenST">phentermine</a>”>http://lol.to/bbs.php?bbs=phenST">phentermine</a>[url=http://lol.to/bbs.php?bbs=phenST]phentermine[/url]<a href="http://4allfree.com/cgi/gb.id?Tphentermine">phentermine</a>”>http://4allfree.com/cgi/gb.id?Tphentermine">phentermine</a>[url=http://4allfree.com/cgi/gb.id?Tphentermine]phentermine[/url]<a href="http://bingo.up-a.com">bingo</a>”>http://bingo.up-a.com">bingo</a>[url=http://bingo.up-a.com]bingo[/url]<a href="http://online-slots.spycounter.net">slots</a>”>http://online-slots.spycounter.net">slots</a>[url=http://online-slots.spycounter.net]slots[/url]<a href="http://myjavaserver.com/~thegame/blackjack.html">blackjack</a>”>http://myjavaserver.com/~thegame/blackjack.html">blackjack</a>[url=http://myjavaserver.com/~thegame/blackjack.html]blackjack[/url]<a href="http://www.cheapest-viagra-source.com">viagra</a>”>http://www.cheapest-viagra-source.com">viagra</a>[url=http://www.cheapest-viagra-source.com]viagra[/url]<a href="http://tamiflu.usa-online-pharmacy.net">tamiflu</a>”>http://tamiflu.usa-online-pharmacy.net">tamiflu</a>[url=http://tamiflu.usa-online-pharmacy.net]tamiflu[/url]<a href="http://www.viagra-here.com">viagra</a>”>http://www.viagra-here.com">viagra</a>[url=http://www.viagra-here.com]viagra[/url]<a href="http://www.viagra-exchange.com">viagra</a>”>http://www.viagra-exchange.com">viagra</a>[url=http://www.viagra-exchange.com]viagra[/url]<a href="http://www.0-online-casino.us">online”>http://www.0-online-casino.us">online casino</a>[url=http://www.0-online-casino.us]online casino[/url]<a href="http://www.0-poker.biz">poker</a>”>http://www.0-poker.biz">poker</a>[url=http://www.0-poker.biz]poker[/url]<a href="http://www.phentermine-support.com">phentermine</a>”>http://www.phentermine-support.com">phentermine</a>[url=http://www.phentermine-support.com]phentermine[/url]<a href="http://www.spaceref.com/inserts/phentermine.html">phentermine</a>”>http://www.spaceref.com/inserts/phentermine.html">phentermine</a>[url=http://www.spaceref.com/inserts/phentermine.html]phentermine[/url] 4wzhs9ej-800056189

  22. Phentermine says:

    <a href="http://lol.to/bbs.php?bbs=phenST">phentermine</a>”>http://lol.to/bbs.php?bbs=phenST">phentermine</a>[url=http://lol.to/bbs.php?bbs=phenST]phentermine[/url]<a href="http://4allfree.com/cgi/gb.id?Tphentermine">phentermine</a>”>http://4allfree.com/cgi/gb.id?Tphentermine">phentermine</a>[url=http://4allfree.com/cgi/gb.id?Tphentermine]phentermine[/url]<a href="http://bingo.up-a.com">bingo</a>”>http://bingo.up-a.com">bingo</a>[url=http://bingo.up-a.com]bingo[/url]<a href="http://online-slots.spycounter.net">slots</a>”>http://online-slots.spycounter.net">slots</a>[url=http://online-slots.spycounter.net]slots[/url]<a href="http://myjavaserver.com/~thegame/blackjack.html">blackjack</a>”>http://myjavaserver.com/~thegame/blackjack.html">blackjack</a>[url=http://myjavaserver.com/~thegame/blackjack.html]blackjack[/url]<a href="http://www.cheapest-viagra-source.com">viagra</a>”>http://www.cheapest-viagra-source.com">viagra</a>[url=http://www.cheapest-viagra-source.com]viagra[/url]<a href="http://tamiflu.usa-online-pharmacy.net">tamiflu</a>”>http://tamiflu.usa-online-pharmacy.net">tamiflu</a>[url=http://tamiflu.usa-online-pharmacy.net]tamiflu[/url]<a href="http://www.viagra-here.com">viagra</a>”>http://www.viagra-here.com">viagra</a>[url=http://www.viagra-here.com]viagra[/url]<a href="http://www.viagra-exchange.com">viagra</a>”>http://www.viagra-exchange.com">viagra</a>[url=http://www.viagra-exchange.com]viagra[/url]<a href="http://www.0-online-casino.us">online”>http://www.0-online-casino.us">online casino</a>[url=http://www.0-online-casino.us]online casino[/url]<a href="http://www.0-poker.biz">poker</a>”>http://www.0-poker.biz">poker</a>[url=http://www.0-poker.biz]poker[/url]<a href="http://www.phentermine-support.com">phentermine</a>”>http://www.phentermine-support.com">phentermine</a>[url=http://www.phentermine-support.com]phentermine[/url]<a href="http://www.spaceref.com/inserts/phentermine.html">phentermine</a>”>http://www.spaceref.com/inserts/phentermine.html">phentermine</a>[url=http://www.spaceref.com/inserts/phentermine.html]phentermine[/url] 4wzhs9ej-800056189

  23. Phentermine says:

    <a href="http://lol.to/bbs.php?bbs=phenST">phentermine</a>”>http://lol.to/bbs.php?bbs=phenST">phentermine</a>[url=http://lol.to/bbs.php?bbs=phenST]phentermine[/url]<a href="http://4allfree.com/cgi/gb.id?Tphentermine">phentermine</a>”>http://4allfree.com/cgi/gb.id?Tphentermine">phentermine</a>[url=http://4allfree.com/cgi/gb.id?Tphentermine]phentermine[/url]<a href="http://bingo.up-a.com">bingo</a>”>http://bingo.up-a.com">bingo</a>[url=http://bingo.up-a.com]bingo[/url]<a href="http://online-slots.spycounter.net">slots</a>”>http://online-slots.spycounter.net">slots</a>[url=http://online-slots.spycounter.net]slots[/url]<a href="http://myjavaserver.com/~thegame/blackjack.html">blackjack</a>”>http://myjavaserver.com/~thegame/blackjack.html">blackjack</a>[url=http://myjavaserver.com/~thegame/blackjack.html]blackjack[/url]<a href="http://www.cheapest-viagra-source.com">viagra</a>”>http://www.cheapest-viagra-source.com">viagra</a>[url=http://www.cheapest-viagra-source.com]viagra[/url]<a href="http://tamiflu.usa-online-pharmacy.net">tamiflu</a>”>http://tamiflu.usa-online-pharmacy.net">tamiflu</a>[url=http://tamiflu.usa-online-pharmacy.net]tamiflu[/url]<a href="http://www.viagra-here.com">viagra</a>”>http://www.viagra-here.com">viagra</a>[url=http://www.viagra-here.com]viagra[/url]<a href="http://www.viagra-exchange.com">viagra</a>”>http://www.viagra-exchange.com">viagra</a>[url=http://www.viagra-exchange.com]viagra[/url]<a href="http://www.0-online-casino.us">online”>http://www.0-online-casino.us">online casino</a>[url=http://www.0-online-casino.us]online casino[/url]<a href="http://www.0-poker.biz">poker</a>”>http://www.0-poker.biz">poker</a>[url=http://www.0-poker.biz]poker[/url]<a href="http://www.phentermine-support.com">phentermine</a>”>http://www.phentermine-support.com">phentermine</a>[url=http://www.phentermine-support.com]phentermine[/url]<a href="http://www.spaceref.com/inserts/phentermine.html">phentermine</a>”>http://www.spaceref.com/inserts/phentermine.html">phentermine</a>[url=http://www.spaceref.com/inserts/phentermine.html]phentermine[/url] 4wzhs9ej-800056189

  24. Phentermine says:

    <a href="http://lol.to/bbs.php?bbs=phenST">phentermine</a>”>http://lol.to/bbs.php?bbs=phenST">phentermine</a>[url=http://lol.to/bbs.php?bbs=phenST]phentermine[/url]<a href="http://4allfree.com/cgi/gb.id?Tphentermine">phentermine</a>”>http://4allfree.com/cgi/gb.id?Tphentermine">phentermine</a>[url=http://4allfree.com/cgi/gb.id?Tphentermine]phentermine[/url]<a href="http://bingo.up-a.com">bingo</a>”>http://bingo.up-a.com">bingo</a>[url=http://bingo.up-a.com]bingo[/url]<a href="http://online-slots.spycounter.net">slots</a>”>http://online-slots.spycounter.net">slots</a>[url=http://online-slots.spycounter.net]slots[/url]<a href="http://myjavaserver.com/~thegame/blackjack.html">blackjack</a>”>http://myjavaserver.com/~thegame/blackjack.html">blackjack</a>[url=http://myjavaserver.com/~thegame/blackjack.html]blackjack[/url]<a href="http://www.cheapest-viagra-source.com">viagra</a>”>http://www.cheapest-viagra-source.com">viagra</a>[url=http://www.cheapest-viagra-source.com]viagra[/url]<a href="http://tamiflu.usa-online-pharmacy.net">tamiflu</a>”>http://tamiflu.usa-online-pharmacy.net">tamiflu</a>[url=http://tamiflu.usa-online-pharmacy.net]tamiflu[/url]<a href="http://www.viagra-here.com">viagra</a>”>http://www.viagra-here.com">viagra</a>[url=http://www.viagra-here.com]viagra[/url]<a href="http://www.viagra-exchange.com">viagra</a>”>http://www.viagra-exchange.com">viagra</a>[url=http://www.viagra-exchange.com]viagra[/url]<a href="http://www.0-online-casino.us">online”>http://www.0-online-casino.us">online casino</a>[url=http://www.0-online-casino.us]online casino[/url]<a href="http://www.0-poker.biz">poker</a>”>http://www.0-poker.biz">poker</a>[url=http://www.0-poker.biz]poker[/url]<a href="http://www.phentermine-support.com">phentermine</a>”>http://www.phentermine-support.com">phentermine</a>[url=http://www.phentermine-support.com]phentermine[/url]<a href="http://www.spaceref.com/inserts/phentermine.html">phentermine</a>”>http://www.spaceref.com/inserts/phentermine.html">phentermine</a>[url=http://www.spaceref.com/inserts/phentermine.html]phentermine[/url] 4wzhs9ej-800056189

  25. Phentermine says:

    <a href="http://lol.to/bbs.php?bbs=phenST">phentermine</a>”>http://lol.to/bbs.php?bbs=phenST">phentermine</a>[url=http://lol.to/bbs.php?bbs=phenST]phentermine[/url]<a href="http://4allfree.com/cgi/gb.id?Tphentermine">phentermine</a>”>http://4allfree.com/cgi/gb.id?Tphentermine">phentermine</a>[url=http://4allfree.com/cgi/gb.id?Tphentermine]phentermine[/url]<a href="http://bingo.up-a.com">bingo</a>”>http://bingo.up-a.com">bingo</a>[url=http://bingo.up-a.com]bingo[/url]<a href="http://online-slots.spycounter.net">slots</a>”>http://online-slots.spycounter.net">slots</a>[url=http://online-slots.spycounter.net]slots[/url]<a href="http://myjavaserver.com/~thegame/blackjack.html">blackjack</a>”>http://myjavaserver.com/~thegame/blackjack.html">blackjack</a>[url=http://myjavaserver.com/~thegame/blackjack.html]blackjack[/url]<a href="http://www.cheapest-viagra-source.com">viagra</a>”>http://www.cheapest-viagra-source.com">viagra</a>[url=http://www.cheapest-viagra-source.com]viagra[/url]<a href="http://tamiflu.usa-online-pharmacy.net">tamiflu</a>”>http://tamiflu.usa-online-pharmacy.net">tamiflu</a>[url=http://tamiflu.usa-online-pharmacy.net]tamiflu[/url]<a href="http://www.viagra-here.com">viagra</a>”>http://www.viagra-here.com">viagra</a>[url=http://www.viagra-here.com]viagra[/url]<a href="http://www.viagra-exchange.com">viagra</a>”>http://www.viagra-exchange.com">viagra</a>[url=http://www.viagra-exchange.com]viagra[/url]<a href="http://www.0-online-casino.us">online”>http://www.0-online-casino.us">online casino</a>[url=http://www.0-online-casino.us]online casino[/url]<a href="http://www.0-poker.biz">poker</a>”>http://www.0-poker.biz">poker</a>[url=http://www.0-poker.biz]poker[/url]<a href="http://www.phentermine-support.com">phentermine</a>”>http://www.phentermine-support.com">phentermine</a>[url=http://www.phentermine-support.com]phentermine[/url]<a href="http://www.spaceref.com/inserts/phentermine.html">phentermine</a>”>http://www.spaceref.com/inserts/phentermine.html">phentermine</a>[url=http://www.spaceref.com/inserts/phentermine.html]phentermine[/url] 4wzhs9ej-800056189

  26. Phentermine says:

    <a href="http://lol.to/bbs.php?bbs=phenST">phentermine</a>”>http://lol.to/bbs.php?bbs=phenST">phentermine</a>[url=http://lol.to/bbs.php?bbs=phenST]phentermine[/url]<a href="http://4allfree.com/cgi/gb.id?Tphentermine">phentermine</a>”>http://4allfree.com/cgi/gb.id?Tphentermine">phentermine</a>[url=http://4allfree.com/cgi/gb.id?Tphentermine]phentermine[/url]<a href="http://bingo.up-a.com">bingo</a>”>http://bingo.up-a.com">bingo</a>[url=http://bingo.up-a.com]bingo[/url]<a href="http://online-slots.spycounter.net">slots</a>”>http://online-slots.spycounter.net">slots</a>[url=http://online-slots.spycounter.net]slots[/url]<a href="http://myjavaserver.com/~thegame/blackjack.html">blackjack</a>”>http://myjavaserver.com/~thegame/blackjack.html">blackjack</a>[url=http://myjavaserver.com/~thegame/blackjack.html]blackjack[/url]<a href="http://www.cheapest-viagra-source.com">viagra</a>”>http://www.cheapest-viagra-source.com">viagra</a>[url=http://www.cheapest-viagra-source.com]viagra[/url]<a href="http://tamiflu.usa-online-pharmacy.net">tamiflu</a>”>http://tamiflu.usa-online-pharmacy.net">tamiflu</a>[url=http://tamiflu.usa-online-pharmacy.net]tamiflu[/url]<a href="http://www.viagra-here.com">viagra</a>”>http://www.viagra-here.com">viagra</a>[url=http://www.viagra-here.com]viagra[/url]<a href="http://www.viagra-exchange.com">viagra</a>”>http://www.viagra-exchange.com">viagra</a>[url=http://www.viagra-exchange.com]viagra[/url]<a href="http://www.0-online-casino.us">online”>http://www.0-online-casino.us">online casino</a>[url=http://www.0-online-casino.us]online casino[/url]<a href="http://www.0-poker.biz">poker</a>”>http://www.0-poker.biz">poker</a>[url=http://www.0-poker.biz]poker[/url]<a href="http://www.phentermine-support.com">phentermine</a>”>http://www.phentermine-support.com">phentermine</a>[url=http://www.phentermine-support.com]phentermine[/url]<a href="http://www.spaceref.com/inserts/phentermine.html">phentermine</a>”>http://www.spaceref.com/inserts/phentermine.html">phentermine</a>[url=http://www.spaceref.com/inserts/phentermine.html]phentermine[/url] 4wzhs9ej-800056189

  27. Phentermine says:

    <a href="http://lol.to/bbs.php?bbs=phenST">phentermine</a>”>http://lol.to/bbs.php?bbs=phenST">phentermine</a>[url=http://lol.to/bbs.php?bbs=phenST]phentermine[/url]<a href="http://4allfree.com/cgi/gb.id?Tphentermine">phentermine</a>”>http://4allfree.com/cgi/gb.id?Tphentermine">phentermine</a>[url=http://4allfree.com/cgi/gb.id?Tphentermine]phentermine[/url]<a href="http://bingo.up-a.com">bingo</a>”>http://bingo.up-a.com">bingo</a>[url=http://bingo.up-a.com]bingo[/url]<a href="http://online-slots.spycounter.net">slots</a>”>http://online-slots.spycounter.net">slots</a>[url=http://online-slots.spycounter.net]slots[/url]<a href="http://myjavaserver.com/~thegame/blackjack.html">blackjack</a>”>http://myjavaserver.com/~thegame/blackjack.html">blackjack</a>[url=http://myjavaserver.com/~thegame/blackjack.html]blackjack[/url]<a href="http://www.cheapest-viagra-source.com">viagra</a>”>http://www.cheapest-viagra-source.com">viagra</a>[url=http://www.cheapest-viagra-source.com]viagra[/url]<a href="http://tamiflu.usa-online-pharmacy.net">tamiflu</a>”>http://tamiflu.usa-online-pharmacy.net">tamiflu</a>[url=http://tamiflu.usa-online-pharmacy.net]tamiflu[/url]<a href="http://www.viagra-here.com">viagra</a>”>http://www.viagra-here.com">viagra</a>[url=http://www.viagra-here.com]viagra[/url]<a href="http://www.viagra-exchange.com">viagra</a>”>http://www.viagra-exchange.com">viagra</a>[url=http://www.viagra-exchange.com]viagra[/url]<a href="http://www.0-online-casino.us">online”>http://www.0-online-casino.us">online casino</a>[url=http://www.0-online-casino.us]online casino[/url]<a href="http://www.0-poker.biz">poker</a>”>http://www.0-poker.biz">poker</a>[url=http://www.0-poker.biz]poker[/url]<a href="http://www.phentermine-support.com">phentermine</a>”>http://www.phentermine-support.com">phentermine</a>[url=http://www.phentermine-support.com]phentermine[/url]<a href="http://www.spaceref.com/inserts/phentermine.html">phentermine</a>”>http://www.spaceref.com/inserts/phentermine.html">phentermine</a>[url=http://www.spaceref.com/inserts/phentermine.html]phentermine[/url] 4wzhs9ej-800056189

  28. Phentermine says:

    <a href="http://lol.to/bbs.php?bbs=phenST">phentermine</a>”>http://lol.to/bbs.php?bbs=phenST">phentermine</a>[url=http://lol.to/bbs.php?bbs=phenST]phentermine[/url]<a href="http://4allfree.com/cgi/gb.id?Tphentermine">phentermine</a>”>http://4allfree.com/cgi/gb.id?Tphentermine">phentermine</a>[url=http://4allfree.com/cgi/gb.id?Tphentermine]phentermine[/url]<a href="http://bingo.up-a.com">bingo</a>”>http://bingo.up-a.com">bingo</a>[url=http://bingo.up-a.com]bingo[/url]<a href="http://online-slots.spycounter.net">slots</a>”>http://online-slots.spycounter.net">slots</a>[url=http://online-slots.spycounter.net]slots[/url]<a href="http://myjavaserver.com/~thegame/blackjack.html">blackjack</a>”>http://myjavaserver.com/~thegame/blackjack.html">blackjack</a>[url=http://myjavaserver.com/~thegame/blackjack.html]blackjack[/url]<a href="http://www.cheapest-viagra-source.com">viagra</a>”>http://www.cheapest-viagra-source.com">viagra</a>[url=http://www.cheapest-viagra-source.com]viagra[/url]<a href="http://tamiflu.usa-online-pharmacy.net">tamiflu</a>”>http://tamiflu.usa-online-pharmacy.net">tamiflu</a>[url=http://tamiflu.usa-online-pharmacy.net]tamiflu[/url]<a href="http://www.viagra-here.com">viagra</a>”>http://www.viagra-here.com">viagra</a>[url=http://www.viagra-here.com]viagra[/url]<a href="http://www.viagra-exchange.com">viagra</a>”>http://www.viagra-exchange.com">viagra</a>[url=http://www.viagra-exchange.com]viagra[/url]<a href="http://www.0-online-casino.us">online”>http://www.0-online-casino.us">online casino</a>[url=http://www.0-online-casino.us]online casino[/url]<a href="http://www.0-poker.biz">poker</a>”>http://www.0-poker.biz">poker</a>[url=http://www.0-poker.biz]poker[/url]<a href="http://www.phentermine-support.com">phentermine</a>”>http://www.phentermine-support.com">phentermine</a>[url=http://www.phentermine-support.com]phentermine[/url]<a href="http://www.spaceref.com/inserts/phentermine.html">phentermine</a>”>http://www.spaceref.com/inserts/phentermine.html">phentermine</a>[url=http://www.spaceref.com/inserts/phentermine.html]phentermine[/url] 4wzhs9ej-800056189

  29. Phentermine says:

    <a href="http://lol.to/bbs.php?bbs=phenST">phentermine</a>”>http://lol.to/bbs.php?bbs=phenST">phentermine</a>[url=http://lol.to/bbs.php?bbs=phenST]phentermine[/url]<a href="http://4allfree.com/cgi/gb.id?Tphentermine">phentermine</a>”>http://4allfree.com/cgi/gb.id?Tphentermine">phentermine</a>[url=http://4allfree.com/cgi/gb.id?Tphentermine]phentermine[/url]<a href="http://bingo.up-a.com">bingo</a>”>http://bingo.up-a.com">bingo</a>[url=http://bingo.up-a.com]bingo[/url]<a href="http://online-slots.spycounter.net">slots</a>”>http://online-slots.spycounter.net">slots</a>[url=http://online-slots.spycounter.net]slots[/url]<a href="http://myjavaserver.com/~thegame/blackjack.html">blackjack</a>”>http://myjavaserver.com/~thegame/blackjack.html">blackjack</a>[url=http://myjavaserver.com/~thegame/blackjack.html]blackjack[/url]<a href="http://www.cheapest-viagra-source.com">viagra</a>”>http://www.cheapest-viagra-source.com">viagra</a>[url=http://www.cheapest-viagra-source.com]viagra[/url]<a href="http://tamiflu.usa-online-pharmacy.net">tamiflu</a>”>http://tamiflu.usa-online-pharmacy.net">tamiflu</a>[url=http://tamiflu.usa-online-pharmacy.net]tamiflu[/url]<a href="http://www.viagra-here.com">viagra</a>”>http://www.viagra-here.com">viagra</a>[url=http://www.viagra-here.com]viagra[/url]<a href="http://www.viagra-exchange.com">viagra</a>”>http://www.viagra-exchange.com">viagra</a>[url=http://www.viagra-exchange.com]viagra[/url]<a href="http://www.0-online-casino.us">online”>http://www.0-online-casino.us">online casino</a>[url=http://www.0-online-casino.us]online casino[/url]<a href="http://www.0-poker.biz">poker</a>”>http://www.0-poker.biz">poker</a>[url=http://www.0-poker.biz]poker[/url]<a href="http://www.phentermine-support.com">phentermine</a>”>http://www.phentermine-support.com">phentermine</a>[url=http://www.phentermine-support.com]phentermine[/url]<a href="http://www.spaceref.com/inserts/phentermine.html">phentermine</a>”>http://www.spaceref.com/inserts/phentermine.html">phentermine</a>[url=http://www.spaceref.com/inserts/phentermine.html]phentermine[/url] 4wzhs9ej-800056189

  30. Phentermine says:

    <a href="http://lol.to/bbs.php?bbs=phenST">phentermine</a>”>http://lol.to/bbs.php?bbs=phenST">phentermine</a>[url=http://lol.to/bbs.php?bbs=phenST]phentermine[/url]<a href="http://4allfree.com/cgi/gb.id?Tphentermine">phentermine</a>”>http://4allfree.com/cgi/gb.id?Tphentermine">phentermine</a>[url=http://4allfree.com/cgi/gb.id?Tphentermine]phentermine[/url]<a href="http://bingo.up-a.com">bingo</a>”>http://bingo.up-a.com">bingo</a>[url=http://bingo.up-a.com]bingo[/url]<a href="http://online-slots.spycounter.net">slots</a>”>http://online-slots.spycounter.net">slots</a>[url=http://online-slots.spycounter.net]slots[/url]<a href="http://myjavaserver.com/~thegame/blackjack.html">blackjack</a>”>http://myjavaserver.com/~thegame/blackjack.html">blackjack</a>[url=http://myjavaserver.com/~thegame/blackjack.html]blackjack[/url]<a href="http://www.cheapest-viagra-source.com">viagra</a>”>http://www.cheapest-viagra-source.com">viagra</a>[url=http://www.cheapest-viagra-source.com]viagra[/url]<a href="http://tamiflu.usa-online-pharmacy.net">tamiflu</a>”>http://tamiflu.usa-online-pharmacy.net">tamiflu</a>[url=http://tamiflu.usa-online-pharmacy.net]tamiflu[/url]<a href="http://www.viagra-here.com">viagra</a>”>http://www.viagra-here.com">viagra</a>[url=http://www.viagra-here.com]viagra[/url]<a href="http://www.viagra-exchange.com">viagra</a>”>http://www.viagra-exchange.com">viagra</a>[url=http://www.viagra-exchange.com]viagra[/url]<a href="http://www.0-online-casino.us">online”>http://www.0-online-casino.us">online casino</a>[url=http://www.0-online-casino.us]online casino[/url]<a href="http://www.0-poker.biz">poker</a>”>http://www.0-poker.biz">poker</a>[url=http://www.0-poker.biz]poker[/url]<a href="http://www.phentermine-support.com">phentermine</a>”>http://www.phentermine-support.com">phentermine</a>[url=http://www.phentermine-support.com]phentermine[/url]<a href="http://www.spaceref.com/inserts/phentermine.html">phentermine</a>”>http://www.spaceref.com/inserts/phentermine.html">phentermine</a>[url=http://www.spaceref.com/inserts/phentermine.html]phentermine[/url] 4wzhs9ej-800056189

  31. Phentermine says:

    <a href="http://lol.to/bbs.php?bbs=phenST">phentermine</a>”>http://lol.to/bbs.php?bbs=phenST">phentermine</a>[url=http://lol.to/bbs.php?bbs=phenST]phentermine[/url]<a href="http://4allfree.com/cgi/gb.id?Tphentermine">phentermine</a>”>http://4allfree.com/cgi/gb.id?Tphentermine">phentermine</a>[url=http://4allfree.com/cgi/gb.id?Tphentermine]phentermine[/url]<a href="http://bingo.up-a.com">bingo</a>”>http://bingo.up-a.com">bingo</a>[url=http://bingo.up-a.com]bingo[/url]<a href="http://online-slots.spycounter.net">slots</a>”>http://online-slots.spycounter.net">slots</a>[url=http://online-slots.spycounter.net]slots[/url]<a href="http://myjavaserver.com/~thegame/blackjack.html">blackjack</a>”>http://myjavaserver.com/~thegame/blackjack.html">blackjack</a>[url=http://myjavaserver.com/~thegame/blackjack.html]blackjack[/url]<a href="http://www.cheapest-viagra-source.com">viagra</a>”>http://www.cheapest-viagra-source.com">viagra</a>[url=http://www.cheapest-viagra-source.com]viagra[/url]<a href="http://tamiflu.usa-online-pharmacy.net">tamiflu</a>”>http://tamiflu.usa-online-pharmacy.net">tamiflu</a>[url=http://tamiflu.usa-online-pharmacy.net]tamiflu[/url]<a href="http://www.viagra-here.com">viagra</a>”>http://www.viagra-here.com">viagra</a>[url=http://www.viagra-here.com]viagra[/url]<a href="http://www.viagra-exchange.com">viagra</a>”>http://www.viagra-exchange.com">viagra</a>[url=http://www.viagra-exchange.com]viagra[/url]<a href="http://www.0-online-casino.us">online”>http://www.0-online-casino.us">online casino</a>[url=http://www.0-online-casino.us]online casino[/url]<a href="http://www.0-poker.biz">poker</a>”>http://www.0-poker.biz">poker</a>[url=http://www.0-poker.biz]poker[/url]<a href="http://www.phentermine-support.com">phentermine</a>”>http://www.phentermine-support.com">phentermine</a>[url=http://www.phentermine-support.com]phentermine[/url]<a href="http://www.spaceref.com/inserts/phentermine.html">phentermine</a>”>http://www.spaceref.com/inserts/phentermine.html">phentermine</a>[url=http://www.spaceref.com/inserts/phentermine.html]phentermine[/url] 4wzhs9ej-800056189