Running Dot-Net apps in a J2EE environment.
Remember MainSoft? They were the Win32-on-UNIX company that Microsoft didn't shoot down (unlike Bristol).
Anyhow... Matt Raible reports that MainSoft has a compiler that transforms Dot-Net apps to J2EE apps. According to the marketing materials, MainSoft's product <a href= "http://www.mainsoft.com/products/vmw_j2ee.html">Visual MainWin for J2EE supports Weblogic, Tomcat, and Websphere. Assuming that they support operating systems other than Windows, this is a pretty amazing engineering accomplishment. They must have both a compiler that converts MSIL bytecode into JVM bytecode and what's more, a complete compatibility layer that translates ADO.Net calls into JDBC calls, ASP.Net calls into Servlet API calls, and etc. That's amazing and a hell of a lot of work, but it is not clear to me that anybody will buy it. Win32-on-UNIX was an amazing feat too, but it did not exactly take the software development world by storm.Talk went well.
I was nervous as usual, but I think I did pretty well. Almost everybody stayed until the end and folks asked lots of questions after the talk. After I clean up the speakers notes in my slides, I will hand them over to TriJUG so they can post them on the TriJUG site.
Triangle JUG tonight: Weblogs and Java
Looks like the dusting of snow is not going to postpone my talk at the Triangle Java Users Group tonight. I have my slides ready and I've rehearsed the talk several times. I'm ready. I will be talking about weblogs in the Java community, weblogs at work, and the architecture of the Roller Weblogger software. Here is my high level outline:
- Java weblog community
- Weblog software features
- Weblog infrastructure
- Weblogs & communities
- Weblogs at work
- Roller demo
- Roller architecture and lessons learned
Introducing Hierarchical Categories in Roller
This weekend, I added support for hierarchical categories to the Roller macros. Hierarchical categories make it easy to partition a weblog and to manage both a main weblog and a number of sub-blogs. For example, I would like to have a link blog where each post is a URL to some interesting place and a comment about that place. I don't want my link-blog links to show up in my main weblog.
I added new category-capable versions of a number of Roller macros, as you can see in the three pairs of methods below. Now, if you want to display only weblog entries one category and it's sub-categories you can use catagory-capable macros to get what you want.
showWeblogEntries($dayTemplate $max): Display up to $max number of entries using specified day template. showWeblogEntriesInCategory($dayTemplate $max $cat): Same, except only include entries under $cat. showRSSLinks(): Show links to available RSS feeds. showRSSLinksForCategory($cat): Show links to vailable feeds under category $cat. showWeblogCategoryChooser(): Show links to all top-level categories. showWeblogSubcategoryChooser($cat): Show links to top-level subcategories under $cat.
But those category-capable macros are not enough to support the main-blog and sub-blogs arrangement that I had in mind. To get that, I added the notion of a main category to Roller. Now you can specify a main category for your weblog, and the showCategoryChooser(), showWeblogEntries(), and showRSSLinks() methods will treat that main category as the root of your weblog.
It is easier to understand this by example, so I'll tell you what I did to this site. Before re-arranging my site, my category tree looked like this:
+ Root <-- MAIN CATEGORY + General + Java + Rolling + Blogging + Dot-Net + Links
My main category was my root category and my top-level categories were Java, Dot-Net, General, Blogging, and Links. I wanted to partition my weblog so that my links category no longer shows up on my main blog and in my main RSS feed. To accomplish this, I rearranged my categories to look like this:
+ Root + Main <-- MAIN CATEGORY + General + Java + Rolling + Blogging + Dot-Net + Links
I moved my main-blog categories under a category at path /Main and set that as my new main category. Now, without changing any macros on my weblog pages, my weblog and RSS feed will include only entries from under category. As you can see by hovering over the links above in my category chooser, the links now point to category paths /Main/Java and /Main/Blogging rather than just category names Java and Blogging as they used to. You can also see the same effect in my RSS feeds on the lower right-hand side of the page. The RSS feeds macro now displays only the top-level categories under the main category and my main RSS feed now includes only posts made in the main category and it's subcategories.
To display entries under my Links category, which will be my link-blog, I'll use the new showEntryLinksInCategory("/Links") macro. I'll add that later, probably right under my calendar on the right-hand side of the page.
All this stuff works fine if Roller is configured to use Hibernate, which is the Roller default, but under Castor-JDO, fetching of subcategories does not work. It was important to me, for performance reasons, to be able to fetch all entries under a category and in all subcategories by using a single query. I don't think a recusive approach with queries at every level would be performant. To accomplish the one query, I had to de-normalize the Category table by adding a Category-Assoc table. By issuing a single multi-table query, I can get what I want, but most unfortunately, Castor-JDO does not support multi-table queries. So, long story short, if you use the Castor-JDO backend, you are stuck with a single level hierarchy.
Welcome to new Roller blogger...
Jeremy Sproat, who is running Roller 0.9.8.1 and JSPWiki and has created nice new themes for both.
Wiki article: RollerArchitecture.
In preparation for my talk Monday, I put together some new diagrams and a short overview of RollerArchitecture on the Roller Wiki.
Enterprise whuffie.
More source material for my talk next week: Weaving Social Nets for the Enterprise.
Sometimes my desire to develop blogging software
outweighs my desire to blog. That is the case right now. I've been working on getting hierarchies right in Roller and it is eating almost all of my free time. Plus, I've got other things to do, like teaching Alex and Linus how to ride bikes, watching Lawrence of Arabia, preparing my talk, and, god forbid, working. I'll be back.
JRoller seem sluggish today?
It does to me too. Rick Ross and I are investigating. Update: we never did figure out what cause the sluggish behaviour today. We suspected mod_jk because it was throwing lots of "SEVERE" errors, but it has been throwing those for a while now. Looks like we have not banished all of the gremlims that haunted FreeRoller in days of old.
#roller
Despite that busy week, I've been making time for Roller development in the evenings. I've also been keeping a window open on the #roller IRC channel on freenode.net. Stop by for a chat if you have Roller questions or just to say hi.
Busy week.
That was a long and busy week with lots of meetings, a big customer visit, app server portability gremlins, and a code freeze that never got past the slush stage. I didn't have a whole lot of time for blogging, but I did setup a new weblog at work to track the progress of some remote dev work that I am coordinating. I'll be spending some time this weekend working on my TriJUG presentation and perhaps that will provide some fodder for blogging.
The Weblog Community Aggregator.
A new type of web site is becoming popular in the weblogging world: the Community Aggregator. 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.
I'm not sure where this concept originated. The first such site that I recall is Javablogs, but others have suggested that Blawgistan was one of the the first and that O'Reilly had a community aggregator in 2000. I'm not sure when weblogs.oreilly.com came online. O'Reilly's Meerkat came online in 2000, but it does not really fit my definition of a community aggregator.
Portal like experience for web browsers. Web browsing visitors who visit a Community Aggregator experience a portal-like web site centered around the display of the most general of the synthesized newsfeeds.
Other information included on the portal page might include list of links to the weblogs included in the aggregator and display of other newsfeeds of interested to the community. For example, an open source software project might display the newsfeed from the project's bug tracking system and the newsfeed from the project's build system on the sidebar of the portal page.
Synthesized feeds for newsreaders. Synthesized newsfeeds are intended for users of newsreader software such as FeedDemon, NewNewsWire, or SharpReader. The synthesized feeds allow you to subscribe to the community as a whole instead of picking out specific individual weblogs.
The owners of an aggregation site might set some rules to limit which weblogs are included in the synthesized newsfeeds and what type of weblog entries are included in the feed. For example, community aggregation site javablogs.com allows anybody to sign up to be included on the site and asks only that included weblogs be primarily about Java. O'Reilly Weblogs includes only O'Reilly authors. The Planet Apache community aggregator allows only weblogs belonging to members of the Apache Software Foundation.
Features useful in a Community Aggregator:- Allow users to mark weblogs as favorite-blogs or ignored-blogs.
- Count clicks on each weblog entry.
- Allow users to design their own synthesized feeds.
- Allow administrator to "pin" weblog entries to the top of the page.
- Download subscription list as OPML
- Weblogs.com API RPC interface
- Search API RPC interface
- Portal-like web UI
- ARS Linux
- Advogato Recent Logs
- BLawgistan - now offline
- Fedora People
- JavaBlogs.com
- Java.net Weblogs
- KDE Developer Journals
- MetaDean - just a spec?
- Monologue
- O'Reilly Weblogs
- Planet Apache
- Planet Debian
- Planet Lisp
- Planet Python
- Planet RDF Hack
- Planet SUSE
- Weblogs@ASP.NET
- Weblogs at Harvard Law
- Spycroll - Python blog aggregator used by some "Planet" sites?
- http://planetplanet.org - is this the future home of the software that drives the various "Planet" sites?
- Monologue - ASP.Net application that drives the Monologue site.
Views of Orkut.
Orkut is a new brand of web-based social software, similar to Friendster and LinkedIn. Here's how it works. You enter personal information about yourself, build a network of friends, forget about the whole thing for a couple of months until some other service is introduced, rinse and repeat.
Everybody seems to be blogging about Orkut these days and presenting lots of viewpoints, but two of today's posts were interesting studies in contrast - at least for me. You have the <a href= "http://www.zephoria.org/thoughts/archives/2004/01/30/venting_my_contempt_for_orkut.html#004004"> idealistic view and the realistic view. I'm an idealistic realist, so I find lots to agree with in both posts. I agree with Danah about fans vs. friends. Being a fan of somebody is less of a relationship than being a friend. Fans observe, follow (and in the worse case, stalk) from afar. If you notice that somebody is a fan of yours, you might be inspired to get to know them and perhaps become friends.
Why wait for XDoclet2?
Merrick Schincarol provides code to add Velocity template support to XDoclet 1.2.
Netiquette is the key to distributed development.
Ken Coar writes about the social dynamics of mailing-lists in distributed software development: The Sun Never Sets on Distributed Development. Good stuff, most or all of it based on Ken's experience with Apache, I assume. Ken explains that Mailing-lists provide a meeting place for teams and the place is very different from a physical meeting place and face-to-face meetings. Each of these places has strong pros and cons. I'm interested to see how weblogs and wikis play out in the Apache community as Ted Leung, Andy Oliver, and others continue the weblog/wiki advocacy and cool stuff like Apache wikis, Apache blogs, and Planet Apache.
Evil trash.
I just returned from Chapel Hill where I worked for about three hours to rid my brother's computer of all of the various adware, spyware, evil crap, worthless trash, and malicious idiocy that had accumulated over the first six months of his Windows-based computer's life. Three hours! If not for the Heavy Metal Parking Lot and Triumph the Insult Comic Dog videos we enjoyed, I would be ready to rant and rage right now. Evil trash indeed.
Progress on PostgreSQL
PostgreSQL is a great database and I've been using it at work with Roller, but it is not really supported in Roller - yet. Tonight, I spent some time testing Roller 0.9.9-dev with PostgreSQL and it is working well. Here are some notes on Roller and PostgreSQL I typed up on the wiki.
JRoller outage due to hardware problems.
I talked to Rick Ross earlier today and learned that JRoller is down due to hardware problems. Rick indicated that the system might be back up later tonight. Update: JRoller is back.
« Previous page | Main | Next page »