How To: Open Source + Windows + IIS… with Stability

As we mentioned back in March, we switched NeoSmart Technologies over from PHP‘s ISAPI extension for Windows/IIS to Microsoft’s “FastCGI for IIS” implementation instead in hopes of achieving better reliability and uptime during times of heavy load.

Whether you like Windows or not, at some point or the other, you may find yourself using IIS 6 or even 7, and then you’ll be wondering why the open source technologies you’re using aren’t as stable as ASP or MSSQL on Windows. However, ever since the release of IIS 6, Microsoft has truly remade Internet Information Services as a real contender in the server market, providing a highly secure, stable, fast, and flexible web server for the masses. IIS 7 (due to ship with Longhorn Server sometime in 2007) is currently showing all the signs of being even better, with complete modularization of all components and a highly extensible, XML-based framework.

We’re really happy to be able to finally say with all conviction that it really works! This week, NeoSmart Technologies was featured on the homepages of many link aggregation sites (including Slashdot) for our Desktop vs. Web RIAs article. And we’re glad to say that even with the extreme load, for the entire past week we’ve had 100.00% uptime with respect to network, IIS, MySQL, and everything else!

Continue reading

“People Hate Making Desktop Apps…” Since When!?

What a crazy day for technology. It all started with Paul Graham’s ridiculous link-bait article “Microsoft is Dead,” earlier today. Since then, the web has been in an uproar – just how do you define success, innovation, power, creativity, and can companies just “die” anyway? Never mind that conversation – Paul Graham surprised us there though. He’s normally a sane and very much down-to-earth person with a lot of insight on Web 2.0 and what it takes to be a startup. But that’s not what we’ve taken up a problem with – what’s really gotten to us is how some people are using his article as grounds for an argument that Desktop apps are old, dead, and a pain-in-the-ass to make.

The particular post being referred to is Ryan Stewart’s “Why Do People Hate to Build Desktop Apps?” It comes in response to the article by Don Dodge and a conversation with Simon Bateman. Now that the background’s succinctly (hopefully) out of the way: While Ryan’s article makes a valid a point about the ease-of-use of Microsoft’s .NET Framework and Adobe’s Apollo and just how powerful-yet-easy these two technologies make desktop software development – his entire article is based on an invalid premise! People don’t hate making desktop apps!

Continue reading

MySQLi for WordPress 2.1.x

MySQLi is a “new”1 and improved version of the original MySQL extension for PHP. While there is no especially convincing reason to switch from the original MySQL functions to MySQLi, both MySQL and PHP recommend that developers do so.

WordPress is aimed for the masses and WordPress 2.0 still supports even MySQL 3.x – so most likely we won’t be seeing a switch to a MySQLi-powered WordPress anytime soon. However, for those that care about such things, we’ve created a MySQLi conversion file for WordPress.

Continue reading


  1. It’s been available for years, just no one uses it. 

No More Downtime!

It seems that every time we get on Slashdot (or Digg for that matter), we go down. It doesn’t make a difference just how well prepared we are, what kind of hosting we’re using, what the application being Slashdotted is, etc. It’s the unwritten law at NST. But we hope this’s the last time we ever experience downtime for a while.1

Why? We’ve left PHP. Well, not exactly. It seems that PHP doesn’t give a damn about Windows users. PHP has repeatedly stated that “we’re aware of [….] serious stability issues on Windows…” But they’ve done nothing about it for almost a year now. Their advice is to abandon (their own) PHP ISAPI connector and instead fallback to the ages-old and incredibly slow PHP CGI solution.

Continue reading


  1. Currently, NeoSmart Technologies is running off of a dedicated host (from LunarPages) with eAccelerator, MySQL, WP Cache, and some more optimization goodiness. 

A Clarification on WordPress

Day before yesterday, we posted an article about how WordPress was king of the blogging world, and how close to impossible it would be for it to lose its position. Amongst the comments, trackbacks, emails, and pingbacks directed our way, we find it necessary to clear up some points. For sake of communication and clarity, we’re using bullets to explain:

Most importantly: that wasn’t a review of WordPress. Just a discussion about how WordPress amongst others “spoils” developers!

  • WordPress isn’t necessarily the best engine, just the best platform. The difference is, it might not have the best code and features out there, but as a product together with its community, resources, and developers, it’s the platform for you to use.
  • The reason why WordPress will find it much easier to remain at the top compared to others that have taken the fall is that it’s open source, friendly, and free. That means people are more willing to help it out. Business 101: “open & flexbile” companies take much more and much longer to fail than “closed & rigid” companies do.
  • We’re not saying WordPress will remain the best product, but that even if a far better product came out (like the promising new-comer: Habari), WordPress will remain the tool of choice simply because of how widespread and prevalent it has become.
  • WordPress is not a company, it’s an open-source project. Automattic is the company. They come together, but WordPress is a separate entity, that continue developing and improving with or without Automattic. Don’t confuse the two.

Continue reading

WordPress 2.0.6 and FeedBurner Disconnects

This article provides a workaroud for WordPress 2.0.6 and chronic FeedBurner disconnects. It’s essential that you upgrade to WordPress 2.0.6 immediately in order to prevent your blog from being taken over by hackers! Upgrade, then follow these instructions to get it to play nicely with FeedBurner afterwards.

The Problem

After upgrading to WordPress 2.0.6 or WordPress 2.1 Beta, your FeedBurner feed will, at times, give you an “invalid xml” error, and “FeedMedic” will show you something like this:

Your server disconnected us before sending the full source feed content. If your blogging platform is TextPattern, this is a known bug, and a fix can be found here: http://forum.textpattern.com/viewtopic.php?id=11247

Continue reading

How WordPress Spoils Developers

When you’re done reading this article, check out our clarification for more info.

WordPress took the online world by surprise. Undoubtedly the single most influential tool in the blog-boom, WordPress has not only revolutionized the web as we (used to) know it, but also completely changed the daily ins and outs of web development forever. It’s not just about the power and perfection of the package, but also the coding standards, community benefits, and open source modeling. In short, WordPress has changed the face of web scripting for everyone.

The most obvious impact WordPress has had – on everyone – is that there really isn’t much room for another blogging platform. No matter how good of a competing product someone might make, it’s near impossible for anything to ever overtake WordPress as the tool of choice for the job – no matter what that might be. WordPress isn’t perfect, and we’re the first to admit it. It certainly isn’t the most lightweight blogging platform nor is it the ultimate CMS, but that most definitely hasn’t stopped it from conquering the market.

Continue reading

Why is $_SERVER[] Considered a “Class?”

There seems to be a minor bug/glitch in our Request_URI for Windows that we can’t figure out, so if anyone has any idea, please give us a holler, or post below if you like. Under times of high load (and sometimes without), PHP completely crashes and dies until the worker process is restarted with Using $this not in object context as the “die message” that shows up for all requests. However, our script doesn’t use a class, and makes no calls to one either.

Continue reading

20 Hours of Downtime

PHP really sucks. Unbelievably so. On LAMP, it’s awesome. But if you’re on a new, shiny WIMP server, PHP is the pits. PHP stability on IIS is about 1 over a million that on a LAMP server. So we’re sorry. We’re sorry we had a 20 hour outage and couldn’t do anything about because we had no idea it happened. We’re sorry we ever thought we could trust PHP on Windows/IIS for even a minute under virtually no-load without keeping our eyes on it. We’re especially sorry that NeoSmart Technologies, the blog, the forums, the downloads, the whitepapers, and all the resources were unavailable for that long.

Ever since moving to Windows, we’ve had unbelievably great results on MySQL, JSP, and ASP. But with PHP, it’s been nightmare after nightmare to no end. PHP corporation (or whatever it is) is aware of this, though they’re not confessing to any particular bugs nor are they expressing any interest in solving this. We moved to PHP 5.2 in hopes of addressing the stability – according to PHP, that was fixed. What they neglected to mention was a bunch of other bugs that still haunt PHP’s quest for stability on a Windows Server. IIS auto-restarted per our configuration, but the entire server needed a reset to get PHP working again. Ugh!

Anyway, we’re back up now, and we’re looking at some of the alternate PHP engines out there. Nothing is like PHP of course, because “there isn’t a need” for a PHP-compatible PHP replacement (then again, just by the sound of it..) but several Windows-specific “PHP compilers” exist that would take care of the issue. Then again, we could always jump down to PHP 4 – but that’s just scary. At any rate, rest assured, we’re scouring the web and working nonstop looking for a solution to this nonsense.

How To: apache_response_headers() on IIS

Along with the release of our request_uri for IIS yesterday, we have another useful tip for a second function commonly found in WordPress plugins and other PHP redistributable scripts. apache_response_headers is used to get a list of all the headers sent out by a page, in the format of an associative array.

IIS doesn’t use this function, and before PHP5, there was no way to properly emulate its behavior. But on PHP5, it’s nothing too difficult. Without further ado, here’s the code:

Continue reading