<?xml version="1.0" encoding="UTF-8"?>
<!-- generator="wordpress/2.2.1" -->
<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/"
	>

<channel>
	<title>Bad CTK</title>
	<link>http://blog.charcoalphile.com</link>
	<description>On Databases, Recovery, Tech</description>
	<pubDate>Thu, 25 Jun 2009 20:27:00 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.2.1</generator>
	<language>en</language>
			<item>
		<title>Merging Tables To Kill JOINs</title>
		<link>http://blog.charcoalphile.com/2009/06/25/merging-tables-to-kill-joins/</link>
		<comments>http://blog.charcoalphile.com/2009/06/25/merging-tables-to-kill-joins/#comments</comments>
		<pubDate>Thu, 25 Jun 2009 20:24:37 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[PostgreSQL]]></category>

		<category><![CDATA[General]]></category>

		<guid isPermaLink="false">http://blog.charcoalphile.com/2009/06/25/merging-tables-to-kill-joins/</guid>
		<description><![CDATA[I was working on this project that has several large tables, and many JOINs. It had reached the point where the JOINs were becoming too costly, but fortunately, some of the tables could be merged. The problem, though, was figuring out how to get the data merged. I came up with a solution that uses [...]]]></description>
			<content:encoded><![CDATA[<p>I was working on this project that has several large tables, and many JOINs. It had reached the point where the JOINs were becoming too costly, but fortunately, some of the tables could be merged. The problem, though, was figuring out how to get the data merged. I came up with a solution that uses views and rules&#8230; Let&#8217;s say there&#8217;s 2 tables, &#8220;main_table&#8221; and &#8220;tbl1&#8243;, and &#8220;tbl1&#8243; needs to be merged with &#8220;main_table&#8221;:</p>
<pre style="padding: 8px; background: #f1f1f1; border-left: 3px solid #d1d1d1;">
-- Create new columns in main_table
ALTER TABLE main_table ADD COLUMN col1 VARCHAR(32);
ALTER TABLE main_table ADD COLUMN col2 VARCHAR(32);

-- Create view for tbl1
CREATE VIEW tbl1_view AS SELECT * FROM tbl1;

-- Create rule for view, tbl1_view
CREATE RULE tbl1_view_upd AS ON UPDATE TO tbl1_view DO INSTEAD (
    UPDATE main_table SET col1 = NEW.col1, col2 = NEW.col2
        WHERE id = NEW.refid;
);
</pre>
<p>The view comes in useful, because it doesn&#8217;t affect updates to tbl1 while you&#8217;re working. Now, if you simply do an update to the view, it will update the newly created columns in &#8220;main_table&#8221; to reflect the ones in &#8220;tbl1&#8243;. The view and old table can then be safely dropped once the data is merged.</p>
<pre style="padding: 8px; background: #f1f1f1; border-left: 3px solid #d1d1d1;">
UPDATE tbl1_view SET id = id;
DROP VIEW tbl_view;
DROP TABLE tbl1;
</pre>
<p>Another view with rules can then be created to represent the data that was previously in &#8220;tbl1&#8243; and redirect writes to &#8220;main_table&#8221;, so things don&#8217;t break while backend code is being updated. My solution turned out to be a simple way to merge the tables. I would definitely consider a different approach if you&#8217;re working with millions of rows, though.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.charcoalphile.com/2009/06/25/merging-tables-to-kill-joins/feed/</wfw:commentRss>
		</item>
		<item>
		<title>PHP: The Problem With is_callable() And __call()</title>
		<link>http://blog.charcoalphile.com/2009/04/22/php-the-problem-with-is_callable-and-__call/</link>
		<comments>http://blog.charcoalphile.com/2009/04/22/php-the-problem-with-is_callable-and-__call/#comments</comments>
		<pubDate>Wed, 22 Apr 2009 22:16:13 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[PHP]]></category>

		<category><![CDATA[Code]]></category>

		<guid isPermaLink="false">http://blog.charcoalphile.com/2009/04/22/php-the-problem-with-is_callable-and-__call/</guid>
		<description><![CDATA[So I ran into this problem with PHP: when you have a class that uses method overloading via __call(), is_callable() will always return true for any function given to it, no matter if it exists or not. I know this is by design, but it&#8217;s still heavily brain-damaged. Here&#8217;s an example of what I&#8217;m talking [...]]]></description>
			<content:encoded><![CDATA[<p>So I ran into this problem with PHP: when you have a class that uses method overloading via __call(), is_callable() will always return true for any function given to it, no matter if it exists or not. I know this is by design, but it&#8217;s still heavily brain-damaged. Here&#8217;s an example of what I&#8217;m talking about:</p>
<pre style="padding:8px; background:#f1f1f1; border-left: 3px solid #d1d1d1;">

class foo {

    public function __call($name, $args)
    {
        echo "$name called\n";
    }
}

$foo = new foo();
if (is_callable(array($foo, 'non_existent_method'))) {
    echo "foo->non_existant_method() is callable\n";
}
</pre>
<p>My whole problem with this, is it&#8217;s completely undocumented. If you use method_exists(), you may expect it to return true for method overloading, but that&#8217;s not the case.</p>
<p>So:<br />
<strong>is_callable()</strong> - Recognizes __call()<br />
<strong>method_exists()</strong> - Doesn&#8217;t recognize __call()</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.charcoalphile.com/2009/04/22/php-the-problem-with-is_callable-and-__call/feed/</wfw:commentRss>
		</item>
		<item>
		<title>More On Comcast&#8217;s Move To Digital</title>
		<link>http://blog.charcoalphile.com/2009/04/09/more-on-comcasts-move-to-digital/</link>
		<comments>http://blog.charcoalphile.com/2009/04/09/more-on-comcasts-move-to-digital/#comments</comments>
		<pubDate>Thu, 09 Apr 2009 16:44:45 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[HDTV]]></category>

		<category><![CDATA[Comcast]]></category>

		<category><![CDATA[General]]></category>

		<guid isPermaLink="false">http://blog.charcoalphile.com/2009/04/09/more-on-comcasts-move-to-digital/</guid>
		<description><![CDATA[Comcast&#8217;s plan to transition to digital is well on it&#8217;s way in Seattle/Tacoma. Infrastructure is being upgraded in many areas to increase HDTV capacity, which mostly involves upgrading old systems to an 860Mhz system. In some areas, analog channels are already in the process of being shut off. They&#8217;re not shut off yet; currently they [...]]]></description>
			<content:encoded><![CDATA[<p>Comcast&#8217;s plan to transition to digital is well on it&#8217;s way in Seattle/Tacoma. Infrastructure is being upgraded in many areas to increase HDTV capacity, which mostly involves upgrading old systems to an 860Mhz system. In some areas, analog channels are already in the process of being shut off. They&#8217;re not shut off yet; currently they display a screen with a phone number to call to order a digital cable box, but they&#8217;re sure to be shut off in the near future.</p>
<p>The space freed by the analog channels will be used primarily for HDTV. This is something Comcast desperately needs in order to compete with DirecTV and Verizon FiOS. <a href="http://blog.seattletimes.nwsource.com/brierdudley/2009/03/16/comcast_digital_switch_new_list_of_affected_areas.html">Brier Dudley of the Seattle Times, posted a blog entry that explains which areas are expected to have their analog shut off.</a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.charcoalphile.com/2009/04/09/more-on-comcasts-move-to-digital/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Asking Who For What?</title>
		<link>http://blog.charcoalphile.com/2009/04/02/asking-who-for-what/</link>
		<comments>http://blog.charcoalphile.com/2009/04/02/asking-who-for-what/#comments</comments>
		<pubDate>Thu, 02 Apr 2009 20:39:00 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[Funny]]></category>

		<category><![CDATA[General]]></category>

		<guid isPermaLink="false">http://blog.charcoalphile.com/2009/04/02/asking-who-for-what/</guid>
		<description><![CDATA[I recently stumbled across this gem, from a website called Minda News&#8230; I think the Moro Islamic Liberation Front should consider a name change. Click the image for full view.

Note that &#8220;cell phone&#8221; is also horribly misspelled.
]]></description>
			<content:encoded><![CDATA[<p>I recently stumbled across this gem, from a website called Minda News&#8230; I think the Moro Islamic Liberation Front should consider a name change. Click the image for full view.</p>
<p style="padding-right: 4px; padding-left: 4px; padding-top: 12px; padding-bottom: 12px; background-image: initial; background-repeat: initial; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial; background-color: #f1f1f1; border-left-width: 3px; border-left-style: solid; border-left-color: #d1d1d1"><span class="Apple-style-span" style="color: #0000ee; text-decoration: underline"><a href="http://blog.charcoalphile.com/wp-content/uploads/2009/04/picture-2.png" title="Moro Islamic Liberation Front (MILF)"><img src="http://blog.charcoalphile.com/wp-content/uploads/2009/04/picture-2.thumbnail.png" alt="Moro Islamic Liberation Front (MILF)" /></a></span></p>
<p>Note that &#8220;cell phone&#8221; is also horribly misspelled.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.charcoalphile.com/2009/04/02/asking-who-for-what/feed/</wfw:commentRss>
		</item>
		<item>
		<title>PostgreSQL AGE() Function Not Indexable</title>
		<link>http://blog.charcoalphile.com/2009/02/09/postgresql-age-function-not-indexable/</link>
		<comments>http://blog.charcoalphile.com/2009/02/09/postgresql-age-function-not-indexable/#comments</comments>
		<pubDate>Mon, 09 Feb 2009 22:44:04 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[PostgreSQL]]></category>

		<category><![CDATA[SQL]]></category>

		<guid isPermaLink="false">http://blog.charcoalphile.com/2009/02/09/postgresql-age-function-not-indexable/</guid>
		<description><![CDATA[I was working a project that needed to be able to look up records, from a certain time frame. Interestingly enough, I discovered that the AGE() function cannot use indexes. My workaround, is to create a functional index that extracts the unix timestamp from the TIMESTAMP data type, and uses a BETWEEN clause.
So:

SELECT * FROM [...]]]></description>
			<content:encoded><![CDATA[<p>I was working a project that needed to be able to look up records, from a certain time frame. Interestingly enough, I discovered that the AGE() function cannot use indexes. My workaround, is to create a functional index that extracts the unix timestamp from the TIMESTAMP data type, and uses a BETWEEN clause.</p>
<p>So:</p>
<pre style="padding: 8px; background: #f1f1f1; border-left: 3px solid #d1d1d1;">
SELECT * FROM my_table
WHERE AGE(NOW(), my_timestamp) <= '1 day'::interval;
</pre>
<p>Becomes:</p>
<pre style="padding: 8px; background: #f1f1f1; border-left: 3px solid #d1d1d1;">
CREATE INDEX my_table_epoch_idx ON my_table
  (EXTRACT(epoch FROM my_timestamp));

SELECT * FROM my_table WHERE EXTRACT(epoch FROM my_timestamp)
  BETWEEN EXTRACT(epoch FROM NOW()) - 86400
  AND EXTRACT(epoch FROM NOW());
</pre>
<p>Both queries fetch items where my_timestamp is less than 24 hours old, but the latter has the ability to use an index.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.charcoalphile.com/2009/02/09/postgresql-age-function-not-indexable/feed/</wfw:commentRss>
		</item>
		<item>
		<title>PostgreSQL And SELECT DISTINCT On Large Tables</title>
		<link>http://blog.charcoalphile.com/2009/01/22/postgresql-and-select-distinct-on-large-tables/</link>
		<comments>http://blog.charcoalphile.com/2009/01/22/postgresql-and-select-distinct-on-large-tables/#comments</comments>
		<pubDate>Thu, 22 Jan 2009 21:10:34 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[PostgreSQL]]></category>

		<category><![CDATA[SQL]]></category>

		<category><![CDATA[General]]></category>

		<guid isPermaLink="false">http://blog.charcoalphile.com/2009/01/22/postgresql-and-select-distinct-on-large-tables/</guid>
		<description><![CDATA[I&#8217;ve been noticing lately that PostgreSQL&#8217;s SELECT DISTINCT operation seems to be un-optimized for large tables. Take a look:

# EXPLAIN ANALYZE SELECT DISTINCT mycol FROM mytable;
QUERY PLAN
------------------------
 Unique (time=3393.085..3615.420 rows=20799 loops=1)
 ->  Sort  (time=3393.082..3514.374 rows=204494 loops=1)
       Sort Key: mycol
       ->  [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve been noticing lately that PostgreSQL&#8217;s SELECT DISTINCT operation seems to be un-optimized for large tables. Take a look:</p>
<pre style="padding: 8px; border-left: 3px solid #d1d1d1; background: #f1f1f1;">
# EXPLAIN ANALYZE SELECT DISTINCT mycol FROM mytable;
QUERY PLAN
------------------------
 Unique (time=3393.085..3615.420 rows=20799 loops=1)
 ->  Sort  (time=3393.082..3514.374 rows=204494 loops=1)
       Sort Key: mycol
       ->  Seq Scan (time=9.455..289.479 rows=204494)
 Total runtime: 3626.724 ms
(5 rows)
</pre>
<p>
Now compare DISTINCT to GROUP BY:
</p>
<pre style="padding: 8px; border-left: 3px solid #d1d1d1; background: #f1f1f1;">
# EXPLAIN ANALYZE SELECT mycol FROM mytable GROUP BY mycol;
QUERY PLAN
------------------------
 HashAggregate (time=415.129..427.497 rows=20799)
   ->  Seq Scan (time=8.127..269.190 rows=204494)
 Total runtime: 433.836 ms
(3 rows)
</pre>
<p>
That&#8217;s quite an improvement. 3626.724 ms compared to 433.836 ms. Even with ordering, GROUP BY is still faster:
</p>
<pre style="padding: 8px; border-left: 3px solid #d1d1d1; background: #f1f1f1;">
# EXPLAIN ANALYZE SELECT mycol FROM mytable GROUP BY mycol
ORDER BY mycol;
QUERY PLAN
------------------------
 Sort  (time=642.126..654.545 rows=20799 loops=1)
   Sort Key: mycol
   ->  HashAggregate  (time=408.922..423.040 rows=20799)
         ->  Seq Scan (time=7.519..263.577 rows=204494)
 Total runtime: 661.537 ms
(5 rows)
</pre>
<p>
The main problem seems to be that PostgreSQL is choosing a bad query plan. Lets try forcing PostgreSQL to use an index scan on SELECT DISTINCT:
</p>
<pre style="padding: 8px; border-left: 3px solid #d1d1d1; background: #f1f1f1;">
# SET enable_seqscan = off;
SET
# EXPLAIN ANALYZE SELECT DISTINCT mycol FROM mytable;
QUERY PLAN
------------------------
Unique (actual time=0.013..361.917 rows=20799 loops=1)
   ->  Index Scan (actual time=0.012..266.856 rows=204494)
 Total runtime: 368.296 ms
(3 rows)

# SET enable_seqscan = on;
SET
</pre>
<p>
Wow! Big improvement. Lets see how that compares to GROUP BY with sequential scans turned off:
</p>
<pre style="padding: 8px; border-left: 3px solid #d1d1d1; background: #f1f1f1;">
# SET enable_seqscan = off;
SET
# EXPLAIN ANALYZE SELECT mycol FROM mytable GROUP BY mycol
ORDER BY mycol;
QUERY PLAN
------------------------
 Group (actual time=0.014..362.013 rows=20799)
   ->  Index Scan (actual time=0.011..267.001 rows=204494)
 Total runtime: 368.201 ms
(3 rows)

# SET enable_seqscan = on;
SET
</pre>
<p>
So, at this point, the two queries are comparable. Tweaking the configuration sometimes causes PostgreSQL to choose a bad plan on other queries, so it seems like if PostgreSQL is choosing a bad plan for a query like this, you can simply turn sequential scans off for it.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.charcoalphile.com/2009/01/22/postgresql-and-select-distinct-on-large-tables/feed/</wfw:commentRss>
		</item>
		<item>
		<title>PostGIS: Bounding Box Indexing</title>
		<link>http://blog.charcoalphile.com/2008/12/19/postgis-bounding-box-indexing/</link>
		<comments>http://blog.charcoalphile.com/2008/12/19/postgis-bounding-box-indexing/#comments</comments>
		<pubDate>Fri, 19 Dec 2008 22:03:18 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[PostGIS]]></category>

		<category><![CDATA[PostgreSQL]]></category>

		<category><![CDATA[SQL]]></category>

		<guid isPermaLink="false">http://blog.charcoalphile.com/2008/12/19/postgis-bounding-box-indexing/</guid>
		<description><![CDATA[You may have seen from my previous post, that I&#8217;ve been playing around with PostGIS. I had some more time to dig deeper into it, and I found that, although functions like distance_sphere/ST_distance_sphere aren&#8217;t indexable, bounding-box lookups are. Bounding box indexing can be used in conjunction with those functions, to improve the performance of queries, [...]]]></description>
			<content:encoded><![CDATA[<p>You may have seen from my previous post, that I&#8217;ve been playing around with PostGIS. I had some more time to dig deeper into it, and I found that, although functions like distance_sphere/ST_distance_sphere aren&#8217;t indexable, bounding-box lookups are. Bounding box indexing can be used in conjunction with those functions, to improve the performance of queries, fairly easily.</p>
<p>This only works for GiST indexes, which can be confusing if you&#8217;re not familiar with indexes in PostgreSQL. Say the GEOMETRY column you want to index is <i>geom</i> on the table <i>zip</i>. Basically, you just do:</p>
<pre style="border-left: 4px solid #d1d1d1; background: #f1f1f1; padding: 8px;">
CREATE INDEX zip_geom_idx ON zip USING GIST (geom);
</pre>
<p>For searching for points that are within a certain radius of another, PostGIS provides a function called expand/ST_expand, which expands a single point to a box, which can then be used in an index lookup.  </p>
<p>The queries essentially break down to:</p>
<pre style="border-left: 4px solid #d1d1d1; background: #f1f1f1; padding: 8px;">
SELECT ... FROM ... WHERE
geom &#038;&#038; expand('some point', 1)
AND distance_sphere('some point', geom) <= (15 * 1609.344);
</pre>
<p>The first part of the WHERE clause, geom &#038;&#038; expand(&#8217;some point&#8217;, 1), expands &#8220;some point&#8221; 1 degree in all directions to create a box, and finds points that are inside or on the border of the expanded box. This is the part that indexing is used on.</p>
<p>The second part of the WHERE clause, distance_sphere(&#8217;some point&#8217;, geom) <= (15 * 1609.344), refines the selection (the rows that were found in the index scan), down to points that are within 15 miles of 'some point'.</p>
<p>I usually just use subqueries and a join, rather than doing multiple fetches, so in my case it looks more like:</p>
<pre style="border-left: 4px solid #d1d1d1; background: #f1f1f1; padding: 8px;">
SELECT t.* FROM mytable t
JOIN zip z ON (z.zip = t.zip)
WHERE z.geom &#038;&#038; expand(
    (SELECT geom FROM zip WHERE zip = '10001'), 1)
AND distance_sphere(geom,
    (SELECT geom FROM zip WHERE zip = '10001')) <= (15 * 1609.344);
</pre>
]]></content:encoded>
			<wfw:commentRss>http://blog.charcoalphile.com/2008/12/19/postgis-bounding-box-indexing/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Versus / Golf Split, And Comcast Phasing Out Analog</title>
		<link>http://blog.charcoalphile.com/2008/12/08/versus-golf-split-and-comcast-phasing-out-analog/</link>
		<comments>http://blog.charcoalphile.com/2008/12/08/versus-golf-split-and-comcast-phasing-out-analog/#comments</comments>
		<pubDate>Tue, 09 Dec 2008 01:29:37 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[HDTV]]></category>

		<category><![CDATA[Comcast]]></category>

		<category><![CDATA[General]]></category>

		<guid isPermaLink="false">http://blog.charcoalphile.com/2008/12/08/versus-golf-split-and-comcast-phasing-out-analog/</guid>
		<description><![CDATA[The Versus / Golf split is complete. For Comcast, in Seattle / Tacoma, the new channels are:

625 Golf HD
626 Versus HD 

The former hybrid channel Versus/Golf, is pending removal.
Also I read an interesting article about Comcast shutting off analog in Seattle / Tacoma (link). Basically, it says channels 2-29 will remain broadcasting in analog for the [...]]]></description>
			<content:encoded><![CDATA[<p>The Versus / Golf split is complete. For Comcast, in Seattle / Tacoma, the new channels are:</p>
<ul>
<li>625 Golf HD</li>
<li>626 Versus HD </li>
</ul>
<p>The former hybrid channel Versus/Golf, is pending removal.</p>
<p>Also I read an interesting article about Comcast shutting off analog in Seattle / Tacoma (<a href="http://seattletimes.nwsource.com/html/brierdudley/2008480563_brier08.html">link</a>). Basically, it says channels 2-29 will remain broadcasting in analog for the time being, but everything over 29 will be phased out over the next year. They could start the transition as soon as sometime this month, around the time they roll out their new Wideband Internet service. They are also lowering the price of their Digital Cable service, to the price of the current Extended-Basic service (the analog package, which is being phased out).</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.charcoalphile.com/2008/12/08/versus-golf-split-and-comcast-phasing-out-analog/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Comcast Channel Shuffling</title>
		<link>http://blog.charcoalphile.com/2008/12/06/comcast-channel-shuffling/</link>
		<comments>http://blog.charcoalphile.com/2008/12/06/comcast-channel-shuffling/#comments</comments>
		<pubDate>Sat, 06 Dec 2008 20:47:55 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[HDTV]]></category>

		<category><![CDATA[Comcast]]></category>

		<category><![CDATA[General]]></category>

		<guid isPermaLink="false">http://blog.charcoalphile.com/2008/12/06/comcast-channel-shuffling/</guid>
		<description><![CDATA[If you&#8217;re wondering why there&#8217;s nothing on MOJO HD, it&#8217;s because MOJO HD has been cancelled (iN DEMAND confirms). Now the question is, what will it be replaced with.
In the Seattle/Tacoma area, Comcast has been shuffling channels around.

MHD has been renamed to Palladia.
ESPN HD is now being mapped to both 173 (old) and 623 (new), [...]]]></description>
			<content:encoded><![CDATA[<p>If you&#8217;re wondering why there&#8217;s nothing on MOJO HD, it&#8217;s because MOJO HD has been cancelled (iN DEMAND confirms). Now the question is, what will it be replaced with.</p>
<p>In the Seattle/Tacoma area, Comcast has been shuffling channels around.</p>
<ul>
<li>MHD has been renamed to Palladia.</li>
<li>ESPN HD is now being mapped to both 173 (old) and 623 (new), the old channel presumably pending removal.</li>
<li>ESPN2 HD is now being mapped to both 174 (old) and 624 (new), the old channel presumably pending removal.</li>
<li>FSN HD has been rolled out (using the space freed by MOJO???). It&#8217;s channel 627.</li>
<li>The hybrid channel, VS/Golf, is going to be split into two separate channels (VS and Golf). Whether or not both (or which, if any) will be carried in this area, is unconfirmed at this point.</li>
<li>King-5 Weather Plus (channel 115) is pending removal, scheduled to be removed on 12-31-2008. The reason is, the parent company has decided to pull the plug on it.</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://blog.charcoalphile.com/2008/12/06/comcast-channel-shuffling/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Spurious Rumors: Comcast Ramping Up HD?</title>
		<link>http://blog.charcoalphile.com/2008/11/26/spurious-rumors-comcast-ramping-up-hd/</link>
		<comments>http://blog.charcoalphile.com/2008/11/26/spurious-rumors-comcast-ramping-up-hd/#comments</comments>
		<pubDate>Thu, 27 Nov 2008 03:11:40 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[General]]></category>

		<guid isPermaLink="false">http://blog.charcoalphile.com/2008/11/26/spurious-rumors-comcast-ramping-up-hd/</guid>
		<description><![CDATA[I&#8217;ve been following some spurious rumors, that Comcast could be preparing to ramp up their HD capacity in the Seattle/Tacoma area. A technician said that next month, they&#8217;re supposedly going to cut the number of analog channels they provide. Why is this important? Because the old analog channels take up twice as much space as [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve been following some spurious rumors, that Comcast could be preparing to ramp up their HD capacity in the Seattle/Tacoma area. A technician said that next month, they&#8217;re supposedly going to cut the number of analog channels they provide. Why is this important? Because the old analog channels take up twice as much space as the average HD channel.</p>
<p>A single analog channel consumes a 6mhz slot (while 2-3 HD channels can occupy the same slot). If they&#8217;re running 70 analog channels on a 860mhz system, then the analog channels consume roughly half of it&#8217;s capacity. Even removing a few of those channels frees up a lot of space for more HD channels. In some cities that are all digital, Comcast runs 50+ HD channels.</p>
<p>I have my fingers crossed.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.charcoalphile.com/2008/11/26/spurious-rumors-comcast-ramping-up-hd/feed/</wfw:commentRss>
		</item>
	</channel>
</rss>
