<?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>Pure Speculation</title>
	<atom:link href="http://www.mshiltonj.com/blog/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.mshiltonj.com/blog</link>
	<description>Ramblings about technology, programming, politics, economics, religion, and life by mshiltonj. Occasionally interesting.</description>
	<lastBuildDate>Tue, 04 Oct 2011 13:09:10 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
		<item>
		<title>nodejs EventEmitter example with custom events</title>
		<link>http://www.mshiltonj.com/blog/2011/10/04/nodejs-eventemitter-example-with-custom-events/</link>
		<comments>http://www.mshiltonj.com/blog/2011/10/04/nodejs-eventemitter-example-with-custom-events/#comments</comments>
		<pubDate>Tue, 04 Oct 2011 13:07:48 +0000</pubDate>
		<dc:creator>mshiltonj</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[javascript node eventemitter]]></category>

		<guid isPermaLink="false">http://www.mshiltonj.com/blog/?p=322</guid>
		<description><![CDATA[A good example of an event emitter needs three things: A thing that emits events A thing that listens to, and handles, those events Something that drives the two, causing events to be emitted. Using node v0.4.11-pre, here is a small example illustrating custom event handling using EventEmitter. We need two modules from node: var [...]]]></description>
			<content:encoded><![CDATA[<p>A good example of an event emitter needs three things:</p>
<ul>
<li>A thing that emits events</li>
<li>A thing that listens to, and handles, those events</li>
<li>Something that drives the two, causing events to be emitted.</li>
</ul>
<p>Using node v0.4.11-pre, here is a small example illustrating custom event handling using <a href="http://nodejs.org/docs/v0.4.7/api/events.html#events.EventEmitter">EventEmitter</a>.</p>
<p>We need two modules from node:</p>
<blockquote>
<pre>var events = require('events');
var util = require('util');</pre>
</blockquote>
<p>The events module contains the EventEmitter class, which does all the heavy lifting for us. The <a href="http://nodejs.org/docs/v0.4.7/api/util.html#util.inherits">util</a> package provides a convenient way to have one class inherit from another. One of our classes will inherit functionality from EventEmitter. Let&#8217;s look at that one now.</p>
<blockquote>
<pre>Eventer = function(){
  events.EventEmitter.call(this);
  this.kapow = function(){
    var data = "BATMAN"
    this.emit('blamo', data);
  }

  this.bam = function(){
     this.emit("boom");
  }
 };
util.inherits(Eventer, events.EventEmitter);</pre>
</blockquote>
<p>Here we define an Event class that inherits from EventEmitter.  Inside the kapow() method, we emit the &#8220;blamo&#8221; event, and inside the bam() method, we emit the &#8220;boom&#8221; event. When we emit the &#8220;blamo&#8221; event, we pass some data along with the event. If anything is listening to the &#8220;blamo&#8221; event, they will get the data parameter.  The &#8220;boom&#8221; event doesn&#8217;t have any associated data. The emit() method provided by EventEmitter.</p>
<p>By themselves, the events happen, but they don&#8217;t actually  do anything. Something else needs to listen for those events and do something with them. That&#8217;s an event listener:</p>
<blockquote>
<pre>Listener = function(){
  this.blamoHandler =  function(data){
    console.log("** blamo event handled");
    console.log(data);
  },
  this.boomHandler = function(){
    console.log("** boom event handled");
  }
};</pre>
</blockquote>
<p>Our Listener class defines our handlers for the two events in the Eventer class. They&#8217;re just normal methods that may or may not have parameters. We can do anything we like inside these methods &#8211;  do an ajax request to the server, show an alert to the user, hide an html element, etc. In our example, we&#8217;re just writing to the console.</p>
<p>But our listener is just sitting there. It&#8217;s not listening to anything yet. To make that happen, we have to let our eventer know we ready to accept events.</p>
<blockquote>
<pre>var eventer = new Eventer();
var listener = new Listener(eventer);
eventer.on('blamo', listener.blamoHandler);
eventer.on('boom', listener.boomHandler);</pre>
</blockquote>
<p>We create one Eventer object and one Listener object. Then we wire the two together with the on() method in our eventer object.  This tells the eventer to call the listener.blamoHandler function whenever the  &#8220;blamo&#8221; event get emitted, and to call the listener.boomHandler function whenever the &#8220;boom&#8221; event get emitted.</p>
<p>Our example has only one handler per event, but we could add two, three or a hundred different handlers for a single &#8216;blamo&#8217; event, and each function would be called separately.</p>
<p>We now have an eventer that will emit events, a listener that will handle events, and we&#8217;ve set up the relationship so that the listener is listening to the eventer&#8217;s events. The last thing we need is to just fire the events!</p>
<blockquote>
<pre>eventer.kapow();
eventer.bam();</pre>
</blockquote>
<p>If you look how we defined these methods above, you&#8217;ll see that whenever the kapow() method is called, it will emit the &#8220;blamo&#8221; event, which will trigger the &#8220;blamoHandler&#8221; function on the listener class, and pass the &#8220;data&#8221; parameter along with with it. Whenever the bam() method is called, it will emit the &#8220;boom&#8221; event, which with trigger the &#8220;boomHandler&#8221; function on the listener class.</p>
<p>And that&#8217;s it. We now have a complete example of custom event handling in nodejs.</p>
<h4>Warning</h4>
<p>This post didn&#8217;t address scoping issues. In the event handlers, the <code>this</code> object might not be what you expect. Event handling with proper scoping may be covered in a later post.</p>
<h4>Complete Code Example:</h4>
<p>Here is a complete code example with sample output:</p>
<pre>var events = require('events');
var util = require('util');

// The Thing That Emits Event
Eventer = function(){
  events.EventEmitter.call(this);
  this.kapow = function(){
    var data = "BATMAN"
    this.emit('blamo', data);
  }

  this.bam = function(){
     this.emit("boom");
  }
 };
util.inherits(Eventer, events.EventEmitter);</pre>
<pre>// The thing that listens to, and handles, those events
Listener = function(){
  this.blamoHandler =  function(data){
    console.log("** blamo event handled");
    console.log(data);
  },
  this.boomHandler = function(data){
    console.log("** boom event handled");
  }

};

// The thing that drives the two.
var eventer = new Eventer();
var listener = new Listener(eventer);
eventer.on('blamo', listener.blamoHandler);
eventer.on('boom', listener.boomHandler);

eventer.kapow();
eventer.bam();</pre>
<p>Copy and past this text into an example.js file. Then, run it from the command line:</p>
<blockquote>
<pre>node example.js</pre>
</blockquote>
<p>This should be your output:</p>
<blockquote>
<pre>** blamo event handled
BATMAN
** boom event handled</pre>
</blockquote>
<p>Thanks for reading!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.mshiltonj.com/blog/2011/10/04/nodejs-eventemitter-example-with-custom-events/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>One thing about Dojo</title>
		<link>http://www.mshiltonj.com/blog/2011/10/02/one-thing-about-dojo/</link>
		<comments>http://www.mshiltonj.com/blog/2011/10/02/one-thing-about-dojo/#comments</comments>
		<pubDate>Mon, 03 Oct 2011 02:28:29 +0000</pubDate>
		<dc:creator>mshiltonj</dc:creator>
				<category><![CDATA[Nodojo]]></category>

		<guid isPermaLink="false">http://www.mshiltonj.com/blog/?p=318</guid>
		<description><![CDATA[I have much more experience with ExtJS than I do with Dojo, so I can&#8217;t help but to compare the two.  I try not to say that ExtJS is *better* because I&#8217;m likely biased by my familiarity.  It&#8217;s just different. BUT&#8211; One thing about Dojo that I don&#8217;t like is having to declare &#8220;height:100%; width:100%&#8221; [...]]]></description>
			<content:encoded><![CDATA[<p>I have much more experience with ExtJS than I do with Dojo, so I can&#8217;t help but to compare the two.  I try not to say that ExtJS is *better* because I&#8217;m likely biased by my familiarity.  It&#8217;s just different.</p>
<p>BUT&#8211;</p>
<p>One thing about Dojo that I don&#8217;t like is having to declare &#8220;height:100%; width:100%&#8221; all over the place. It looks like the many containers by default have a height of 0px and an overflow of hidden. So even though the dom gets populated, the screen in mostly blank.</p>
<p>For complex layouts of containers within containers, you have to add &#8220;height: 100%; width: 100%&#8221; in a number of places.  It feels like this should be default behavior.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.mshiltonj.com/blog/2011/10/02/one-thing-about-dojo/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Bad timing to start a nodejs / websockets project</title>
		<link>http://www.mshiltonj.com/blog/2011/08/17/bad-timing-to-start-a-nodejs-websockets-project/</link>
		<comments>http://www.mshiltonj.com/blog/2011/08/17/bad-timing-to-start-a-nodejs-websockets-project/#comments</comments>
		<pubDate>Thu, 18 Aug 2011 01:55:15 +0000</pubDate>
		<dc:creator>mshiltonj</dc:creator>
				<category><![CDATA[Nodojo]]></category>

		<guid isPermaLink="false">http://www.mshiltonj.com/blog/?p=314</guid>
		<description><![CDATA[There are two main libraries for using websockets on a NodeJS server: Node Websocket Server Socket.IO Both are in an interim state right node as the web socket standard continues to evolve.  Draft-10 is the latest specification and it was is supported by the Chrome browser. But the libraries don&#8217;t support draft-10 yet. Miksago, the [...]]]></description>
			<content:encoded><![CDATA[<p>There are two main libraries for using websockets on a NodeJS server:</p>
<ul>
<li><a href="https://github.com/miksago/node-websocket-server">Node Websocket Server</a></li>
<li><a href="https://github.com/miksago/node-websocket-server">Socket.IO</a></li>
</ul>
<p>Both are in an interim state right node as the web socket standard continues to evolve.  Draft-10 is the latest specification and it was is supported by the Chrome browser. But the libraries don&#8217;t support draft-10 yet.</p>
<p>Miksago, the developer of the Node Websocket Server, is working in implementing draft-10 support. See the <a href="https://github.com/miksago/node-websocket-server/issues/72">Support draft-10 (chrome 14-dev+) </a>issue on github.</p>
<p>Socket.IO has an open issue at <a href="https://github.com/LearnBoost/socket.io/issues/439">Chrome Dev (14.0.835.8): &#8220;WebSocket is closed before the connection is established.&#8221;</a></p>
<p>I&#8217;m still mulling where to take this NoDoJo project. Do I make it use Ajax instead of the websockets? Not sure yet.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.mshiltonj.com/blog/2011/08/17/bad-timing-to-start-a-nodejs-websockets-project/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Marketing Driven Programming</title>
		<link>http://www.mshiltonj.com/blog/2011/08/17/marketing-driven-programming/</link>
		<comments>http://www.mshiltonj.com/blog/2011/08/17/marketing-driven-programming/#comments</comments>
		<pubDate>Wed, 17 Aug 2011 19:55:41 +0000</pubDate>
		<dc:creator>mshiltonj</dc:creator>
				<category><![CDATA[General]]></category>

		<guid isPermaLink="false">http://www.mshiltonj.com/blog/?p=309</guid>
		<description><![CDATA[The latest turn in the computer science industry is a new development process called “Marketing Driven Programming.” It is designed to make it easier for people who don’t have programming experience, but who do work in the Marketing Department, to develop applications independently of a technology or programming staff. Marketing Driven Programming requires a voice-recognition [...]]]></description>
			<content:encoded><![CDATA[<p>The latest turn in the computer science industry is a new development process called “Marketing Driven Programming.”</p>
<p>It is designed to make it easier for people who don’t have programming experience, but who do work in the Marketing Department, to develop applications independently of a technology or programming staff.</p>
<p>Marketing Driven Programming requires a voice-recognition element, because people from Marketing Department are (seemingly) much clearer when speaking, but the meaning of their thoughts are completely lost when committed to the written word and are able to be systematically analyzed.</p>
<p>The process amounts to a Marketing Expert speaking into a microphone, or to an individual that the Marketing Expert will treat as a microphone. For example, he might say, “I need a robust, multi-tiered, fault-tolerant, enterprise-class, innovative, xml, j2ee, turn-key, hands-off solution ASAP.”</p>
<p>At this point, the Marketing Driven Programming process begins.</p>
<ul>
<li>Step 1: <strong>BLORK!</strong></li>
</ul>
<ul>
<li>Step 2: Marketing Expert double-clicks on the setup.exe icon to receive and implement the solution.</li>
</ul>
<p><strong>NOTE:</strong> Step 1 may take a while. Please be patient. The process will initially report the completion time to be 3 months, but it may eventually take 9 months to 2 years to complete.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.mshiltonj.com/blog/2011/08/17/marketing-driven-programming/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Link: Node.JS and the WebSocket protocol</title>
		<link>http://www.mshiltonj.com/blog/2011/08/05/link-node-js-and-the-websocket-protocol/</link>
		<comments>http://www.mshiltonj.com/blog/2011/08/05/link-node-js-and-the-websocket-protocol/#comments</comments>
		<pubDate>Fri, 05 Aug 2011 10:48:14 +0000</pubDate>
		<dc:creator>mshiltonj</dc:creator>
				<category><![CDATA[Nodojo]]></category>

		<guid isPermaLink="false">http://www.mshiltonj.com/blog/?p=306</guid>
		<description><![CDATA[Did some searching on &#8220;nodejs websockets&#8221; and found this:Node.JS and the WebSocket protocol , which looks like a great into to websockets on node. &#160;]]></description>
			<content:encoded><![CDATA[<p>Did some searching on &#8220;nodejs websockets&#8221; and found this:<a href="http://devthought.com/2009/12/06/nodejs-and-the-websocket-protocol/">Node.JS and the WebSocket protocol</a> , which looks like a great into to websockets on node.</p>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.mshiltonj.com/blog/2011/08/05/link-node-js-and-the-websocket-protocol/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>First nodojo mockup</title>
		<link>http://www.mshiltonj.com/blog/2011/08/04/first-nodojo-mockup/</link>
		<comments>http://www.mshiltonj.com/blog/2011/08/04/first-nodojo-mockup/#comments</comments>
		<pubDate>Fri, 05 Aug 2011 03:15:07 +0000</pubDate>
		<dc:creator>mshiltonj</dc:creator>
				<category><![CDATA[Nodojo]]></category>
		<category><![CDATA[nodojo]]></category>

		<guid isPermaLink="false">http://www.mshiltonj.com/blog/?p=301</guid>
		<description><![CDATA[&#160; Here is a Balsamiq mockup of a potential Nodojo client, keeping with the IRC theme. Click to see it full size (1024&#215;768)]]></description>
			<content:encoded><![CDATA[<p>&nbsp;</p>
<p>Here is a Balsamiq mockup of a potential Nodojo client, keeping with the IRC theme. Click to see it full size (1024&#215;768)</p>
<p><a href="http://www.mshiltonj.com/blog/wp-content/uploads/2011/08/nodojo.png"><img class="aligncenter size-medium wp-image-300" title="first nodojo mockup" src="http://www.mshiltonj.com/blog/wp-content/uploads/2011/08/nodojo-300x225.png" alt="" width="300" height="225" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.mshiltonj.com/blog/2011/08/04/first-nodojo-mockup/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Nodojo general functional requirements</title>
		<link>http://www.mshiltonj.com/blog/2011/08/04/nodojo-general-functional-requirements/</link>
		<comments>http://www.mshiltonj.com/blog/2011/08/04/nodojo-general-functional-requirements/#comments</comments>
		<pubDate>Fri, 05 Aug 2011 02:52:59 +0000</pubDate>
		<dc:creator>mshiltonj</dc:creator>
				<category><![CDATA[Nodojo]]></category>

		<guid isPermaLink="false">http://www.mshiltonj.com/blog/?p=294</guid>
		<description><![CDATA[Here is a brief bullet list of requirements for nodojo messages beginning with &#8216;/&#8217; are server commands /help &#8212; show available commands /motd &#8212; show message of the day /join &#60;channel&#62; joins or subscribes to a room of the specified name /part &#60;channel&#62; leaves or unsubscribes from a room of the specified name /who &#60;user&#62; [...]]]></description>
			<content:encoded><![CDATA[<p>Here is a brief bullet list of requirements for nodojo</p>
<ul>
<li>messages beginning with &#8216;/&#8217; are server commands</li>
<li>/help &#8212; show available commands</li>
<li>/motd &#8212; show message of the day</li>
<li>/join &lt;channel&gt; joins or subscribes to a room of the specified name</li>
<li>/part &lt;channel&gt; leaves or unsubscribes from a room of the specified name</li>
<li>/who &lt;user&gt; show information of the specified user (username, connection time, last message time, room subscriptions)</li>
<li>/topic [channel] [text] set the topic of the specified room</li>
<li>/list list of existing rooms with the number of users in the room</li>
<li>/msg &lt;user&gt; sends a private message to user</li>
<li>/nick &lt;new user&gt; sets your name to new user name</li>
<li>the message of the day can be set in a text or config file</li>
<li>when connecting to the server, the client must provide a username for the user</li>
<li>username must be globally unique</li>
<li>if the submitted username is already in use, the connection is terminated with an error message</li>
<li>usernames must be alphanumeric, beginning with an alpha, and 32 characters or less</li>
<li>during initial connection, the client receives the message of the day</li>
<li>during initial connection, the client receives the help message</li>
<li>the client can get a list of available rooms</li>
<li>the client can join an any room</li>
<li>if the client joins a room that doesn&#8217;t exist, it is created</li>
<li>when a room has zero users, it is destroyed.</li>
<li>a client can be in any number of room at the same time</li>
<li>room names must be alphanumeric, beginning with an alpha, and 32 characters or less</li>
<li>room names are designated by a &#8216;#&#8217; pre-pended to the name</li>
<li>when a client joins a room, they subscribe to all messages and notices sent to that room</li>
<li>when a client joins a room, they get list of all other room subscriber&#8217;s usernames</li>
<li>while a client is subscribed to a room, it is notified of all joins and parts of other subscribers</li>
<li>while a client is subscribed to a room, it is notified if a subscriber changes it&#8217;s user nick</li>
<li>messages come from users/clients, and contain the text of the message and the intended room to receive the message</li>
<li>when sending messages to clients message contain the text of the message, the indended room to receive the message, and the username of the client that sent the message.</li>
<li>clients must be subscribed to the room to send a message to the room</li>
<li>notices are server-originated messages sent to the client, like help text, and not from a user</li>
</ul>
<p>It&#8217;s very IRC-like</p>
]]></content:encoded>
			<wfw:commentRss>http://www.mshiltonj.com/blog/2011/08/04/nodojo-general-functional-requirements/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Today, I&#8217;m starting the &#8220;Nodojo&#8221; chat system development project</title>
		<link>http://www.mshiltonj.com/blog/2011/08/03/today-im-starting-the-nodojo-chat-system-development-project/</link>
		<comments>http://www.mshiltonj.com/blog/2011/08/03/today-im-starting-the-nodojo-chat-system-development-project/#comments</comments>
		<pubDate>Thu, 04 Aug 2011 03:52:42 +0000</pubDate>
		<dc:creator>mshiltonj</dc:creator>
				<category><![CDATA[Nodojo]]></category>

		<guid isPermaLink="false">http://www.mshiltonj.com/blog/?p=284</guid>
		<description><![CDATA[In my spare time, such as it is, I&#8217;m going to build a feature-rich javascript chat system. There are other javascript-based chat systems, but this one is mine. The server component will be written in NodeJS, and the client will be a rich internet application in javascript using the Dojo toolkit. Communication will be done [...]]]></description>
			<content:encoded><![CDATA[<p>In my spare time, such as it is, I&#8217;m going to build a feature-rich javascript chat system. There are other javascript-based chat systems, but this one is mine. The server component will be written in <a href="http://nodejs.org/">NodeJS</a>, and the client will be a rich internet application in javascript using the <a href="http://dojotoolkit.org/">Dojo</a> toolkit. Communication will be done using websockets.</p>
<p>In terms of javascript proficiency, I&#8217;m probably a 7 on a scale of 1 to 10. I mainly use the ExtJS framework at my day job, but until now I&#8217;ve not used NodeJS or Dojo at all. This project is primarily for self-education.</p>
<p>In the past day or so, I&#8217;ve watched the hour-long presentation on the NodeJS home page, and managed to get it installed.  I&#8217;ve read a few of the Dojo tutorials and did some hello world type stuff.</p>
<p>This chat system will be called <strong>Nodojo</strong>, because I couldn&#8217;t think of anything more clever than just mashing the names of the two underlying projects together,  and the word had limited matches on Google.  So, unless you&#8217;re in Japan, it should be easy to find on the tubes.</p>
<p>Today, I created two projects on github: <a href="https://github.com/mshiltonj/nodojo-server">nodojo-server</a> and <a href="https://github.com/mshiltonj/nodojo-client">nodojo-client</a>. They are mainly just place holders for now.</p>
<p>I usually have just a couple hours in the evenings to work on things like this. Mostly, it&#8217;ll be about 8 to 10 hours per week for this project, so progress might be slow. And, now I have a really good reason to go the <a href="http://www.trianglejavascript.org/">TriangleJS</a> hack nights.</p>
<p>I  plan on making posts about my progress and what I&#8217;ve learned so far about once or twice per week. If you&#8217;re new to javascript or node or dojo, we can learn together.</p>
<p>Feedback is welcome and deeply appreciated, either here or on github,  but don&#8217;t send me any pull requests because  I want to write all the code myself.</p>
<p>One decision I feel strongly about is using the Dojo &#8220;programmatic&#8221; style for the client, emphasizing more code and less markup.  I don&#8217;t know if the dojo community leans one way or the other, so I may be helping or hurting myself when it comes to looking up tips in the dojo support systems, but we&#8217;ll see what happens.</p>
<p>I&#8217;ll be using the <a href="http://www.jetbrains.com/idea/">IntelliJ IDEA</a> IDE for development, using the new, beta <a href="http://plugins.intellij.net/plugin/?idea&amp;id=6098">NodeJS plugin</a>.  All development will be on my <a href="http://www.ubuntu.com/">Ubuntu Maverick</a> laptop.</p>
<p>Tomorrow, I want to</p>
<ul>
<li>Capture a written  list of functional requirements</li>
<li>Create one or two mockups of what I think the client UI might look like</li>
<li>Create meaningful README files for projects so github will have something to show.</li>
</ul>
<p>I also want to investigate unit testing for node and for dojo, but that will probably be this weekend.  I have not done any unit testing for javascript code yet.</p>
<p>See you in a day or two.</p>
<p>- mshiltonj</p>
]]></content:encoded>
			<wfw:commentRss>http://www.mshiltonj.com/blog/2011/08/03/today-im-starting-the-nodojo-chat-system-development-project/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>What I want from the Media: A little ass-kicking.</title>
		<link>http://www.mshiltonj.com/blog/2011/08/02/what-i-want-from-the-media-a-little-ass-kicking/</link>
		<comments>http://www.mshiltonj.com/blog/2011/08/02/what-i-want-from-the-media-a-little-ass-kicking/#comments</comments>
		<pubDate>Tue, 02 Aug 2011 02:05:00 +0000</pubDate>
		<dc:creator>mshiltonj</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[media]]></category>
		<category><![CDATA[politics]]></category>

		<guid isPermaLink="false">http://www.mshiltonj.com/blog/?p=97</guid>
		<description><![CDATA[There are two types of media. One I&#8217;m willing to pay for. One I&#8217;m not. The kind of media I&#8217;m NOT willing to pay for: Fluff. This includes: Sports News Entertainment News Product Reviews Press Releases TV Listings Etc There is so much information out there that I&#8217;m interested in knowing about, and the people [...]]]></description>
			<content:encoded><![CDATA[<p>There are two types of media. One I&#8217;m willing to pay for. One I&#8217;m not.</p>
<p>The kind of media I&#8217;m NOT willing to pay for: Fluff. This includes:</p>
<ul>
<li>Sports News</li>
<li>Entertainment News</li>
<li>Product Reviews</li>
<li>Press Releases</li>
<li>TV Listings</li>
<li>Etc</li>
</ul>
<p>There is so much information out there that I&#8217;m interested in knowing about, and the <span style="font-style: italic;">people who have that information want me to know about it</span>. But I&#8217;m not going to pay to be marketed to.</p>
<p>I&#8217;m ultimately a customer of the sports and entertainment and gadget industries, and it&#8217;s in the interests of those industries that I be as informed about them as possible. This type of information is facilitated by press releases and public relations departments and marketing budgets. Getting this information to me is <span style="font-style: italic;">not</span> journalism.</p>
<p>Example: I read The Road a couple weeks ago. I don&#8217;t know how I found out about the book and the movie. It just washed over me in the stream of information that I&#8217;m immersed in and I plucked out that nugget. I also paid money for the book &#8212; not used and not online, but new and from an actual brick and mortar bookstore. How quaint. But that purchase, and others like it, is all the fee I should have have to pay to have that information come to me. It&#8217;s your job, on your dime, to get information to me.</p>
<p>I&#8217;m not going to pay for information that marketers and public relations hacks are trying to get into my head. Ultimately I could live without it and the various industries would suffer because of my ignorance.</p>
<p>A &#8220;journalistic&#8221; endeavor focused on this type of information better be free to me &#8212; even though I, after a fashion, still want it. I ain&#8217;t payin.</p>
<p>The kind of media I AM willing to pay for: Ass Kicking.</p>
<ul>
<li>Investigative journalism</li>
<li>Exposing corruption and hypocracy</li>
<li> Telling me how I&#8217;m getting screwed over.</li>
</ul>
<p>There&#8217;s a whole class of information that I want to know about, and the <span style="font-style: italic;">people who have that information desperately DON&#8217;T want me to know about it</span>. This includes, but it not limited to, politicians and corporations. My assumption is that, with rare exception, they are corrupt, greedy, dishonest slime balls that want to poison me and steal my wallet.</p>
<p>I want to know about the cover-ups, the kickbacks, the backroom deals, the collusion, the illegal dumping, the lying and intimidation, the crimes, the drugs, the exploitation.</p>
<p>I want to know about the dark secrets that are not included in the marketing department&#8217;s glossy brochure.</p>
<p>I want to know about the creative budgeting that the government report used to fake up a result.</p>
<p>If you promise to focus on keeping informed with that type of information, I&#8217;ll gladly pay you for it.</p>
<p>I&#8217;m not really looking for &#8216;objectivity&#8217; here, either. This information is not given freely. This information has to pulled from the sources like rotten teeth.</p>
<p>For this type of reporting, I want you to view the objects of your investigation as The Enemy. They are not the good guys. There should be no professional partnerships or revolving doors. Your targets should *hate* you, because you are exposing them for the lying corrupt bastards they are.</p>
<p>People in the echelons of power should dread reading the news every morning, for fear of having their secrets splashed across the home page of your site.</p>
<p>This, I would pay for.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.mshiltonj.com/blog/2011/08/02/what-i-want-from-the-media-a-little-ass-kicking/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>An abrupt and drastic change is needed</title>
		<link>http://www.mshiltonj.com/blog/2010/11/19/an-abrupt-and-drastic-change-is-needed/</link>
		<comments>http://www.mshiltonj.com/blog/2010/11/19/an-abrupt-and-drastic-change-is-needed/#comments</comments>
		<pubDate>Fri, 19 Nov 2010 23:24:00 +0000</pubDate>
		<dc:creator>mshiltonj</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[media]]></category>

		<guid isPermaLink="false">http://www.mshiltonj.com/blog/?p=96</guid>
		<description><![CDATA[Note: I originally wrote this on July 7 or 8, 2008. The original url is: http://mcclatchynext.pbworks.com/w/page/20627218/An-abrupt-and-drastic-change-is-needed. I am posting it here so I&#8217;ll have my own copy&#8230; I&#8217;m afraid the newspaper industry will keep falling apart if it doesn&#8217;t do an abrupt and drastic change very soon. Something different. I don&#8217;t mean better, faster or [...]]]></description>
			<content:encoded><![CDATA[<p><span style="font-style:italic;">Note: I originally wrote this on July 7 or 8, 2008.  The original url is: <a href="http://mcclatchynext.pbworks.com/w/page/20627218/An-abrupt-and-drastic-change-is-needed">http://mcclatchynext.pbworks.com/w/page/20627218/An-abrupt-and-drastic-change-is-needed</a>. I am posting it here so I&#8217;ll have my own copy&#8230;</span></p>
<p>I&#8217;m afraid the newspaper industry will keep falling apart if it doesn&#8217;t do an abrupt and drastic change very soon. Something different. I don&#8217;t mean better, faster or cheaper. I don&#8217;t mean harnessing new technologies to improve the way we do things. I mean substantively, fundamentally different.</p>
<p>But different how?</p>
<p><span style="font-weight:bold;">Assume universal and ubiquitous Internet access</span></p>
<p>This is where the the world is going. We need to be ready for it. Start dropping print editions.</p>
<p>If you can read the news on your iPod or some other wireless device while sitting on the toilet, waiting in a doctor&#8217;s office or on the bus, you will not read the print edition.  Make plans now for online-only news operations. Not where the print and online editions fit hand-in-glove, but where the print side does not exist.</p>
<p>Don&#8217;t wait for this to happen and react, be proactive and take steps to make it happen. We need some creative destruction.</p>
<p>Don&#8217;t try to keep print alive. If it&#8217;s still bringing in money, fine, but don&#8217;t try to &#8220;re-invent the newspaper&#8221;. Use the print world to underwrite the building of the online world while you can.  But at some point, it&#8217;s not going to be worth all the paper, ink, gas, trucks and bodies to haul the news around every 24 hours. At some point, the printing press will cost too much.</p>
<p><span style="font-weight:bold;">Stop repackaging content we don&#8217;t own</span></p>
<p>The time when the local newspaper was a person&#8217;s primary window into the wider world beyond the community is gone.</p>
<p>Unless you are one of the top three or four newsapers in the country and you have dedicated staff writing original content on the subject, realize that people aren&#8217;t reading your local newspaper site to learn about what&#8217;s going on in the Middle East. You are not the original sources. Stories you get from the wire are the same stories everyone else gets from the wire.</p>
<p>The exact same story will show up 100 or 1000 times on a Google News search at roughly the same time. There is no added value here. Do not waste print or revenue or editorial resources schlepping around content that does not add some unique value to our sites for users.</p>
<p>This includes all content, not just news: Movies, stocks, weather, etc. If someone else owns the data and is selling it to you, they are selling it as a commodity on the Internet.</p>
<p>I can go to dozens of sites on the Internet to get my weather. In fact, I don&#8217;t even know who gives me my weather information. I have a little weather applet on my desktop that has current conditions. If I click on it, I get the forecast. 99% of the time, that&#8217;s all I need. I have a weather.com bookmark for my zipcode if I need anything more detailed. Why weather.com? Because that&#8217;s what they do. They own that data. They are focused on that data. I searched and clicked around and liked their page best. I almost never look anywhere else for weather.</p>
<p>Movies? I use a google bookmark for &#8220;movies + <zipcode>&#8221; That links to theaters, show times and reviews. The reviews are links from dozens of different sources. That&#8217;s just when I&#8217;m about to go to the movies. For movies in general, I go to Rotten Tomatoes or IMDB. Why? They own the space. They create the original data.</p>
<p>For any given type of content, there are a few sites that have cornered the market for it, because they specialize in that content. It will be increasingly difficult for newspapers to compete in those areas. We don&#8217;t specialize in, say, movies, and we don&#8217;t have enough of our own movie-related content to beat those who do specialize in it.</p>
<p>Most of the newspaper industry has partially conceded this point when it comes to daily stock listings. We know it&#8217;s a waste of ink and money to put it in print.</p>
<p>If you don&#8217;t own the content, you can&#8217;t own the eyeballs that want to see that content. You may have some eyeballs now, but that&#8217;s not a sustainable model. In the online world, wire services and redistribution of content are obsolete, and that model won&#8217;t last.</p>
<p>This means the Associated Press will eventually go away, or change significantly.</p>
<p><span style="font-weight:bold;">Don&#8217;t lean on classifieds for revenue</span></p>
<p>It&#8217;s gone and it&#8217;s not coming back. Ever. The sub-prime debacle accelerated the decline (over a cliff), but don&#8217;t fool yourself into thinking it&#8217;s coming back. It might tick up a bit, but that world is gone. Why? Two reasons.</p>
<p>I&#8217;ll let Robert Cringely tell the first reason, from his recent (online!) column: </p>
<blockquote><p>My young and lovely wife, showing what might be overoptimism or maybe artful timing given the economy but more likely just general disappointment with me, has decided to embark on a career in real estate sales. She has taken classes and passed tests, joined one of the very best local firms, and hurled herself into the business of selling historic Charleston homes while they still have some value and the termites haven&#8217;t finished their work.  And along the way, while mastering the Multiple Listing Service, she learned an important fact that was news to us both: people no longer find houses for sale by looking in the local newspaper. They use the Internet, instead.</p>
<p>The irony here is that &#8212; at least in these parts &#8212; the local paper seems chock-full of real estate ads. But according to her teachers down at the MLS university, those listings are simply vestigial, like little toes we all have but probably don&#8217;t need for balance or, indeed, for anything at all. Real estate brokers put ads in local newspapers because their customers expect them to do so, not because they actually help sell houses.</p>
<p>I&#8217;m sure there are exceptions to this rule, but if 80 percent of all houses for sale in the U.S. are eventually sold NOT because of any newspaper listing, tradition or professional pride aside, at some point we can expect real estate newspaper advertising to eventually disappear. </p></blockquote>
<p>The toothpaste is out of the tube.</p>
<p>The second reason is that in the online world, anyone can compete is the classifieds space. And of course, the competition is out in force, which is something the newspaper industry hasn&#8217;t had to deal with for a while. In the classifieds space, we are at a distinct disadvantage.</p>
<p>There is a lot of money here so there are lots of competitors. Most of them won&#8217;t have to carve out a signifant portion of their revenue to underwrite an unrelated news operation, and they will out-compete those that do. In a sense, &#8220;news&#8221; is a parasite on the classifieds revenue machine.</p>
<p>How much money does autotrader get to reinvest in their core competency, where cars.com has to send the money to its media corporation owers to subsidize their interactive divisions?</p>
<p>This imbalance is not sustainable over the long-term. </p>
<p><span style="font-weight:bold;">Don&#8217;t think web 2.0 / social networking / user generated content / multimedia will save us</span></p>
<p>It&#8217;s a failure on our part that we don&#8217;t already have all these things. But adding them won&#8217;t fundamentally change our conditions. We will get a few more page views from the extra content, but there will be no drastic change.</p>
<p>Why? Because digg and reddit and newsvine and delicous already exist. Youtube and hulu already exist. They are focused exclusively on the developing communities around user generated content. Can we successfully compete with them? Unlikely.</p>
<p>Most experienced users are starting to expect comments and tags and ratings on content sites. When we finally get them integrated into all of our sites, it&#8217;s not going to be revolutionary.</p>
<p>Just because it&#8217;s new to us doesn&#8217;t mean it&#8217;s new.</p>
<p><span style="font-weight:bold;">Learn how to make money on our content</span></p>
<p>Not our sites &#8212; our *content.* The stuff we create and own. You know: the news. However it gets delivered to users.</p>
<p>This is the crux of the problem. And I don&#8217;t think we know how to do it.</p>
<p>But let&#8217;s not fool ourselves &#8212; if we can&#8217;t make money on news reporting and journalistic endeavors *directly,* then none of this really matters.  If news operations can&#8217;t make money then it&#8217;ll eventually and officially become a non-profit or philanthropic activity, not a business.  The money will have to come from somewhere else. &#8220;Somewhere else,&#8221; if it comes to that, can be anything at all, or any combination of things. But if we can&#8217;t make money with news, then let&#8217;s not expect to, and go non-profit.</p>
<p>News will continue to get created either way, of course, but it would be good if we can answer this question sooner rather than later. Is news, by itself, a for-profit or non-profit activity? Let&#8217;s hope good journalism really *is* good business.</p>
<p>(Note that by &#8220;news operations&#8221; I don&#8217;t mean that editors and reporters will be selling the ads. News operations will have sales and marketing arms).</p>
<p>I know there are only a few ways to make money online: ads, sponsorships, subscriptions, e-commerce. It must be possible to find some combination of these revenue models that can pay for an office full of editors, designers, reporters and photographers.</p>
<p><span style="font-weight:bold;">We are going to be smaller</span></p>
<p>All that classifieds money is going away. All that wire content used to fill up the news hole is uneeded.  And the &#8220;news hole&#8221; is either gone or infinitely large, depending on how you look at it. There are no more printing presses. That means we are going to be much, much smaller. This will not be an easy transition to make.</p>
<p><span style="font-weight:bold;">What now?</span></p>
<p>This post focused mainly on what *not* to do, or what I think we&#8217;re doing wrong. But what are we supposed to actually *do*? I have ideas, but that&#8217;ll have to be the subject of another post,</p>
]]></content:encoded>
			<wfw:commentRss>http://www.mshiltonj.com/blog/2010/11/19/an-abrupt-and-drastic-change-is-needed/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
