Friday, October 24, 2008

More than one way to Replay

When we built RSS Replay we ran into an interesting problem. RSS
Replay uses JavaScript (AJAX) to request and place content onto web
page layouts. But JavaScript has a same-origin rule that restricts
access to remote content to only other items from the same website.
We got around this in Replay by building proxy server-side scripts
that load and cache RSS content from remote sources. It works very
well for our needs.

Well the clever folks over at nb.io figured out a way to use CSS
import commands to capture RSS content. Interestingly, they still
require a server-side script to break large feeds into multiple small
chunks.

I guess there is more than one way to skin a cat.
http://nb.io/hacks/csshttprequest/

Been out sick, but now I'm back

Emilia, Kim and I have all been a little under the weather for a few
weeks now. We've been passing some kind of cold thing between us.
Last week it finally landed on me hard. I had managed to find a fix a
few bugs in RSS Replay in the lab and I was just about to bundle it
up and send it out the door when I got smacked down. So now I'm back
up and code will begin to flow again. For those of you following
along at home (or waiting because it was your bug that I fixed) the
updates should be ready early next week (tuesday-ish).

Friday, October 17, 2008

Hi MAMA

MAMA (Metadata Analysis and Mining Application) is Opera's structural
search engine that reviewed over 3.5 million URLs (pages); whereas
normal search engines return results about the content of pages, MAMA
returns results about site structure, including what doctype the page
uses, whether it validates, what HTML elements and CSS properties it
uses, what plugins, what scriping constructs, and much more. This is
an invaluable tool for many individuals and companies involved in our
industry, and Opera wants to share it with everyone -- so I'm going
to help with a link. Here's their key findings

http://dev.opera.com/articles/view/mama-key-findings/

This is brilliantly useful information.

Tuesday, September 30, 2008

Alfonso Montesano passes away

I am sad to report that one of my very favorite cousins passed away
on Sunday.

He was the kind of guy that made you realize what living was all
about. Family and friends and cool adventuring like taking a cigar
boat from Naples to Capri. He will be very missed.

Tuesday, September 23, 2008

CS4 Sorta

Well aint that a kick in the pants. All the hype about Dreamweaver
CS4 being out today and it isn't even available for download. And if
you read the fine print it might not be ready until the middle of
November. I'm on the announcement list now and expect to get spam
from them when it is ready.

I hate hurry up and wait. And just cause Adobe throws a big party
doesn't make it a product roll-out. Half-baked grabs for hype around
vaporware doesn't make anyone think you've got your stuff together.

Update: I poked around a bit more on their website and apparently the
only products ready to go are Acrobat 9 and Lightroom 2. No
Photoshop, No Dreamweaver, No InDesign.

Thursday, September 11, 2008

Welcome Donovan Warren

I'd like to share the arrival of Donovan Warren at the home of Dale
and Nora Glaser. Congratulations and welcome to the club.

Friday, September 5, 2008

Tech Support Transition Update

Just an update to let you know how our transition to this new tech
support system is going. This morning I moved all outstanding tech
support issues from the old system to the shiny new system. That may
mean that you got an email telling you that your support issue has
been received and that you can login and check the status of your
issue. If you don't want to signup/login you can always send us an
email at support@rnsoft.zendesk.com or support@rnsoft.com. We'll be
working diligently to clear this backlog of support issues and will
get solutions out to you as quickly as we can.

Thanks for your patience as we make this change to serve you better.

Wednesday, September 3, 2008

Emilia in Pictures

So everyone can see what little Emilia is up to (and so I can fight the urge to post baby pictures to this blog) I've started a photo blog for Emilia. I'll be posting every day or two with new pictures I'll be taking on the fly (probably from my iPhone) and over the next few weeks I'll also be posting some older favorite pics so they're online as well. I hope everyone enjoys this.

New Tech Support System

OK, I admit it -- I've been very bad at staying on top of tech support. Sure, I've been out on paternity leave, but really things have gotten far more out of hand than I had hoped they would. But as of today I'm gettin this ship turned around with the help of Zendesk.

There are a lot of new features and tools that I hope will help folks find solutions to problems they're having with our products. The Forums add an entirely new level to the support system that should help highlight important and useful information. There's also a completely open user-driven forum called Tips & Tricks that will be whatever people want to make of it. I'm hoping this will give them the opportunity to exchange their own great ideas. Also, commenting is available on almost all Forum entries so they can add their perspective to any issue we're working on.

On the back end, there are a lot of useful new admin tools that should bring things to light quicker and allow us to be much more responsive than we have been in the past. It also has a great toolkit for mobile use so even while I'm on the road I'll be able to stay on top of things (yay iPhone).

I've got the basic system up and running at http://rnsoft.zendesk.com and I think it should work much better than the old system. I'm going to transfer the support archive to it today and then I'll monitor it closely over the next few weeks. Let me know what you think.

Tuesday, September 2, 2008

Broken Blog

Not sure how long the blog has been broken, but the display page on the RNSoft website was not displaying properly. Actually it was completely blank. I'm using a beta version of RSS Replay 2 (coming soon) to replay the content from my blog at whoisron.blogspot.com onto the page. Its really cool, but a bit too specific to the source -- and blogspot added something to the entry tag that tossed the thing for a loop. Of course, its beta software -- and that is exactly why I'm using it. Still, I wonder how long that page has been blank.

Welcome Katherine Mae

Congratulations are in order to my very dear friends Cyrus and Patty
Robl on the arrival of Katherine Mae. It's a good year for it.

Welcome to the world, Katherine Mae.

Back in the Big Chair -- At least for a few hours

OK, so I'm back at work today, for at least a few hours. The daycare
for Emilia hasn't started yet, but she seems to be settling down
enough that she doesn't need my constant attention. Also, a few hours
in the early morning will help too. I'm watching my time carefully
and if I can manage 4 hours -- even if broken up -- it will be a big
step forward.

My mother came for a visit last week and took care of Emilia for a
few days and it got me hungry to get back to work. I really was only
playing catch up with tech support (and I'm still doing that -- more
in a later post) and doing a little strategic planning for the next
round of updates, but I got some stuff done and that made me very happy.

Mom managed to get Emilia to play on her own for a while on the floor
and in front of the TV. She honestly never did that for me. She
always wanted me right there next to her and would fuss up a storm if
I was even just on the other side of the room. I guess Mom got her
through it and she seems quite content to watch Winnie the Pooh (for
20 minutes now anyhow).

Well lets see what I can get done...

Monday, July 21, 2008

My Brother has a Show at DC's Cap Fringe Fest

My brother Shawn has written another cool musical piece for Cap
Fringe this year.

This is what the Washington Post had to say: (by Celia Wren)
... Ramble over to the funny and whip-smart science-fiction fable
"Power House: The Super-Ozone-Friendly-Happy-Disco-Energy-Techno-
Dance-Along Show." Mounted at the Source, and featuring nightclub
music, flashing colored lights, psychedelic projections and a
hilarious parody of a documentary, Shawn Northrip's creation
(directed by Shirley Serotsky) conjures up a dystopian future. The
global energy crisis has been solved by harnessing the kinesis of
dancers. But the technology leads to abuse: Power plants where evil
supervisors, such as Gus Stapo (Joe Pindelski), force drugged-up
victims to keep jiving.

Get tickets at
http://www.capfringe.org/

Tuesday, July 15, 2008

Tuesday, July 8, 2008

JavaScript 2.0 in the Works

I just came across this document -- the description of the next version of JavaScript. Very geeky but very interesting -- it lays out the direction and new features of what's coming. I wonder how much of that will be implemented in upcoming versions of Dreamweaver?

Wednesday, July 2, 2008

Ich bin eine hausfrau

Kim goes back to work today and I will be taking care of Emilia for
the next 8 weeks.

I'm trying to work out how to be productive while I take care of her.
I can get some small things done while she sleeps, but timing and
duration of those naps are highly variable and unpredictable. At best
I'd get 90 minutes -- which really isn't enough to get into any solid
coding. I plan on taking the evenings after dinner and work until
midnight. I hope this will be the 3 to 4 hours stretch I'm looking for.

I suppose a benefit of working for my tiny little start-up is that I
can take the time I need and my boss is flexible about it (me :-). So
for the next 8 weeks I'm going to be a housewife. Maybe we'll watch a
little TV.

Tuesday, June 24, 2008

What Makes Good Tequila

If you love good food or drink you've got to read this:

http://www.friday.com/bbum/2008/06/19/what-is-good-tequila/

Dreamweaver CS4 Beta

Adobe has officially started the Dreamweaver CS4 beta program.


I expect to download and start trying out my extensions with the new version.

RSS Video from Common Craft

The guys at Common Craft also did a video about consuming RSS feeds.

http://www.youtube.com/watch?v=0klgLsSxGsU

They're perspective is one of blogging, but really anything can be an RSS feed. In fact, its the technology behind podcasting, photocasting, videocasting, documentcasting (note the use of the word cast). In any case, RSS is good for you.

Social Bookmarking Video from Common Craft

Here's a neat video explaining social bookmarking from Common Craft.


Now here's the thing that they don't talk about in the video -- those public bookmarks impact search engine rankings. So if you're a webmaster you want to make it as easy as possible for social users to add your pages to their bookmarks because that means your pages get moved up in Google. Social Bookmarking is a win-win -- good for web surfers and good for webmasters.

Sunday, June 15, 2008

Hilda Widgeon's Obituary

We're all very saddened at the loss of Grandma Widgeon. She was a
lovely lady. Incredibly clever and quick-witted. Loved to play bingo
or go gambling in Delaware. Here's the link to her obituary.

http://www.delmarvanow.com/apps/pbcs.dll/article?AID=2008806130314

Thursday, June 12, 2008

Hilda Widgeon dies

I regret to announce the passing of Hilda Widgeon, Kim's maternal
grandmother.Funeral service will be Monday. Naturally we're all very
sad.

Tuesday, June 10, 2008

SociaLink's First Award

5 Star Award from Sofotex

Problem: Multi-Domain Shopping Cart

How does one create a shopping cart system that crosses domains?

The basic problem looks like this: I want to create a shopping cart
system that will retain it's state across multiple websites that
don't have the same root domain. For example: www.rnsoft.com and www.rssdreamfeeder.com and www.rssreplay.com and www.socialink.us -- all different domains. They don't even share a common root, so a
cookie-based system couldn't be shared.

I've been pondering this problem for a while. I figured I'd ask the
assembled masses and see what ya'll think. I'll be writing more on
the solution I've been cooking up later (it involves a mix of
javascript, ajax and php), but I'd really like your feedback because
I'm not sure my crack-pot scheme will work.

Thanks everyone.

Friday, June 6, 2008

My Booth Babe

Check out my booth babe from the Spring Break conference in Athens OH.

Thursday, June 5, 2008

Update to SociaLink

I just updated SociaLink to v 1.0.1. If you have a copy you should
download this update. When I was demoing it as Spring Break I ran
into a small bug with the link manager. I also got feed back from
Adobe's exchange techs with another bug -- this time a javascript bug
with IE 6 on Win XP (doesn't happen on other versions of Win). Plus I
added a feature where it remembers where the support files are in
your website so you don't have to be prompted every time you place a
SociaLink on a page.

Anyhow, all of those things were fixed. Hope you enjoy the software.

Monday, June 2, 2008

JavaScript textContent vs innerText

OK JavaScript fans, this week's tip isn't so much a tip as a nod and link to the guys over at CoderLab. 

I was having problems last week with innerText -- the property of DOM nodes that capture the text without the HTML tags. And I was having this problem with Firefox and no other browsers. And that just didn't make sense to me. Sure, if it has been IE I'd have called it par for the course, but I just wasn't expecting it from Firefox.

Anywho, as it turns out, Firefox 1.5 uses the textContent property instead of innerText even though the DOM standard says innerText. Great move guys.

At any rate CoderLab wrote about this one back in April of 06, but I only just found a need for it this past week as I was finishing SociaLink. Here's the link to CoderLab:


SociaLink v 1.0 brings Web 2.0 Social Bookmarking to Dreamweaver MX, MX2004, 8, & CS3

I'd like to announce the immediate availability of SociaLink version 1.0, a Dreamweaver extension for placing Web 2.0 Social Bookmarking tools into webpage layouts.

Social Bookmarking websites like Digg or Del.icio.us allow readers to tag, store and share content that they find interesting — and if that is your content it can lead to a lot more traffic. And not just lots of clicks, but quality readers who are likely to get more from your site and give more in return.

All you need to do is give those readers a little button on your page for them to click on. You can make a link, right? Well actually its a little piece of javascript. A different javascript for each social bookmarking site. With different parameters for each one. Not to mention opening in a new window or not. And they take up a lot of room in your layout, too.

But it doesn't have to be that hard. SociaLink can add all that functionality to your web pages from the convenience of Dreamweaver without code or complications. Simply insert the SociaLink into your web page, select which of the social bookmarking sites you want to include, and how you want to present the buttons (lots of site buttons or behind a single icon).

SociaLink was designed with web designers and developers in mind. You can control the number of rows or columns of icons, the CSS styles formatting those icons, you can even control the HTML between each icon. Not to mention activation with clicks or rollovers, opening in new windows, and a slew of other settings that will let you fit SociaLink right into your website in every possible way. It even integrates with Dreamweaver's Templates!

And once your audience starts to use these social bookmarking tools you'll see you traffic go up. Readers from the social bookmarking sites will discover your content. Social bookmarks are also stored as public web pages which are searchable. That means more pages with links to your content, so you'll also see your rankings in the search engines improve (and that's good for SEO!).

Get your copy of SociaLink now and make the power of Web 2.0 Social Bookmarking work for you!

http://www.rnsoft.com/en/products/socialink

SociaLink makes it simple to add Web 2.0 Social Bookmarks to Dreamweaver-based web layouts. RNSoft, developer of the award-winning RSS DreamFeeder & RSS Replay, creates software with a focus on simplicity and usability for computer users, web developers and programmers

Saturday, May 31, 2008

SociaLink at Last

We quietly posted SociaLink -- a social bookmarking extension for Dreamweaver -- on the website last night. This continues our Web 2.0 theme in our extensions for Dreamweaver. We've got RSS ReplayRSS DreamFeeder, and now SociaLink

I've got lots to say about SociaLink, but that will begin on Monday with Press Releases and so forth. Its just nice to finally get it onto the website. Honestly, there's lots of new products in the pipeline and the next 6 months will see updates and intros probably on the order of 1 a month. There's also a new website and new tech support system cooking in there somewhere.

Anyhow I just wanted to post a quick note saying Hello SociaLink. I hope you use and enjoy the software.

Tuesday, May 27, 2008

No Coding Tip This Week

Hello Readers

Thanks for reading the blog. Sorry to say that I'm not posting a
coding tip this week. Its new product season and we're trying to get
a new product out before the end of this week. Kinda important
because I'm giving a talk about it at the Spring Break conference
next week. So I'm coding like mad this week (and writing
documentation and building new web pages and updating the ecommerce
system and the serial number generation system). I'll bring more
tasty code chunks next week.

Also, 3 weeks into new product Emilia -- all reviews are positive. :-)

Look at the pretty baby!

Monday, May 19, 2008

Showing Attributes with For Each

So I have been working further with my development frameset and adding attributes to the object that I am building to control social bookmarking on a web page. There are over 24 different attributes and I may have to add more. I'd like to see what they all are when I run a test and I'd like the flexibility to see any new ones I add without having to add new code to the testbed.

As it turns out, its not actually that hard to do with current JavaScript (though early versions of JavaScript didn't support this).

I have added a DIV block to the page called "showattrs" and that's where I'm going to drop the output of this little script.
<div id="showattrs"></div>

Then I've written a simple function that accepts an object as its parameter and uses the for each loop to go through the elements within the object.

function showattrs(theObject) {
var out="<pre>"
for (var attr in theObject) {
out+=attr+":"+ theObject[attr]+"\n"
}
out+="</pre>"

var block = document.getElementById("showattrs")
block.innerHTML=out
}

This works with objects or associative arrays -- which are essentially the same thing in JavaScript. Now I just call this function after I make my changes and update my display.
showattrs(sclSociaLink)

I added the pre tag to it to make the text monospaced just because its my preference for codey stuff.

Now, I know its called a for each loop, but the word "each" doesn't actually show up when coding this (it does in some other languages). The line
for (var attr in theObject)
can be read as
for each attr in theObject
I think its important to be able to read code in english. It helps to clarify thinking and makes debugging much easier. By the way, if you don't already know, var is just for making the variable attr a local variable.

So this will show all the attributes and in some browsers it will also show the code to any methods you have defined for your object. In all browsers it shows them in order of definition. So as a rule I define my methods after my attributes. This makes sure that I will see the attributes first, and then the methods.

Also, this is a cool spelling error capture. How often have you typed object.attrivute instead of object.attribute. It just happens. Well if you have done this you will now notice that attrivute is within the list. I just copy it (copy so I don't mistype again) and the do a global search on my code to find where I made my mistake.

Happy coding.

Monday, May 12, 2008

Spring Break Session: How to Make Social Bookmarking Work for Your Website

Here's some more information about the session I am giving on June 3 at the Spring Break Conference in Ohio.

Session Title:
How to Make Social Bookmarking Work for Your Website

Session Description:
Social Bookmarking is a useful tool for getting the right kind of traffic to your website. Web users can share links pointing to your pages along with descriptions and evaluations of the content. It's that meta-information that helps drive people interested in your content to your pages. And the extra links are great for SEO (search engine optimization). In this session we will discuss these advantages and more along with a review of tools (from code to push-button simple) to help you get the job done.

Development Frameset

So I've been working on a JavaScript tool that will control the linking and display of an element on a web page. The content will be generated by the script and will naturally be dependent on parameters passed and properties of objects. And just like any script its got to be tested in lots of web browsers.

Eventually I'll be using document.write to place the content onto the page, but while developing the page I change the innerHTML of a div within the page. That also means that when I change the settings I can regenerate the block and see if everything is working. Now some people might ask why not just stick with innerHTML instead of document.write, but this approach will allow me to have no impact on the layout if JavaScript is disabled and to have multiple of these elements within a page if needed. Some coders might think document.write is antiquated, but I believe in using the right tool for the job, even if they are a little well-worn.

<div id="show"></div>

var block = document.getElementById("show")
block.innerHTML=generatedElements

Now as I am working on this I want to be able to change the attributes of the object that controls the display. One easy way to do this is to add controls. I could add them to the same document, but then my test document becomes less reflective of the documents that will hold the code in the end. Also, my test document has to meet some requirements -- for example, it has to be a template-based document -- and I didn't want to mess that up.

So what I did was make a frameset with controls on the left frame and my test document on the right. Now I can enter exactly the parameters that I want to test and see the results immediately.
What makes this a little slicker is that I named each form element that controls an attribute "atr_XXXX" where "XXXX" is the name of the attribute to be modified within the object. Now I simply cycle through the form's elements and modify the object's attribute with that name (I use eval to make is simpler). And because its in another frame I have to poke at it with parent.rightFrame. I think it works really well.



function Update() {
if (parent) {
var l=document.theform.elements.length
for (var i=0; i<l; i++) {
if (document.theform.elements[i].name) {
if (document.theform.elements[i].name.substring(0,4)=="atr_") {
var out='parent.rightFrame.sclSociaLink.'
out+=document.theform.elements[i].name.substring(4,
document.theform.elements[i].name.length)
out+="="+document.theform.elements[i].value
eval(out)
}
}
}
parent.rightFrame.showTestbed()
}
}




Sunday, May 11, 2008

RSS DreamFeeder in use at Lawrence Livermore National Lab

So how cool is this -- it makes me miss my Naval Research Lab days.

I spent a few hours this week helping Bob Hirschfeld, Sr. Public Information Officer at LLNL Public Affairs. The main website at Los Alamos has a really nice set of RSS tools that are database driven. Bob was excited by that, but had a static website at Lawrence Livermore so he couldn't make that work for his site. That's exactly why he needed RSS DreamFeeder.

He configured RSS DreamFeeder himself, using his template and the Content Sampler tool and managed to get the feed working with a minimum of fuss. Simply selecting the text he wanted and sampling it. He had a bit of a problem processing the feed, but with a quick tweak and some direction (and his reading my article on webreference) everything was up and running in no time.

Its a good feeling to help folks make their website better with a tool that I made. 

Check out his feed here



Wednesday, May 7, 2008

Speaking at Spring Break Conference at Ohio University on Tuesday June 3

Dave Hannum and I spoke yesterday and I'm putting together an outline for a talk on Social Bookmarking. This will be my second year speaking at this conference.

Take a look at http://www.sbconference.com/2008/ for more information. I'll also put up some information about the talk here as well. Hope to see you there.

spring <br/> conference 2008
Tuesday June 3 2008 at
Ohio University in Athens, OH

Thursday, May 1, 2008

Welcome Emilia Katherine

At 12:41 pm on Thursday May 1 a beautiful little new person entered my
life.

Monday, April 28, 2008

HTML Comments and JavaScript

So lets say that you want to get at the comments within an HTML document. Why, you ask, would that be useful? Well for several reasons. Perhaps you have settings, variables, or other things within comments that you would want to gather for processing. Perhaps you have trained your website maintenance staff to put identification information (like the day the page was last updated) within comments.

But if you're a Dreamweaver user comments can contain things like where the start and end of template regions are. That's no small thing, so I want to say it again. Web pages built based on Dreamweaver templates will have little HTML comments in them that identify where the beginning and end of an editable region is -- like this:
<!-- InstanceBeginEditable name="PageContent" -->
<!-- InstanceEndEditable -->

These are just comments, just like any other comment. They don't impact that layout or rendering of the page in the web browser. They're just there to provide a little meta information.

Now lets say that you want to grab the headline of a page -- but it could be styled any number of ways. If the page is based on Dreamweaver templates one approach could be to grab the relevant editable region.

If you read the DOM documentation you'll discover that there are node types called comments. So you might think that you could follow the DOM tree and look for nodes with the right type.
node.type== Node.COMMENT_NODE

The problem is that support for this is spotty even in the best browsers. For the most part, it looks like comments are simply removed from the page before it is processed. You can see that there are no comments within the document's html code -- check your favorite browser.
document.body.outerHTML

Before we can even being to figure out how to read the comments, we have to find them. As it turns out you can do it by using document.documentElement. The complete pre-processed html for the page, including comments, can be found by looking at
document.documentElement.outerHTML

Now all you have to do is match the comment using a regular expression or a couple of indexOf statements. Whichever method you prefer or understand better. *
exp="<"+"!"+"--"+"([\\s\\S]+?)"+"--"+">"
rexComment=new RegExp(exp)

Moreover, the really big win is that you can identify data based on its placement within a template. That's really important. Templates are built to control the display of content within a website to make the pages consistent -- sure. But they allow flexibility so editors can change only the parts of the page that are relevant to theri work -- headlines and bylines and stories. So naturally, if we're interested in the parts of the page that are about the content, then we'll be interested in the stuff that's in the template regions.

This really expanded my way of thinking about templates. They're not just about pretty -- they're about data structure.

* A Note on "exp="
You'll notice that I broke the expression apart into pieces -- that's to avoid any browsers biting on the comment tag if it were all together as one piece. This
exp="<!--([\\s\\S]+)?-->"
is the same as this
exp="<"+"!"+"--"+"([\\s\\S]+?)"+"--"+">"

The Transition is On

OK, so after some pretty extensive discussions and testing I have made a decision not to host my own blog. The blog accounted for some of the largest amounts of traffic while I was regularly updating it. I plan to move the old blog entries -- at least the ones that are relevant to our ongoing discussion -- into the new blog. This will probably take some time and will have to wait until I complete my active development work.

I'm using Blogger now. I decided on that mostly because it integrates with Gmail, which I use for my personal email, and I can post via email from my iPhone on the road. This should make it easy for me to keep content flowing while keeping the tools required to a very minimal and highly portable set. 

And honestly, I like posting from my email -- even from my desktop. I guess I just grew up with email. It is just part of the way that I work and think. I feel pretty comfortable composing my thoughts and sending them off to the world. Emailing is already part of my workflow -- and takes much less effort that launching Dreamweaver and tossing off a page (yes, even with templates). 

I liked my old blogging method because it was a showcase for what you could do with RSS DreamFeeder. Both RSS and Atom feeds were generated from the pages I built in Dreamweaver. I am also a very firm believer in eating your own dog food -- that is, using the tools you build and sell to others for your own work as well. I often find some of the worst bugs myself while I'm using it. And I curse about it just as much as any customer might and perhaps even more so.

So making this switch was a tough choice, but the advantages of posting more will more than offset the drawback of using tools that are not of my own making (and selling). Though it will interest some of you to know that I am using RSS Replay (actually an early beta of version 2) to display this blog on the blog page at RNSoft.

On a programming note: I am going to be posting more of a mix of personal and business stuff here from now on. I tried two blogs and it just doesn't work for me. Many of the folks who read my blog are interested in both topics. And if you're not, well feel free to skip the personal stuff at any point. There are categories listed on this blog's main page (at the bottom-right) and if you click the category you'll see only content related to that topic. You can also subscribe to the category from that page.

Friday, January 4, 2008