Dave Johnson on open web technologies, social software and software development
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.
Dave Johnson in Blogging
06:34PM Oct 24, 2006
Comments [1]
Tags:
blogging
triangle
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:
Dave Johnson in Links
08:22AM Oct 23, 2006
Comments [0]
Tags:
blogging
sun
triangle
Dave Johnson in General
12:01PM Aug 01, 2006
Comments [2]
Tags:
blogging
triangle
Dave Johnson in Blogging
10:39AM Jun 29, 2006
Comments [3]
Tags:
blogging
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.
Dave Johnson in Blogging
09:38AM Apr 18, 2006
Comments [0]
Tags:
blogging
triangle
Dave Johnson in Blogging
07:44PM Apr 17, 2006
Comments [1]
Tags:
blogging
family
Dave Johnson in Blogging
06:46PM Mar 21, 2006
Comments [0]
Tags:
blogging
triangle
Dave Johnson in Blogging
11:07AM Jan 09, 2006
Comments [2]
Tags:
blogging
Cool. A blog about Raleigh. Via Wade Minter
Dave Johnson in General
10:36AM Sep 23, 2005
Comments [0]
Tags:
blogging
triangle
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!
Dave Johnson in Blogging
01:28PM Jul 18, 2005
Comments [2]
Tags:
blogging
triangle
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.
Dave Johnson in Java
07:15PM Jun 30, 2005
Comments [0]
Tags:
atom
blogging
conferences
java
javaone
rss
NCMOA has a blog, powered by Movable Type.
Dave Johnson in Blogging
05:54PM May 03, 2005
Comments [0]
Tags:
blogging
triangle
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).
Dave Johnson in Blogging
03:58AM Feb 16, 2005
Comments [0]
Tags:
blogging
conferences
triangle
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, ".html"])) $generator.parse("html.vm", $outputFile, "groupHandle", $groupHandle) #set ($outputFile = $strings.concat([$groupHandle, ".rss"])) $generator.parse("rss.vm", $outputFile, "groupHandle", $groupHandle) #set ($outputFile = $strings.concat([$groupHandle, ".opml"])) $generator.parse("opml.vm", $outputFile, "groupHandle", $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:
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>
Dave Johnson in Blogging
02:31PM Feb 13, 2005
Comments [2]
Tags:
blogging
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.
Dave Johnson in General
05:51PM May 09, 2004
Comments [0]
Tags:
blogging
sun
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.
Dave Johnson in Blogging
05:04PM Feb 29, 2004
Comments [6]
Tags:
blogging
family
Dave Johnson in Roller
03:45PM Sep 06, 2002
Comments [1]
Tags:
Roller
blogging
wiki
« Previous page | Main