Posts tagged 'blogging'



Cafe Cyclo is history

Wall lights at Cafe Cyclo I meant to blog it last week, but I forgot. When I arrived at Cafe Cyclo last week for the bloggers meet-up I found Josh and Sam standing under the awning taking shelter from the rain. The outside tables were gone and peering through the dark windows, I saw that everything was gone. Wow. Sad to lose such a unique place (unique for Raleigh, that is). I'm not sure what happened. Maybe the Raleighing folks have a clue.

So now we need a new meeting place. Josh and I think Helios is probably the best choice. Any other ideas, Raleigh bloggers? Ideally we'd like a relatively quiet place with good coffee, beer, food and free WIFI.


Latest links: rules for blogging edition

Lots of reading material on rules or lack of rules for blogging today.

First, some posts about Tim Bray's use of the F-word in a blog about Sun's new Project Blackbox. My take on the F-word? It's good and I use it, but I haven't had the guts or the reason to use it on my blog (although I have posted quotes that include the word). I'm with Scoble on this one: when somebody like Tim says something is F-ing cool, then I sit up and take notice.

Sun VP Dave Douglas' point about corporate vs. personal blogs seems valid, but as Douglas points out, it's not clear whether Tim's blog personal or corporate. Tim's posts are included on the front page of blogs.sun.com through the magic of aggregation (actually, only the first sentence or two). Do we need to add a bad language filter to the aggregator? Should Tim and other externally hosted Sun bloggers provide a safe-for-Sun feed for our aggregator that includes only polished professional posts?

And second, some links from Raleigh News and Observer's Sunday feature on blogging, which included articles by Triangle blogging mavens Ruby Sinreich and Anton Zuiker:


New Atom draft plus new IE7 beta


Atom protocol draft 9 is out, but that's OK -- the last thing I did on RSS and Atom in Action was to update the Atom chapter in anticipation of draft 9. By the way, I just released Blogapps 1.0, the examples for the book, which includes a draft 9 client and server implementations. Try it out. Test it against Abdera. Make me release Blogapps 1.0.1 to fix the interop problems that you find. I dare you.

And IE7 beta 3 is out today too. I'll have to check it out when I get back to the USA next week. That might lead to Blogapps 1.0.2, 'cause I bet they've gone and changed the Feeds API again. So it goes.

Raleigh bloggers meetup tonight at Cafe Cyclo

Triangle Citysearch: Rust-colored walls, wooden chairs and a colorful row of mounted lights give Cafe Cyclo a cozy atmosphere, perfect for quiet conversations. By day, expect a quiet lunch spot. By night, expect a jazzy social scene with understated energy and lots of charm. The menu is as loaded with drink concoctions as it is with munchies. This is the perfect place for a light meal; the Asian-influenced dishes range from Vietnamese spring rolls to seared tuna.
That's us: jazzy and social with understated energy. Come on down. Josh has the details.

Four years blogging

I'm a week late with this post. My first post was April 11, 2002 (also here) but the 17th is the date I remember because that's the day that the Roller article was published at OnJava.com. I started blogging with Userland Radio and moved to Roller in June of 2002 right around the time Leo was born. Ah, the memories...

Surprise visitor at the meet-up

Congressman Brad Miller (house.gov/bradmiller) and his campaign manager PJ Puryear showed up at Cafe Cyclo tonight for the Raleigh blog meet-up to learn more about blogging and connect with fellow bloggers. How cool is that! I don't think he expected to run into a bunch of geeky tech bloggers, but despite that we had a great time talking blog search and RSS and politics (apparently, everybody present was a democrat). And, I made sure to get in a word or two about the evils of DRM and the broadcast flag. Check out Josh's and Bill's blogs for more about the evening.

Also... I almost forgot to mention that I got to take a behind the scenes look at the IBM  DeveloperWorks Roller implementation. Bill logged in and showed me around. They're still on Roller 2.0, so they don't have comment management/moderation, but they do have tagging and they've made a couple of small layout changes to the editor/admin UI.

PodcasterCon 2006: thanks!



podcastercon logo

I'm a little late blogging this, but PodcasterCon 2006 was great (and I'm not even a podcaster). Brian Russell did a great job of putting together a totally uncommercial unconference and I thoroughly enjoyed the three sessions I attended on advanced podcasting, podcasting as a teaching/learning strategy and hacking RSS.

My favorite session was definitely podcasting as a teaching/learning strategy, where session leader David Warlick got the whole room involved in collaborating via wiki and podcast tools to build a detailed outline of the problem space.

Scott Johnson, formerly of Feedster, lead the hacking RSS session, which turned out to be only a dozen people and focused on feed advertising and metrics. Scott wouldn't say a thing about his new venture (Ookles?).

Later, I went to dinner at Carolina Brewery with a big crowd of mostly out-of-town folks from the conference. Here the list (lifted from Ryan's entry): Greg Cangialosi (The Trend Junkie), Josh Staiger (joshstaiger.org), Derrick Oien (Intercasting Corp, Rabble), Dave Chekan (Libsyn), The other Dave (Libsyn), Hoopes (Libsyn), Chris MacDonald (indiefeed), Rob Greenlee (Melodeo, Mobilcast) and Will Raymond (Concerned Citizen). And after dinner, at Fuse, I met Greg Gallant and Aaron Quint, the guys behind Venture Voice.

I've got a brain full of new knowledge and a folder full of new podcast subscriptions, so thanks again Brian.

Raleighing

Cool. A blog about Raleigh. Via Wade Minter


Raleigh Blog Meetup: Tuesday June 19, 2005

I don't see the notice on Josh's site, so I'll post it here: Join us tomorrow (Tuesday, July 19) for the fortnightly Raleigh/Cary Bloggers meetup.

What: An open meeting to talk about blogging, podcasting & whatever's on your mind
When: Tues @ 6:30 p.m.
Where: Cafe Cyclo, in Cameron Village

2020 Cameron St
Raleigh, NC 27605 (map)
(919) 829-3773

Who: Bloggers & people who want to blog (Podcasters welcome!)

Hope to see you there!



The talk went well

My second JavaOne was a great experience, but it was a little stressful because up until last night I couldn't find any of my co-speakers. I spent most of Wednesday preparing to give the whole talk by myself, but luckily for me (and the attendees), Pat and Kevin showed up just in time. Unfortunately, Pat showed up with some very bad news for us at Sun: he's leaving to work at Google.

In the end, I think the talk went pretty well. Kevin did most of Pat and my slides on syndication because we had split the talk 50-50 when we couldn't locate Pat on Wednesday night (and assumed he was still in Paris). He did a good job with the material and added in some interesting points from his experience at Rojo.com where they parse millions of feeds per hour with the Java-based Apache Commons (sandbox) FeedParser.

We were a little disappointed with the turnout. I'd be surprised if the 700+ seat Yerba Buena theater was more than 30% full. The fact that were in a lunchtime timeslot on the last day of the show certainly didn't help. Anyhow, I'm relieved that it's over and ready for a nice long week off.


NC Museum of Art is blogging too

NCMOA has a blog, powered by Movable Type.


Triangle blogger con 2005 links

Bruce has a great list of links about the Triangle Blogger conference. The first weekly Triangle blogger meet-up is tonight at Caffe Driade in Chapel Hill (Anton Zuiker has the details).


Rome + Texen = Planet Roller

After a couple days of hacking with the Rome Fetcher and Velocity Texen, Planet Roller is born.

Planet Roller is currently a command-line line tool that reads a configuration file of newsfeed subscription data, then generates an aggegated weblog with an RSS feed, and an OPML listing of all subscriptions. It's essentially a Java version of Planet Planet. I've got it set up to run every 30 mintues. Yes, I'm aware that the RSS gets a warning on validation. No, I haven't added newsfeed autodiscovery yet. Yes, I stole David Edmondson's Planet Sun theme.  No, I haven't done any testing on the OPML. Enough questions already! I need to get back to work.

I'll be adding a couple more details to this post as the night progresses.

OK, I'm back. Did I mention that Planet Roller is a community aggregator, a "A Community Aggregator is a portal-like web application that displays weblog posts from a group of closely related but separately hosted weblogs and provides synthetic newsfeeds so that readers may subscribe to the group as a whole."

Configuring Planet Roller

Currently, Planet Roller is just a simple command-line tool that is designed to run as a scheduled task. It reads a list of newsfeed subscriptions from an XML file, as shown below. Eventually, there will also be a UI for Planet Roller so that you don't have to shell into to a server and edit an XML file to add and delete subscriptions.

<planet-config>
   <main-page>control.vm</main-page>
   <admin-name>Dave Johnson</admin-name>
   <admin-email>dave.johnson@rollerweblogger.org</admin-email>
   <site-url>http://rollerweblogger.org/planet</site-url>
   <output-dir>/nfs/ank/home1/r/roller/public_html/planet</output-dir>
   <template-dir>/nfs/ank/home1/r/roller/planet-roller/templates</template-dir>
   <cache-dir>/nfs/ank/home1/r/roller/planet-roller/cache</cache-dir>
   <subscription id="dave">
      
      <feed-url>http://rollerweblogger.org/rss/roller</feed-url>
      <site-url>http://rollerweblogger.org/page/roller</site-url>
   </subscription>
   <subscription id="lance">
      
      <feed-url>http://www.brainopolis.com/roller/rss/lance</feed-url>
      <site-url>http://www.brainopolis.com/roller/page/lance</site-url>
   </subscription>
   <subscription id="matt">
      
      <feed-url>http://raibledesigns.com/rss/rd</feed-url>
      <site-url>http://raibledesigns.com/page/rd</site-url>
   </subscription>
   <subscription id="anil">
      
      <feed-url>http://www.busybuddha.org/blog/rss/anil</feed-url>
      <site-url>http://www.busybuddha.org/blog/page/anil</site-url>
   </subscription>
   <subscription id="henri">
      
      <feed-url>http://blog.generationjava.com/roller/rss/bayard</feed-url>
      <site-url>http://blog.generationjava.com/roller/page/bayard</site-url>
   </subscription>
   <subscription id="pat">
      
      <feed-url>http://blogs.sun.com/roller/rss/pat</feed-url>
      <site-url>http://blogs.sun.com/roller/page/pat</site-url>
   </subscription>
   <group handle="roller">
      
      <description>Other folks who are blogging Roller</description>
      <max-page-entries>30</max-page-entries>
      <max-feed-entries>30</max-feed-entries>
      <subscription-ref refid="dave">
      <subscription-ref refid="lance">
      <subscription-ref refid="pat">
      <subscription-ref refid="matt">
      <subscription-ref refid="anil">
      <subscription-ref refid="henri">
   </subscription-ref>
   <group handle="trijug">
      
      <description>Triangle Java User Group Bloggers</description>
      <max-page-entries>40</max-page-entries>
      <max-feed-entries>40</max-feed-entries>
      <subscription-ref refid="dave">
   </subscription-ref>
</group>

The configuration file contains three types of information: 1) configuration information for the planet site itself, 2) newsfeed subscriptions, and 3) groups. Groups allow a single Planet Roller site to host differernt aggregations. In the above configuration file, I've defined two groups "Planet Roller" and "Planet TriJUG". Note that one subscription can appear in more than one group.

Customizing Planet Roller File Generation

The command-line version of Planet Roller uses the Texen feature of Velocity to generate whatever files you want in your Planet Roller site. I included templates for HTML, RSS, and OPML, but you can tweak these and/or add whatever you want.

You tell Planet Roller which templates to use by specifying a Texen control template in the element of the config file. Specify the templates directory in the element. The control template does not generate anything itself. It controls the file generation process and it determines which files are generated and which template is used for each. Here is Planet Roller's current control template:

#set ($groupHandles = $planet.groupHandles)
#foreach ($groupHandle in $groupHandles)
    #set ($outputFile = $strings.concat([$groupHandle, &quot;.html&quot;]))
    $generator.parse(&quot;html.vm&quot;, $outputFile, &quot;groupHandle&quot;, $groupHandle)
    #set ($outputFile = $strings.concat([$groupHandle, &quot;.rss&quot;]))
    $generator.parse(&quot;rss.vm&quot;,  $outputFile, &quot;groupHandle&quot;, $groupHandle)
    #set ($outputFile = $strings.concat([$groupHandle, &quot;.opml&quot;]))
    $generator.parse(&quot;opml.vm&quot;, $outputFile, &quot;groupHandle&quot;, $groupHandle)
#end

The control template loops through the groups defined in the config file and for each, generates an HTML file using the html.vm template, an RSS file using the rss.vm template, and an OPML file using the opml.vm template. You can provide your own control template, or just hack the one that comes with Planet Roller.

Based on the above configuration data and control template, when Planet Roller runs, you'll end up with six files:

Let's look at the RSS template, so you can get a feel for how the templates work.


<rss xmlns:dc="http://purl.org/dc/elements/1.1/" version="2.0">
<channel>
  #set($group = $planet.getGroup($groupHandle))
  
  $planet.configuration.url/${group.handle}.html
  <description>$utilities.textToHTML($group.description,true)</description>
  <lastbuilddate>$utilities.formatRfc822Date($date)</lastbuilddate>
  <generator>Roller Planet 1.1-dev</generator>
  #set($entries = $planet.getAggregation($group, 30))
  #foreach( $entry in $entries )
  <item>
    
    <description>$utilities.textToHTML($entry.content,true)</description>
    <category>$utilities.textToHTML($entry.category,true)</category>
    $entry.permalink
    <pubdate>$utilities.formatRfc822Date($entry.published)</pubdate>
    #if($entry.author)<dc:creator>$utilities.textToHTML($entry.author,true)</dc:creator>#end
  </item>
  #end
</channel>
</rss>

And here is the OPML template:


#set($group = $planet.getGroup($groupHandle))
<opml version="1.1">

   
   <datecreated>$utilities.formatRfc822Date($date)</datecreated>
   <datemodified>$utilities.formatRfc822Date($date)</datemodified>
   <ownername>$planet.config.adminName</ownername>
   <owneremail>$planet.config.adminEmail</owneremail>

#foreach($sub in $group.subscriptions)
   <outline htmlurl="$utilities.textToHTML($sub.siteUrl)" xmlurl="$utilities.textToHTML($sub.feedUrl)" text="$utilities.textToHTML($sub.title)">
#end
</outline>

Within a template, you have access to the configuration through the $planet object, plus there are a couple of other objects that you'll find helpful in generating files. Here are the objects that are available in a template:

  • groupHandle: a string that contains the "handle" of the current group, which you can use to get the group object from the planet.
  • planet: the planet object allows you to access groups via $planet.getGroup($groupHandle) and aggregations for groups via $planet.getAggregation($group, N) where N is the max number of entries to be returned.
  • planet.configuration: this object contains configuration information, such as
  • date: current date
  • utilities: text-to-HTML, data formatting, and other utilities

Running Planet Roller

You can run Planet Roller from a simple script, like the one below:

#!/bin/bash
_CP=.:./lib/planet-roller-1.1-dev.jar
_CP=${_CP}:./lib/rollerbeans.jar
_CP=${_CP}:./lib/commons-logging.jar
_CP=${_CP}:./lib/jaxen-full.jar
_CP=${_CP}:./lib/jdom.jar
_CP=${_CP}:./lib/dom4j-1.4.jar
_CP=${_CP}:./lib/rome-0.5.jar
_CP=${_CP}:./lib/rome-fetcher-0.5.jar
_CP=${_CP}:./lib/velocity-1.4.jar
_CP=${_CP}:./lib/velocity-dep-1.4.jar
java -classpath ${_CP} org.roller.tools.planet.PlanetTool $1 

If you want Planet Roller to run on a schedule, schedule it. For example, on UNIX you can use cron. I use the following cron task to run Planet Roller on the 6th and 36th minute of every hour:

   6,36 * * * * (cd ~roller/planet-roller; ./planet-roller.sh)

Planet Roller uses the Rome Fetcher library to retrieve, parse, and cache newsfeed data to disk. Fetcher uses HTTP Conditional Get and Etags to ensure that feeds are only downloaded when truly updated.

That's enough for now. Tomorrow, I'll tell you about Planet Roller internals. </template-dir></main-page></subscription-ref></subscription-ref></subscription-ref></subscription-ref></subscription-ref></planet-config>


What belongs on a corporate-sponsored blog?

There is a interesting discussion of what should be allowed on a Java.Net weblog in the comments of Richard Monson-Haefel's post 9 of Clubs Seeks a new Deck of Cards. Richard needs a job and is using his weblog to do a little self-promotion/marketing, but his weblog is hosted on Sun's Java.Net site which suppoosedly restricts marketing. Java.Net's managing editor Daniel Steinberg raised this issue, mainly as a discussion point, and thankfully the consensus seems to be in favor of allowing Richard's post and others like it.

Last year, I criticized what I saw as forced corporate blogging on Java.Net, but the open spirit on the Java.Net weblogs, Sun's progressive new Policy on Public Discourse, and the Sun employee blogs at blogs.sun.com, show that Sun trusts it's employees to communicate publicly and directly with each other, with Java developers, and with customers. As a long-time Java developer and small-time Sun shareholder, I see this as a very good thing.


Daddy, can I have a weblog?

Last weekend, my 7 year old son Alex, without any prompting from me - I swear, asked for his own weblog. Just about every day since, he has taken a little time after finishing his homework to do some blogging. He is not able to type very quickly, but he hunts down the keys he needs and gives each a solid tap. He can't spell all that well, but he is not afraid to spell things out phonetically. Luckily for him, his entries are so short that there is no need for formatting, but soon I imagine I'll have to set up a WYSIWYG editor for him or teach him some rudimentary HTML.

Andi and I have decided not to edit Alex's posts or correct his spelling and grammar errors. We want to be able to look back on his progress as a writer. We do sometimes add some notes in parentheses when his spelling is too hard to read. If you have read this far without hitting the back-button, then perhaps you are wondering just where Alex's weblog is. I keep it on a somewhat obscure server and to keep that server obscure, I'm not going to give you a link. Instead, I'm going to publish Alex's historic first week of weblog posts right here on my weblog. Enjoy!

Sunday - Locker dockers. Today I and my famliy went to mil brook hiy school. when we got home daddy lock us outside. flinliy we got in our home.I will see you soon today.

Saturday - duster busters. Today I got dust in my eyes in a tree. We watch a move (movie) of scooey-doo (scooby-doo). It is a good move.

Friday - too snowy. Today it is snowing 3 inchis high! We had a snowball fight. We made a fort. today linus has a weblog. Cats have a talie. Cats are diffrent colors. Luna is black and white. Cats have reytrackl clas (retractable claws).

Thursday - snowing. It is snowing outside! linus lovs the snow. I do too. How bowt you. Daddy said tomrrow we will have a snowball fight.

Tuesday - school. At school I had an ansebly (assemby) Linus got a reading t-shrit. Tonight Linus went to school to sing songs to their parints. I did not go.

Monday - school. Today I went to school. I made a clock that was coloerfull. It is filled up. I can not put one more coloer in it. then I got home. I cilmed a tree and made a amrgsc esit (emergency exit) if eneything hopons. last I did my homework. My homework for today was pick a book you have read. Then make a parugraph. I pick a book you have read. then make a pargragh. I picked the seakrits of droon (Secrets of Droon). Eric looks like harry potter in the move. My dad leat us see some of it. He is reading it too.

Sunday - My first weblog post. Today is my first day writing on a weblog. Today I went to my grandmother and grandpa's house. I got ice cream in the country. On the way home we played racer. How we play is if we pass cars we get points. Today we got 50 points.

I love it, but first, let me say that 1) I only locked Alex and Linus outside for a very short time and 2) the fact that we scored 50 points playing "racer" on the drive home from the country does not mean that I exceeded the speed limit at anytime. As you can probably tell, I'm a proud Daddy - a proud Daddy who will be reading his son's weblog very carefully.


Bliki, Wiki, Chiki, Reeky?

Russell has put a weblog front end on this SimpleWeb Wiki software. SimpleWeb is the software that runs Russell's SimpleFace user interface design and usability website. I think every Wiki should have a weblog like front-end, it draws you in and helps to build the community spirit of the site. But, should every weblog have an integrated Wiki? That is a different question. I did a little googling and found that people have been discussing the weblog-wiki intersection for some time now.
  • John Udell writes "the model according to which Wikis federate is something that the blogging community could profitably study. Peter Thoeny explained it all to me once. Now I want to look into all that again."
  • Bill Seitz writes "another approach would be to make a separate Wiki node for each nugget, and the WebLog would really be the RecentChanges page..." and he indicates that he has been disucssing wikis and weblogs since September 1999.
  • The Wiki Weblogs page on Abbe Normal's site has a collection of Wiki Weblog links, I just added SimpleWeb.
  • 0xDECAFBAD discusses "an interesting melding of weblog and wiki over at www.tesugen.com.
  • Mockerybird writes "the marriage of <a href="http://mockerybird.com/index.cgi?node=wiki&ref=wiki-weblog&t=hl" class="nodelink">wiki and <a href="http://mockerybird.com/index.cgi?node=weblog&ref=wiki-weblog&t=hl" class="nodelink">weblog. In my opinion, the next logical step in weblog evolution. It allows the weblog to become even more interconnected and relevant over time."
I don't agree with Russell's point that blog enties just disappear when they roll off the page. The couple blog entries in the list above are proof that entries live a long life. Google, good site search, and full-screen calendars keep those old posts alive.

Seems to me that integrating a Wiki into Roller would be pretty easy.  All Roller would need are some nice macros for displaying and linking to the Wiki pages. Am I missing something here?  Is there more to it than that?  More importantly, would it be feature bloat or useful stuff?

« Previous page | Main