<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Hawk Host Blog</title>
	<atom:link href="http://www.hawkhost.com/blog/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.hawkhost.com/blog</link>
	<description>All things Hawk Host</description>
	<lastBuildDate>Fri, 03 Jul 2009 02:50:12 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>PHP 5.3</title>
		<link>http://www.hawkhost.com/blog/2009/07/02/php-5-3/</link>
		<comments>http://www.hawkhost.com/blog/2009/07/02/php-5-3/#comments</comments>
		<pubDate>Fri, 03 Jul 2009 02:50:12 +0000</pubDate>
		<dc:creator>Tony</dc:creator>
				<category><![CDATA[General]]></category>

		<guid isPermaLink="false">http://www.hawkhost.com/blog/?p=457</guid>
		<description><![CDATA[PHP 5.3 was released on June 30th and everything is already asking when is Hawk Host going to have it on our servers!  Well this is unfortunately going to take some time until it shows up on our servers is it is a major release that does have some deprecated features users may be using.  [...]]]></description>
			<content:encoded><![CDATA[<p>PHP 5.3 was released on June 30th and everything is already asking when is Hawk Host going to have it on our servers!  Well this is unfortunately going to take some time until it shows up on our servers is it is a major release that does have some <a href="http://ca3.php.net/manual/en/migration53.deprecated.php">deprecated features</a><span> users may be using.  It also has some changes to functions and of the core of PHP itself and we just don&#8217;t know how well it&#8217;ll play wi<span>th</span> various open source, commercial and custom PHP scripts users make use of it.  So as it stands I estimate at the earliest August it&#8217;ll be on our servers but it may actually be more like September.  This comes down to knowing all PHP scripts work fine as well as <span>cPanel</span> having support for it and <span>litespeed</span>.  Right now we&#8217;re actually waiting on <span>cPanel</span> to fully support 5.2.10 which we could install ourselves but best to let others deal wi<span>th</span> the issues and we&#8217;ll just run things when all the issues are figured out.</span></p>
<p>A very cool although useless for our users is the fact the LiteSpeed SAPI is now a SAPI available by default in the PHP core!  So basically means we could do &#8211;with-litespeed or whatever the parameter is to get the litespeed PHP binary.</p>
<p>Quick list of the major new features</p>
<ul>
<li> <span> Support for <a href="http://ca3.php.net/manual/en/language.namespaces.php"><span><span>namespaces</span></span></a> has been       added. </span></li>
<li> <span> Support for <a href="http://ca3.php.net/manual/en/language.oop5.late-static-bindings.php">Late Static      Bindings</a> has been added. </span></li>
<li> <span> Support for <a href="http://ca3.php.net/manual/en/control-structures.goto.php">jump labels</a><span> (limited <span>goto</span>) has been added. </span></span></li>
<li> <span> Support for native <a href="http://ca3.php.net/manual/en/functions.anonymous.php">Closures</a> (Lambda/Anonymous functions) has been added. </span></li>
<li> <span> There are two new magic methods,      <a href="http://ca3.php.net/manual/en/language.oop5.overloading.php#language.oop5.overloading.methods"><span>__<span>callStatic</span></span></a> and       <a href="http://ca3.php.net/manual/en/language.oop5.magic.php#language.oop5.magic.invoke">__invoke</a>. </span></li>
<li> <span> <a href="http://ca3.php.net/manual/en/language.types.string.php#language.types.string.syntax.nowdoc"><span><span>Nowdoc</span></span></a> syntax is      now supported, similar to      <a href="http://ca3.php.net/manual/en/language.types.string.php#language.types.string.syntax.heredoc"><span><span>Heredoc</span></span></a> syntax,      but with single quotes. </span></li>
<li> <span> It is now possible to use      <a href="http://ca3.php.net/manual/en/language.types.string.php#language.types.string.syntax.heredoc"><span><span>Heredoc</span></span></a>s to      initialize static variables and class members/constants. </span></li>
<li> <span> <a href="http://ca3.php.net/manual/en/language.types.string.php#language.types.string.syntax.heredoc"><span><span>Heredoc</span></span></a>s may      now be declared using double quotes, complementing the      <a href="http://ca3.php.net/manual/en/language.types.string.php#language.types.string.syntax.nowdoc"><span><span>Nowdoc</span></span></a> syntax. </span></li>
<li> <span> <a href="http://ca3.php.net/manual/en/language.constants.syntax.php">Constants</a> can now be      declared outside a class using the <em><span><span>const</span></span></em> keyword. </span></li>
<li> <span> The <a href="http://ca3.php.net/manual/en/language.operators.comparison.php#language.operators.comparison.ternary">ternary</a> operator now has a shorthand form: <em>?:</em>. </span></li>
<li> <span> The HTTP stream wrapper now considers all status codes from 200 to 399 to      be successful. </span></li>
<li> <span> Dynamic access to static methods is now possible. </span></li>
<li> <span> <a href="http://ca3.php.net/manual/en/language.exceptions.php">Exceptions</a> can now be nested. </span></li>
<li> <span> A garbage collector has been added, and is enabled by default. </span></li>
</ul>
<p><span id="more-457"></span><br />
List of actual functions and such to make this a decent length post:</p>
<ul>
<li> <span> <a href="http://ca3.php.net/manual/en/function.array-replace.php">array_replace()</a> &#8211; Replaces elements from passed arrays into one array. </span></li>
<li> <span> <a href="http://ca3.php.net/manual/en/function.array-replace-recursive.php">array_replace_recursive()</a> &#8211; Recursively replaces elements from passed arrays into one array. </span></li>
<li> <span> <a href="http://ca3.php.net/manual/en/function.class-alias.php">class_alias()</a> &#8211; Creates an alias for a user defined class. </span></li>
<li> <span> <a href="http://ca3.php.net/manual/en/function.forward-static-call.php">forward_static_call()</a> &#8211; Call a user function from a method context. </span></li>
<li> <span> <a href="http://ca3.php.net/manual/en/function.forward-static-call-array.php">forward_static_call_array()</a> &#8211; Call a user function from a method context, with the arguments contained      in an array. </span></li>
<li> <span> <a href="http://ca3.php.net/manual/en/function.gc-collect-cycles.php"><span><span>gc</span>_collect_cycles()</span></a> &#8211; Forces collection of any existing garbage cycles. </span></li>
<li> <span> <a href="http://ca3.php.net/manual/en/function.gc-disable.php"><span><span>gc</span>_disable()</span></a> &#8211; Deactivates the circular reference collector. </span></li>
<li> <span> <a href="http://ca3.php.net/manual/en/function.gc-enable.php"><span><span>gc</span>_enable()</span></a> &#8211; Activates the circular reference collector. </span></li>
<li> <span> <a href="http://ca3.php.net/manual/en/function.gc-enabled.php"><span><span>gc</span>_enabled()</span></a> &#8211; Returns the status of the circular reference collector. </span></li>
<li> <span> <a href="http://ca3.php.net/manual/en/function.get-called-class.php">get_called_class()</a> &#8211; Return the name of the class a static method is called in. </span></li>
<li> <span> <a href="http://ca3.php.net/manual/en/function.gethostname.php"><span><span>gethostname</span>()</span></a> &#8211; Return the current host name for the local machine. </span></li>
<li> <span> <a href="http://ca3.php.net/manual/en/function.header-remove.php">header_remove()</a> &#8211; Removes an HTTP header previously set using the       <a href="http://ca3.php.net/manual/en/function.header.php">header()</a> function. </span></li>
<li> <span> <a href="http://ca3.php.net/manual/en/function.lcfirst.php"><span><span>lcfirst</span>()</span></a> &#8211; Make a string&#8217;s first character lowercase. </span></li>
<li> <span> <a href="http://ca3.php.net/manual/en/function.parse-ini-string.php"><span>parse_<span>ini</span>_string()</span></a> &#8211; Parse a configuration string. </span></li>
<li> <span> <a href="http://ca3.php.net/manual/en/function.quoted-printable-encode.php">quoted_printable_encode()</a> &#8211; Convert an 8 bit string to a quoted-printable string. </span></li>
<li> <span> <a href="http://ca3.php.net/manual/en/function.str-getcsv.php">str_getcsv()</a> &#8211; Parse a CSV string into an array. </span></li>
<li> <span> <a href="http://ca3.php.net/manual/en/function.stream-context-set-default.php">stream_context_set_default()</a> &#8211; Set the default stream context. </span></li>
<li> <span> <a href="http://ca3.php.net/manual/en/function.stream-supports-lock.php">stream_supports_lock()</a> &#8211; Return <strong><tt>TRUE</tt></strong> if the stream supports locking. </span></li>
<li> <span> <a href="http://ca3.php.net/manual/en/function.stream-context-get-params.php"><span>stream_context_get_<span>params</span>()</span></a> &#8211; Retrieve parameters from a stream context. </span></li>
<li> <span> <a href="http://ca3.php.net/manual/en/streamwrapper.stream-cast.php"><span><span>streamWrapper</span>::stream_cast()</span></a> &#8211; Retrieve the underlying stream resource. </span></li>
<li> <span> <a href="http://ca3.php.net/manual/en/streamwrapper.stream-set-option.php"><span><span>streamWrapper</span>::stream_set_option()</span></a> &#8211; Change stream options </span></li>
</ul>
<p><a href="http://ca3.php.net/manual/en/book.datetime.php">Date/Time</a>:</p>
<ul>
<li> <span> <a href="http://ca3.php.net/manual/en/function.date-add.php">date_add()</a> &#8211; Adds an amount of days, months, years, hours, minutes and seconds to a      <a href="http://ca3.php.net/manual/en/class.datetime.php"><span><span>DateTime</span></span></a> object. </span></li>
<li> <span> <a href="http://ca3.php.net/manual/en/function.date-create-from-format.php">date_create_from_format()</a> &#8211; Returns a new <a href="http://ca3.php.net/manual/en/class.datetime.php"><span><span>DateTime</span></span></a> object formatted according      to the given format. </span></li>
<li> <span> <a href="http://ca3.php.net/manual/en/function.date-diff.php">date_diff()</a> &#8211; Returns the difference between two <a href="http://ca3.php.net/manual/en/class.datetime.php"><span><span>DateTime</span></span></a> objects. </span></li>
<li> <span> <a href="http://ca3.php.net/manual/en/function.date-get-last-errors.php">date_get_last_errors()</a> &#8211; Returns the warnings and errors from the last date/time operation. </span></li>
<li> <span> <a href="http://ca3.php.net/manual/en/function.date-parse-from-format.php">date_parse_from_format()</a><span> &#8211; Get <span>infoformation</span> about a given date. </span></span></li>
<li> <span> <a href="http://ca3.php.net/manual/en/function.date-sub.php">date_sub()</a> &#8211; Subtracts an amount of days, months, years, hours, minutes and seconds      from a <a href="http://ca3.php.net/manual/en/class.datetime.php"><span><span>DateTime</span></span></a> object. </span></li>
<li> <span> <a href="http://ca3.php.net/manual/en/function.timezone-version-get.php">timezone_version_get()</a><span> &#8211; Returns the version of the <span>timezonedb</span>. </span></span></li>
</ul>
<p><a href="http://ca3.php.net/manual/en/book.gmp.php">GMP</a>:</p>
<ul>
<li> <span> <a href="http://ca3.php.net/manual/en/function.gmp-testbit.php"><span><span>gmp</span>_<span>testbit</span>()</span></a> &#8211; Tests whether a bit is set. </span></li>
</ul>
<p><a href="http://ca3.php.net/manual/en/book.hash.php">Hash</a>:</p>
<ul>
<li> <span> <a href="http://ca3.php.net/manual/en/function.hash-copy.php">hash_copy()</a> &#8211; Copy hashing context. </span></li>
</ul>
<p><a href="http://ca3.php.net/manual/en/book.imap.php">IMAP</a>:</p>
<ul>
<li> <span> <a href="http://ca3.php.net/manual/en/function.imap-gc.php"><span><span>imap</span>_<span>gc</span>()</span></a> &#8211; Clears IMAP cache. </span></li>
<li> <span> <strong><span><span>imap</span>_utf8_to_mutf7()</span></strong> &#8211; Encode a UTF-8 string to modified UTF-7. </span></li>
<li> <span> <strong><span><span>imap</span>_mutf7_to_utf8()</span></strong> &#8211; Decode a modified UTF-7 string to UTF-8. </span></li>
</ul>
<p><a href="http://ca3.php.net/manual/en/book.json.php">JSON</a>:</p>
<ul>
<li> <span> <a href="http://ca3.php.net/manual/en/function.json-last-error.php"><span><span>json</span>_last_error()</span></a> &#8211; Returns the last JSON error that occurred. </span></li>
</ul>
<p><a href="http://ca3.php.net/manual/en/book.mysqli.php">MySQL Improved</a>:</p>
<ul>
<li> <span> <a href="http://ca3.php.net/manual/en/mysqli-result.fetch-all.php"><span><span>mysqli</span>_fetch_all()</span></a> &#8211; Fetches all result rows as an associative array, a numeric       array, or both. </span></li>
<li> <span> <a href="http://ca3.php.net/manual/en/mysqli.get-connection-stats.php"><span><span>mysqli</span>_get_connection_stats()</span></a> &#8211; Returns statistics about the client connection. </span></li>
<li> <span> <a href="http://ca3.php.net/manual/en/mysqli.poll.php"><span><span>mysqli</span>_poll()</span></a> &#8211; Poll connections. </span></li>
<li> <span> <a href="http://ca3.php.net/manual/en/mysqli.reap-async-query.php"><span><span>mysqli</span>_reap_<span>async</span>_query()</span></a><span> &#8211; Get result from <span>async</span> query. </span></span></li>
</ul>
<p><a href="http://ca3.php.net/manual/en/book.openssl.php"><span><span>OpenSSL</span></span></a>:</p>
<ul>
<li> <span> <a href="http://ca3.php.net/manual/en/function.openssl-random-pseudo-bytes.php"><span><span>openssl</span>_random_pseudo_bytes()</span></a> &#8211; Returns a string of the given length specified, filled with pseudo-random      bytes. </span></li>
</ul>
<p><a href="http://ca3.php.net/manual/en/book.pcntl.php">PCNTL</a>:</p>
<ul>
<li> <span> <a href="http://ca3.php.net/manual/en/function.pcntl-signal-dispatch.php">pcntl_signal_dispatch()</a> &#8211; Calls signal handlers for pending signals. </span></li>
<li> <span> <a href="http://ca3.php.net/manual/en/function.pcntl-sigprocmask.php"><span>pcntl_<span>sigprocmask</span>()</span></a> &#8211; Sets and retrieves blocked signals. </span></li>
<li> <span> <a href="http://ca3.php.net/manual/en/function.pcntl-sigtimedwait.php"><span>pcntl_<span>sigtimedwait</span>()</span></a> &#8211; Wait for signals with a timeout. </span></li>
<li> <span> <a href="http://ca3.php.net/manual/en/function.pcntl-sigwaitinfo.php"><span>pcntl_<span>sigwaitinfo</span>()</span></a> &#8211; Wait for signals. </span></li>
</ul>
<p><a href="http://ca3.php.net/manual/en/book.pcre.php">PCRE</a>:</p>
<ul>
<li> <span> <a href="http://ca3.php.net/manual/en/function.preg-filter.php"><span><span>preg</span>_filter()</span></a><span> &#8211; Perform a regular expression search and replace, <span>reutrning</span> only results      which matched the pattern. </span></span></li>
</ul>
<p><a href="http://ca3.php.net/manual/en/book.sem.php">Semaphore</a>:</p>
<ul>
<li> <span> <a href="http://ca3.php.net/manual/en/function.msg-queue-exists.php"><span><span>msg</span>_queue_exists()</span></a> &#8211; Check whether a message queue exists. </span></li>
<li> <span> <a href="http://ca3.php.net/manual/en/function.shm-has-var.php"><span><span>shm</span>_has_var()</span></a> &#8211; Checks whether a specific key exists inside a shared memory segment. </span></li>
</ul>
<p><span>The following functions are now <span>natively</span> implemented, making them available    on all operating systems which can run PHP:</span></p>
<ul>
<li> <span> <a href="http://ca3.php.net/manual/en/function.acosh.php"><span><span>acosh</span>()</span></a> </span></li>
<li> <span> <a href="http://ca3.php.net/manual/en/function.asinh.php"><span><span>asinh</span>()</span></a> </span></li>
<li> <span> <a href="http://ca3.php.net/manual/en/function.atanh.php"><span><span>atanh</span>()</span></a> </span></li>
<li> <span> <a href="http://ca3.php.net/manual/en/function.expm1.php"><span>expm1()</span></a> </span></li>
<li> <span> <a href="http://ca3.php.net/manual/en/function.log1p.php">log1p()</a> </span></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.hawkhost.com/blog/2009/07/02/php-5-3/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>July Is Here</title>
		<link>http://www.hawkhost.com/blog/2009/07/01/july-is-here/</link>
		<comments>http://www.hawkhost.com/blog/2009/07/01/july-is-here/#comments</comments>
		<pubDate>Wed, 01 Jul 2009 06:14:57 +0000</pubDate>
		<dc:creator>Tony</dc:creator>
				<category><![CDATA[General]]></category>

		<guid isPermaLink="false">http://www.hawkhost.com/blog/?p=453</guid>
		<description><![CDATA[I cannot believe it but we&#8217;re now into July it feels like just yesterday June was starting time sure does fly by.  Things have been great due to the fantastic growth we&#8217;ve seen over the month smashing our old record for number of new accounts in a month (old one was set in May 2009).  [...]]]></description>
			<content:encoded><![CDATA[<p>I cannot believe it but we&#8217;re now into July it feels like just yesterday June was starting time sure does fly by.  Things have been great due to the fantastic growth we&#8217;ve seen over the month smashing our old record for number of new accounts in a month (old one was set in May 2009).  As a result of this things have been busy as we work on adding capacity such as adding a new VPS node <a href="http://www.hawkhost.com/Network/server/name/Marlin">Marlin</a> and most recently a new web server <a href="http://www.hawkhost.com/Network/server/name/Venus">Venus</a> (was an old server name but we want all planets used for names).  We&#8217;ve done a lot more than just add capacity though we&#8217;ve been working on various things.</p>
<p>LxLabs the creators of the HyperVM panel we use for managing all our virtual private servers closed their doors after the death of their founder and lead developer.  As a result of this we have not had a client accessible panel for nearly a month now which is obviously not a good thing.  There are alternatives out there but we believe they just are not that great or they have not been worked on in years.  As a result of this we&#8217;ve been working on our own system called <a href="http://www.hawkhost.com/blog/category/vezozvm/">VezozVM</a> which was going along nicely until recently when things got backed up on the Hawk Host front.  We hope to have this out in some capacity in July our goal was before the end of June but with software that never seems to happen.  With Hawk Host having better delegated support though things should move along again.</p>
<p>The other big development in June was the fact starting in July (which is today) we&#8217;d have some of our support handled outside our too knowledgeable Level 3 support team.  Basically what this means is for a lot of issues our support team are not necessary and they should be handling more important things.  So we were going across the internet searching for a company to help us with this problem.  We found one highly recommended who would be assisting us with handling support issues that do not require our Level3 staff.  As a result of this we&#8217;ll have more time devoted to the more complicated tickets.  We also of course will continue to keep our servers up and running with low loads and great uptime which is why a lot of our users use our hosting in the first place.</p>
<p>I cannot forget our trusty web server LiteSpeed every month the guys over at LiteSpeed Technologies are working on optimizations, compatibility fixes and new features for their awesome web server which we use on all our servers.   There was the introduction of several versions the most recent being 4.0.5 which introduces some nice features that we were missing.  The big one is our frontpage support it is now nearly perfect there should no longer be a need for support tickets about broken frontpage extensions out of nowhere.  It uses mod_auth_passthrough which is what cPanel uses for Apache in their frontpage support.  So if extensions break now they would in Apache as well which means a reinstall on the specific extension and it should be fixed.  Also a small fix yours truly found with encoding types sent by CGI scripts such as PHP.  The wordpress spell checker gave a bunch of random characters rpreviously this was due to the handling of UTF-8 + GZIP which only Opera can handle properly.  LiteSpeed now handles this the same as Apache with regards to this when the script sends it&#8217;s own encoding type do that only and not GZIP as well.  We are also testing their 4.1 version and most servers are actually using it now which introduces asynchronous I/O which should help when cases where the i/o wait might be higher than normal (maybe for a user generated cPanel backup).  The web server should handle it better than before so the pages will continue to serve extremely fast rather than just fast.</p>
<p>So what are the big plans for July?  Well as it stands we&#8217;ll be working on VezozVM and continuing to develop various internal tools or optimizations to make our servers run much faster.  The only thing on the server front is we estimate that either late July or early August we will need to upgrade our backup machine.  Right now it&#8217;s a 4&#215;1TB Raid-5 system which was great when we had a few machines but we have quite a few now.  We will probably be upgrading it to a 12 drive system with 3 sets of 4 drives in a raid-5.  The reason for this is we want to handle more simultaneous tasks and backups on our CDP server but at the same time have the capacity space to make it easier to manage.  This setup should give us around 9TB in total of space in comparison to our 3TB right now so it&#8217;s a big improvement.</p>
<p>That&#8217;s all for now.  Remember to keep recommending us to your friends and posting reviews on the internet to make Hawk Host bigger.  As we grow we can continue to expand our offerings, add new features and improve our services.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.hawkhost.com/blog/2009/07/01/july-is-here/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Outsourcing Some Support</title>
		<link>http://www.hawkhost.com/blog/2009/06/27/outsourcing-some-support/</link>
		<comments>http://www.hawkhost.com/blog/2009/06/27/outsourcing-some-support/#comments</comments>
		<pubDate>Sun, 28 Jun 2009 00:38:02 +0000</pubDate>
		<dc:creator>Tony</dc:creator>
				<category><![CDATA[General]]></category>

		<guid isPermaLink="false">http://www.hawkhost.com/blog/?p=448</guid>
		<description><![CDATA[A lot of people see out sourcing in any service field as a big negative and this is especially true with web hosting.  The fact is a large majority of web hosts out source their support in some way whether that be by using a company specializing in web hosting or by hiring people who [...]]]></description>
			<content:encoded><![CDATA[<p>A lot of people see out sourcing in any service field as a big negative and this is especially true with web hosting.  The fact is a large majority of web hosts out source their support in some way whether that be by using a company specializing in web hosting or by hiring people who do not work in their office.  Most users though see the outsourcing of support as only when it&#8217;s located in a country such as India for example.  Even with support in India I&#8217;ve always thought the issue was never the location but rather the training of the staff.  You read about just as many poor support stories from company&#8217;s who&#8217;s staff are located right in the company&#8217;s office.  I know of a lot of web hosting company&#8217;s who&#8217;s owners are located in the big oh no countries such as India and they are very knowledgeable.  Most of them are praised for their great support so is the location of the support team really the issue?  Probably not in most cases.</p>
<p>So why am I bringing this up? Well we&#8217;ve been actively looking to a solution to our growing support problem where we&#8217;re having more an more issues keeping up with the support load.  I have been in talks with numerous companies who specialize in web hosting in one way or another.  All of them are highly recommended and probably provide support for the majority of web hosting company&#8217;s people use already.  Some of them then they provide you with an easy way to hire people knowedable in web hosting and others provide solutions by server, number of tickets ect.  Those discussion have finally resulted in us finding a solution to our support problem and we will start implementing this in July.  I&#8217;m sure many are wondering but Tony you guys respond in very fast already!  This is true but our growth suggests that it is very soon we will be unable to keep up resulting in either slow replies or lower quality replies.  Our staff all being the equivalent of level 3 support people it always seemed silly to have them answering support equivalent of level 1.</p>
<p>We will start having the company we will be working with assist with the much easier questions we receive on a daily basis.  The questions that require our staff expertise will still be possible around the clock obviously as we use an escalation system.  Overall we believe this will improve support speed as well as quality of all replies due to staff handling tickets more to the level they should be.  At times in the past if we&#8217;ve had issues with a server which would mean all ticket replies not even relating to that server might be slowed down.  This should no longer be the case as the people who should be working on issues are handling those issues.  No longer will someone be trying to deal with a problem with a server while also trying to help someone on how to create an email account.</p>
<p>Most company&#8217;s in this situation do not even talk about the fact they&#8217;re doing.  We&#8217;re very confident this will actually improve our services rather than degrade them so I have no issue talking about it.  A lot of our high praise is the fact our servers very rarely go down or become slow and this is because of our expertise on management not support. We already review select tickets on a daily basis for quality control purposes and this will still continue.  If you do run into an issue you&#8217;re always welcome to email me personally.  This does not mean any ticket you make cc&#8217;ing me on them as I mean if you run into a quality issue with support.  Users have always been welcome to email me on quality issues and some have in the past.</p>
<p>If you&#8217;re curious at all about our growth in the last 6 months we&#8217;ve doubled our current subscriber base.  The next 6 months going forward we&#8217;ll double the current base we&#8217;ll have as of July so we are growing at a pretty rapid pace.  We&#8217;ve also expanded what Hawk Host Inc. the company does as we&#8217;ve provided specialized hosting solutions to company&#8217;s or provided our expertise in deployment of their servers or continued maintenance of them.  We also have hopes of expanding the software we use ourselves to other company&#8217;s as another revenue stream to help fund us.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.hawkhost.com/blog/2009/06/27/outsourcing-some-support/feed/</wfw:commentRss>
		<slash:comments>10</slash:comments>
		</item>
		<item>
		<title>Development Update</title>
		<link>http://www.hawkhost.com/blog/2009/06/24/development-update/</link>
		<comments>http://www.hawkhost.com/blog/2009/06/24/development-update/#comments</comments>
		<pubDate>Thu, 25 Jun 2009 00:08:30 +0000</pubDate>
		<dc:creator>Tony</dc:creator>
				<category><![CDATA[VezozVM]]></category>

		<guid isPermaLink="false">http://www.hawkhost.com/blog/?p=444</guid>
		<description><![CDATA[As you may have noticed there hasn&#8217;t been many posts as of recently and this is due to the fact things just are not progressing as planned.  This does not have to do with development difficulties but the fact things here at Hawk Host have been extremely busy.  In the past six months our subscriber [...]]]></description>
			<content:encoded><![CDATA[<p>As you may have noticed there hasn&#8217;t been many posts as of recently and this is due to the fact things just are not progressing as planned.  This does not have to do with development difficulties but the fact things here at Hawk Host have been extremely busy.  In the past six months our subscriber base has doubled with each month us having more sign ups than the previous month.  This has caused things to be a little hectic to say the least with constant expansion (many new servers added) and having to deal with the increased support load and having to come up with a solution to that.  With myself handling the majority of the development of the panel having all these things going on has resulted in some days where unfortunately I&#8217;m busy making calls, dealing with suppliers or just working with customers.  Obviously with myself being a huge part and with the rest of our team mostly assisting with testing this can slow down development a lot even in testing with such a huge amount of growth we&#8217;re seeing.  My hopes are to have this all solved by the latest July as I&#8217;m in the last portion of getting it all straightened out.  This means a much more focused development effort and less other things getting in the way.</p>
<p>So I&#8217;m sure people are still wondering how far are we exactly?</p>
<p>The administrative system everything necessary to keep data and track of everything is in place.  The client area which shares he code base from some of the admin side is lacking the same thing the administrative system does not yet have.  This is the layer where communication to panels happen.  This means the abstract as well as the actual Openvz platform.  Besides that everything is pretty much in place though.  This is obviously a key to the system although I&#8217;d say having data do what it&#8217;s suppose to is a lot more important in the end than having the communication layer.  Communication layer can be changed/fixed but if data gets out of sync or is incorrect that&#8217;s a little more difficult to fix later on.</p>
<p>So to summarize everything been some delays but things are progressing just not at the rate I had hoped when we started.  It should start picking up as everything falls in place at Hawk Host to deal with the increasing number of new subscribers.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.hawkhost.com/blog/2009/06/24/development-update/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Looking For A Designer</title>
		<link>http://www.hawkhost.com/blog/2009/06/17/looking-for-a-designer/</link>
		<comments>http://www.hawkhost.com/blog/2009/06/17/looking-for-a-designer/#comments</comments>
		<pubDate>Wed, 17 Jun 2009 18:04:40 +0000</pubDate>
		<dc:creator>Tony</dc:creator>
				<category><![CDATA[VezozVM]]></category>

		<guid isPermaLink="false">http://www.hawkhost.com/blog/?p=439</guid>
		<description><![CDATA[The one thing we lack in our development effort is someone who can draw things.  I personally am very good at drawing stick men but that is where my artistic skills end.  The problem with finding someone is they are either just cookie cuter web site design or they want insane fee&#8217;s for something that [...]]]></description>
			<content:encoded><![CDATA[<p>The one thing we lack in our development effort is someone who can draw things.  I personally am very good at drawing stick men but that is where my artistic skills end.  The problem with finding someone is they are either just cookie cuter web site design or they want insane fee&#8217;s for something that is very simple.  We&#8217;re looking for someone is reasonable priced and knows what they&#8217;re doing.  So this means knowing html, css and being able to make a nice interface that is also intuitive.  In the past when we tried to bring in someone to do some basic HTML, CSS and images for some applications we were building they wanted to charge $1000 per page which as much I&#8217;d love to believe we have that kind of money to spend we do not.  I&#8217;m still going to give it a try before I produce one of my amazing interfaces with colors that do not match and images created in paint</p>
<p>If you think you&#8217;re the kind of person we&#8217;re looking for then get in contact with me Tony by emailing tony with the at hawkhost.com added in.</p>
<p><strong>Status Update</strong></p>
<p>Not much to talk about today unfortunately still working on building the main part of the system which is managing the actual virtual machines.  Should have something complete on that front by the end of the week</p>
]]></content:encoded>
			<wfw:commentRss>http://www.hawkhost.com/blog/2009/06/17/looking-for-a-designer/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Virtualization Platform Independent</title>
		<link>http://www.hawkhost.com/blog/2009/06/15/virtualization-platform-independent/</link>
		<comments>http://www.hawkhost.com/blog/2009/06/15/virtualization-platform-independent/#comments</comments>
		<pubDate>Mon, 15 Jun 2009 19:54:21 +0000</pubDate>
		<dc:creator>Tony</dc:creator>
				<category><![CDATA[VezozVM]]></category>

		<guid isPermaLink="false">http://www.hawkhost.com/blog/?p=436</guid>
		<description><![CDATA[A lot of the panels out there advertise support for a specific platform for example OpenVZ or Xen.  We&#8217;re taking a different approach where in theory our system could handle any platform assuming there is a driver built for it on our system and all the relevant data in the database.  This would mean the [...]]]></description>
			<content:encoded><![CDATA[<p>A lot of the panels out there advertise support for a specific platform for example OpenVZ or Xen.  We&#8217;re taking a different approach where in theory our system could handle any platform assuming there is a driver built for it on our system and all the relevant data in the database.  This would mean the variables available to that platform are within the database and an actual entry for that platform exists so a machine can be set to that platform.  So here&#8217;s how it all breaks down:</p>
<ul>
<li>You have your virtualization platform itself for example OpenVZ, Xen ect.</li>
<li>You have fields that are available to that platform so kmemsize or whatever.  Each field is dynamically generated from the database and has the capability to do validation, filtering and obviously provide a pretty name and description</li>
<li>For the communication to the platform you have your driver which will handle all the communication to the machine and it&#8217;ll also extend the main platform which will handle all database backend</li>
</ul>
<p>Here&#8217;s a bit of a more detailed explanation of the platform system:</p>
<p><strong>Vezoz_VM_Platform</strong></p>
<p>Every single platform will use this as it&#8217;s base to develop further.  It&#8217;ll handle all database portions and communications back to the panel.  You can in theory build any platform you want as long as it has the basics.  So the basics would be the facility to start, stop, reboot ect.  So with this you could develop something like say Vezoz_Vm_Platform_Openvz or Vezoz_Vm_Platform_Xen.  You could also take another approach and rather than using the platform itself you could do Vezoz_Vm_Platform_Hypervm if you wanted to use the HyperVM API and it provided everything necessary to you.  With a bit of work I&#8217;m sure you could also be crazy and do something like say Vezoz_Vm_Platform_Softlayer.  Softlayer has an API so you could potentially fool the system into thinking it&#8217;s dealing with a virtual machine when maybe it&#8217;s dealing with physical machines via the softlayer API.</p>
<p>The plan to start anyways is to just have an OpenVZ version available but we will expand it out for various platforms or even various ways to communicate (maybe two versions of OpenVZ communication).</p>
<p><strong>Status Update</strong></p>
<p>Right now we have started working on handling of actual virtual machines as we have every thing now in place for creation of them in the database end.  Hopefully before the end of the week we have a working system that will have all the necessary features for a first release.  Then the week after the plan will be to clean it up and have the Hawk Host user base using the first release.  Once that happens we&#8217;ll work on refining and adding features along with licensing capability for a release in the very near future.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.hawkhost.com/blog/2009/06/15/virtualization-platform-independent/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Slow Days Happen</title>
		<link>http://www.hawkhost.com/blog/2009/06/12/slow-days-happen/</link>
		<comments>http://www.hawkhost.com/blog/2009/06/12/slow-days-happen/#comments</comments>
		<pubDate>Fri, 12 Jun 2009 17:25:34 +0000</pubDate>
		<dc:creator>Tony</dc:creator>
				<category><![CDATA[VezozVM]]></category>

		<guid isPermaLink="false">http://www.hawkhost.com/blog/?p=432</guid>
		<description><![CDATA[Yesterday was not the success we were hoping for with development.  Things were very hectic in Hawk Host last yesterday and with us not having a full team of developers this sort of thing causes delays in any development processes.  What was completed yesterday was the operating system handling system which I had talked about [...]]]></description>
			<content:encoded><![CDATA[<p>Yesterday was not the success we were hoping for with development.  Things were very hectic in Hawk Host last yesterday and with us not having a full team of developers this sort of thing causes delays in any development processes.  What was completed yesterday was the operating system handling system which I had talked about yesterday.  Besides that we were discussing the best options on how to approach the safety of the slave servers.</p>
<p>The biggest worry among people is that the master has root access to all the slave servers in order to perform commands.  If it does not have access you then need a daemon of some kind to take commands and execute them.  With this method you then rely on the daemons being up to date (latest version) and having all the right commands available to be executed by the master.  Even with this method if a malicious user gains access to the master they can issue a  mass delete of all VM&#8217;s on the node which is the big scare everyone has.  This unfortunately is not possible to solve because if you give access to run vzctl commands you run this risk.  Everyone is suggesting using daemons even though it does not solve the fear anyways thus over complicating things.</p>
<p>The SSH protocol is a secure protocol and has capability of doing keys.  What many seem to not be aware of is the fact it also have the ability to restrict IP access on a key as well.  It even also has the ability to restrict commands but it is down to the parameter so that&#8217;s not an option.  The IP restriction though is useful because you can restrict the key to just the master&#8217;s IP.  So the only risk you now have is your master becoming compromised and a malicious user executing commands on the nodes.  Now doesn&#8217;t that sound familiar?  This is the exact issue a daemon service as that if the master is compromised the nodes are as well which makes sense.  The only difference is the fact with SSH you could wipe the entire system rather than just the virtual machines.  But at this point I&#8217;d say this is a small difference because if the virtual machines are gone the system is essentially worthless anyways.</p>
<p>Based on all of this I think we&#8217;re going to use restrictive SSH to accomplish everything.  There does not seem to be a necessity to have a daemon to handle the commands.  We can issue all the commands from the master we&#8217;ll just need to make sure with commands that take a significant amount of time to not execute them within anything web viewable.  So the best way to probably approach this is when a command like a OS rebuild is issued it will be executed by a cron within one minute.</p>
<p>Hopefully this provides some insight to what we&#8217;re doing and why.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.hawkhost.com/blog/2009/06/12/slow-days-happen/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Learn Something New Everyday</title>
		<link>http://www.hawkhost.com/blog/2009/06/11/learn-something-new-everyday/</link>
		<comments>http://www.hawkhost.com/blog/2009/06/11/learn-something-new-everyday/#comments</comments>
		<pubDate>Thu, 11 Jun 2009 15:40:13 +0000</pubDate>
		<dc:creator>Tony</dc:creator>
				<category><![CDATA[VezozVM]]></category>

		<guid isPermaLink="false">http://www.hawkhost.com/blog/?p=428</guid>
		<description><![CDATA[Every single day I learn something new and yesterday we no different with the development.  It was pretty tiny though but it did provide some confusion for a little bit and it was with Zend Framework.  The way we develop anything with the Vezoz in the front uses models obviously but also Zend_Db_Select to construct [...]]]></description>
			<content:encoded><![CDATA[<p>Every single day I learn something new and yesterday we no different with the development.  It was pretty tiny though but it did provide some confusion for a little bit and it was with Zend Framework.  The way we develop anything with the Vezoz in the front uses models obviously but also Zend_Db_Select to construct any query that needs to be created.  So rather than doing something like this:</p>
<p>$sql = &#8220;SELECT * FROM users&#8221;;</p>
<p>It will be something like this:</p>
<p>$select = $db-&gt;select()-&gt;from( &#8216;users&#8217; );</p>
<p>The reason we do this is it provides the facility to mutate the queries very easily.  I&#8217;m building a query that has a lot of data and it&#8217;ll be displayed as a list paginated that means I need to calculate the total number of rows possible.  Most people would have to write two queries to handle this.  We do not as passing the select object into the pagination system it will drop unnecessary fields and replace it with a count.  This is great we&#8217;ve now only written one query to handle two situations and if it&#8217;s changed over time no worries it&#8217;ll be changed in the count portion as well.</p>
<p>So why does this matter?  Well I was building a query that in order to work properly needed to grab a set of rows and also join on another query thus creating a sub query.  As much as I tried I was unable to get Zend Framework&#8217;s Zend_Db_Select to work without error when a join is done on a query rather than a table.  A quick search I was unable to find a solution to this problem so as it stands it&#8217;s just a plain old sql query.  There isn&#8217;t too much of a negative to this it still passes the same sort of object back and if I can determine how to make it work later it can be switched thanks to it being part of a model.  So the code moves along for this portion not knowing better but it would be nice to eventually have it switched.</p>
<p><strong>Status Update</strong></p>
<p>Yesterday I talked about how the IP management system was nearing completion.  Well I am happy to say this has been completed and as far as having all the features necessary it is completed.  Usability will be improved but the goals right now are to make things work even if it&#8217;s a little more time consuming then what a final version will be.  We liked the HyperVM handling with ip pools so we found no reason to stray from the concept.  HyperVM however did not keep track of individual IP&#8217;s when they were not assigned to virtual machines while we do.  So here&#8217;s the steps on what goes on:</p>
<ul>
<li>You create an IP Pool and assign it a name along with network properties that apply to the entire pool (netmask and gateway which will be needed for Xen support)</li>
<li>You add machines to the pool which will be able to use the IP&#8217;s.  The concept is machines on the same VLAN with IP&#8217;s routed to the VLAN should be able to use IP&#8217;s from the same pool</li>
<li>Add IP&#8217;s to the pool individually or by range.  So you can just put 1.2.3.4 and add it or optionally do 1.2.3.6 and get 1.2.3.4, 1.2.3.5 and 1.2.3.6 all added to the pool.</li>
</ul>
<p>After this the system keeps track of the IP&#8217;s which are available which are not as each IP is individual and can easily be linked back to a virtual machine.  Other concepts we&#8217;d like to add later on are the following:</p>
<ul>
<li>Ability to designate an IP to not have bandwidth tracking.  The idea behind this is our provider gives us NAS, iSCSI ect. which are through a private network</li>
<li>Track bandwidth usage by individual IP rather than pooling it all together for the user.</li>
</ul>
<p>Both of these depend on our way of tracking bandwidth usage but OpenVZ anyways we can do it.  With Xen not so sure as Hawk Host does not use Xen so our goal is OpenVZ first.  I am sure there are other idea&#8217;s floating around about what could be done but that&#8217;s it for now on the IP front.</p>
<p>The other thing being worked on right now is the operating system management portion.  We&#8217;re going with the concept of there being categories of operating systems as well as operating systems themselves.  The reason being for the user you could display them OS&#8217;s that are strictly that and you could also display them ones with control panels.  Of course the ability to make the OS not public to the user is possible as well as completely disabling an OS from being used again are possible.  This portion should be completed early on today then onto creating virtual machine plans and virtual machines themselves.  I will talk tomorrow about how we&#8217;re adding the concept of plans and how it varies from others.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.hawkhost.com/blog/2009/06/11/learn-something-new-everyday/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Wordpress 2.8 Released</title>
		<link>http://www.hawkhost.com/blog/2009/06/11/wordpress-2-8-released/</link>
		<comments>http://www.hawkhost.com/blog/2009/06/11/wordpress-2-8-released/#comments</comments>
		<pubDate>Thu, 11 Jun 2009 14:53:16 +0000</pubDate>
		<dc:creator>Tony</dc:creator>
				<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://www.hawkhost.com/blog/?p=423</guid>
		<description><![CDATA[It&#8217;s that time again a new version of wordpress is out as an official stable release which means time to upgrade.  Of course as of recent versions you can upgrade with just a simple click within the wordpress admin making it a quick and easy upgrade.  With that being said never risk having the upgrade [...]]]></description>
			<content:encoded><![CDATA[<p>It&#8217;s that time again a new version of wordpress is out as an official stable release which means time to upgrade.  Of course as of recent versions you can upgrade with just a simple click within the wordpress admin making it a quick and easy upgrade.  With that being said never risk having the upgrade not go right so make sure to backup your files and database before upgrading.</p>
<p>Here are some highlights of wordpress 2.8</p>
<ul>
<li> New drag-and-drop widgets admin interface and <a href="http://codex.wordpress.org/Version_2.8#New_Widgets_API">new widgets API</a></li>
<li> Syntax highlighting and function lookup built into plugin and theme editors</li>
<li> Browse the theme directory and install themes from the admin</li>
<li> Allow the dashboard widgets to be arranged in up to four columns</li>
<li> Allow configuring the number of items to show on management pages with an option in Screen Options</li>
<li> Support timezones and automatic daylight savings time adjustment</li>
<li> Support IIS 7.0 URL Rewrite Module</li>
<li> Faster loading of admin pages via script compression and concatenation</li>
</ul>
<p>There is obviously more than just this but that&#8217;s the highlights there is also other new features as well as 790 bugs stomped in this release.  You can check out a video of 2.8 in action at <a href="http://wordpress.org/development/2009/06/wordpress-28/">http://wordpress.org/development/2009/06/wordpress-28/</a> .</p>
<p>You read all the way to here?  What&#8217;s wrong with you?  You should already be upgrading <img src='http://www.hawkhost.com/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://www.hawkhost.com/blog/2009/06/11/wordpress-2-8-released/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Onto The Second Day</title>
		<link>http://www.hawkhost.com/blog/2009/06/10/onto-the-second-day/</link>
		<comments>http://www.hawkhost.com/blog/2009/06/10/onto-the-second-day/#comments</comments>
		<pubDate>Wed, 10 Jun 2009 15:45:43 +0000</pubDate>
		<dc:creator>Tony</dc:creator>
				<category><![CDATA[VezozVM]]></category>

		<guid isPermaLink="false">http://www.hawkhost.com/blog/?p=420</guid>
		<description><![CDATA[The first day full day of development on the panel went quite well we got a lot accomplished in a short amount of time.  Here&#8217;s what was accomplished yesterday:
Database Schema
The basics of the database have been designed to handle what we need from the start.  This includes but is not limited to machines, ip pools, [...]]]></description>
			<content:encoded><![CDATA[<p>The first day full day of development on the panel went quite well we got a lot accomplished in a short amount of time.  Here&#8217;s what was accomplished yesterday:</p>
<p><strong>Database Schema</strong></p>
<p>The basics of the database have been designed to handle what we need from the start.  This includes but is not limited to machines, ip pools, ip addresses, virtual machines, users, user sessions.  This also of course includes relationship tables like how to relate an IP pool to a machine so that it can be used by that machine.</p>
<p><strong>Framework</strong></p>
<p>The beauty of this is with all our other projects already using the Vezoz name sake we have a lot of code developed for generic tasks.  We obviously use Zend Framework but that does not cover everything we have.  We a very complete and powerful model extension to handle the majority of data handling.  We have systems in place to quickly create listing pages that are very powerful (search, sort, pagination ect.).</p>
<p><strong>Admin Area</strong></p>
<p>Obviously the authentication system is in place for administrators to login.  It also now has the machine handling code in place as well as the majority of the IP address system.</p>
<p><strong>Client Area</strong></p>
<p>Nothing as of yet</p>
<p><strong>Virtual Machine Handling</strong></p>
<p>This being an obvious major piece of the software we&#8217;re currently determining the syntax and the commands necessary to replicate the old HyperVM system we used.  So basically all the vzctl commands as well as a few others used for monitoring.  We have determined how to handle traffic measuring and we will also be able to create IP&#8217;s that are not bandwidth tracked using our method.  This should be very useful for those who have private networks where they may wish to offer users NAS, iSCSI ect. but do not want that traffic to be counted towards the users bandwidth amounts.</p>
<p><strong>Goals For Today</strong></p>
<p>Today the goals are to continue to working on the administrative system.  The goal is by the end of the week at the latest have everything in place on the admin side that it will handle everything necessary on the database end to keep track of everything.  This could include it issueing commands that return as successful but really not doing anything (just calling the objects and methods that would do vzctl functions)</p>
]]></content:encoded>
			<wfw:commentRss>http://www.hawkhost.com/blog/2009/06/10/onto-the-second-day/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
	</channel>
</rss>

<!-- Dynamic page generated in 0.350 seconds. -->
<!-- Cached page generated by WP-Super-Cache on 2009-07-04 19:25:12 -->
