*Tackle*
Terry Tate: “You know you need a cover sheet on your TPS report!”
*Tackle*
Terry Tate: “You know you need a cover sheet on your TPS report!”
If anyone is interested, I’ve posted the XML Schema (XSD) and ant task information that I was using to generate and parse RSS 0.91 for blojsom, my soon-to-be-released-in-a-day Java port of Blosxom. All the proper elements should be there.
Kenneth Hunt has some great coverage of the MSSQL worm thang that recently plagued the net.
I know there is a lot about my life I don’t include in my weblog. Some of it is too boring to share, and some of it is too interesting.
James Robertson wants to get some DC-MD-VA bloggers together. I’m in!
Ack! I was without internet all workday yesterday at the store. I was hoping to elaborate on my Java jab this morning, but was unable to do so. First of all, I’d like to thank Dave Johnson for creating a kickass open-source Java-based weblogging package. I have it running behind the firewall (along with a movable type installation) to play with and test. It’s really cool. And it’s free.
I do find the stack trace when something goes wrong with Tomcat to be both a beeyotch and a blessing. It’s great if you’re trying to debug stuff or figure out which class file you’re missing, but I’d like to hide all of that info from end users. I think it would be ideal to have a simplified error page (like this example over at devshed) for end users, and enable a more detailed error page for debugging/development (DEBUG == 1). Just a thought.
Andy caught the error quicky (one of those errors that does not present itself until it is live) but not quite quickly enough. It looks like Dave is thinking of simplifying things a bit to get rid of Velocity problems. He might want to keep Velocity available as an option over a simplified macro system just in case people want to do cool Velocity stuff on a per-post basis.
Not to poke fun at Java, but here’s what ended up in my RSS aggregator this morning from Andy Oliver:
A Java developer responds: 101 reasons why C# is better than Java, reasons 6-10. [VELOCITY ERROR: parsing weblog entry] org.apache.velocity.exception.ParseErrorException: Encountered “DEBUG” at line 22, column 5. Was expecting: “(” … at org.apache.velocity.app.Velocity.evaluate(Velocity.java:329) at org.apache.velocity.app.Velocity.evaluate(Velocity.java:253) at org.roller.presentation.weblog.WeblogEntryDataEx.getText(WeblogEntryDataEx.java:133) at org.roller.presentation.weblog.WeblogEntryDataEx.getDescription(WeblogEntryDataEx.java:66) at sun.reflect.GeneratedMethodAccessor163.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:324) at org.apache.velocity.runtime.parser.node.ASTMethod.execute(ASTMethod.java:260) at org.apache.velocity.runtime.parser.node.ASTReference.execute(ASTReference.java:207) at org.apache.velocity.runtime.parser.node.ASTReference.render(ASTReference.java:250) at org.apache.velocity.runtime.parser.node.ASTBlock.render(ASTBlock.java:94) at org.apache.velocity.runtime.directive.Foreach.render(Foreach.java:344) at org.apache.velocity.runtime.parser.node.ASTDirective.render(ASTDirective.java:153) at org.apache.velocity.runtime.parser.node.SimpleNode.render(SimpleNode.java:271) at org.apache.velocity.app.Velocity.evaluate(Velocity.java:359) at org.apache.velocity.app.Velocity.evaluate(Velocity.java:253) at org.roller.presentation.weblog.rss.RssServlet.doPost(RssServlet.java:120) at org.roller.presentation.weblog.rss.RssServlet.doGet(RssServlet.java:132) at javax.servlet.http.HttpServlet.service(HttpServlet.java:740) at javax.servlet.http.HttpServlet.service(HttpServlet.java:853) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:247) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:193) at org.roller.presentation.filters.RssHitTrackerFilter.doFilter(RssHitTrackerFilter.java:47) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:213) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:193) at org.roller.presentation.filters.PageArgsFilter.doFilter(PageArgsFilter.java:222) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:213) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:193) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:243) at org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.java:566) at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:472) at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:943) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:190) at org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.java:566) at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:475) at org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.java:564) at org.apache.catalina.valves.CertificatesValve.invoke(CertificatesValve.java:246) at org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.java:564) at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:472) at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:943) at org.apache.catalina.core.StandardContext.invoke(StandardContext.java:2347) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:180) at org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.java:566) at org.apache.catalina.valves.ErrorDispatcherValve.invoke(ErrorDispatcherValve.java:170) at org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.java:564) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:170) at org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.java:564) at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:468) at org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.java:564) at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:472) at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:943) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:174) at org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.java:566) at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:472) at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:943) at org.apache.catalina.connector.http.HttpProcessor.process(HttpProcessor.java:1027) at org.apache.catalina.connector.http.HttpProcessor.run(HttpProcessor.java:1125) at java.lang.Thread.run(Thread.java:536)
Sorry, couldn’t resist.
Roland Piquepaille points out ClearCube‘s client blades. Pretty cool.
Blades: They’re not just for servers anymore.
I grabbed the mono-0.19 rpms and installed mono on one of my Linux dev boxes this afternoon. I’m at work, but that’s not going to stop me (thanks SSH!). I snagged a hello world sample and fired mono up:
[user@box mono]$ mcs HelloMono.cs
Compilation succeeded
[user@box mono]$ mono HelloMono.exe
Hello Mono
It works.
Ingo might be interested in the remoting aspects of Mono. Currently, the oversimplified not really practical basic remoting is supported. I recall Miguel saying that a SOAP serializer is either done or mostly done (maybe only in CVS) and that someone has just finished binary serialization for remoting.
I’m not a remoting guy, so I might have screwed all that up. Perhaps it’s time to break out the copy of Thinking in C# that I ordered and downloaded.
Update: For extra cool points, I snagged the source code for Thinking in C#, and took a stroll to chapter 3:
[user@box 03]$ mono HelloDate.exe
Hello, it's:
01/24/2003 17:50:16
Pretty cool, though I am running into a brick wall with things like System.Web.Services.Protocols.SoapHttpClientProtocol
which hasn’t been implemented yet.
I stuck around LinuxWorld until Miguel de Icaza issued his State of the Mono Address. I’ve been following the Mono project for some time via the website, but this was much better.
C# is done, VB is 70% done, and JavaScript is 50% done. This is good. Miguel demonstrated an almost unmodified version of iBuySpy that was only really slow because it was connecting to an MSSQL server in Spain over 802.11b.
In theory, you could write an ASP.NET web application today and deploy it on a Linux server using Mono. You can reuse the docs that are available for C# and .NET (from Microsoft), and you can also reuse the docs and resources available from MS and third parties.
Miguel stressed that we should reuse the Microsoft booth (next to the Mono booth) to learn about all of the cool ASP stuff that you can do.
The Mono team is also working on a new version fo their JIT compiler which will speed up apps significantly. He also demoed a sweet debugger written in GTK# (GTK bindings for C#) and a digital camera organization app that he wrote for himself (not for you). It was running slow over a wireless connection, so he brought out the laptop to reassure us that the app was fast and non-blocking.
It is obvious that WinForms is one of the least mature parts of Mono. More people are interested in using Mono for hosting ASP apps, so that stuff is getting done quicker. He stressed several times that if we wrote some regression tests, patched some code, did some documentation, that Mono would be complete in a matter of weeks.
There is database support for pretty much every popular database that runs under Linux. You can take an exe produced from Visual Studio or the mono compiler and run it using mono.
Overall I was impressed by the state of Mono and the demos. It’s awsome to be able to take a Microsoft demo app out of the box and run it using Mono. There were only a few configuration changes that had to be made to take case specific files into consideration. Other than that, it just worked: mono server.exe 8080
.
People lining up for ‘IBM Customer Day’
Intel’s PCXPO booth was cooler
JXTA Presentation at the Sun booth
Presentations at the Red Hat booth were well attended
The Sun and IBM booths were really close together
The dot-org section is where all the hackers were
This is pyDDR. It is not running on a PS2
‘Cluster’ was the buzzword of the day
Miguel de Icaza showing off his app in Mono
Miguel swore that the program was running slowly because of the wireless connection
Mark Pilgrim is introducing Dive Into Premium, with access to premium Dive Into content. It is subscription-based, and IMHO is very reasonable for what it will be offering. YMMV.
Wow, it’s not even April yet.
I’ve stumbled upon many things that need to be explored in depth, but for the time being, here are a few quick links that I thought were interesting:
Congrats to Sam and Sue.
Here’s two birds with one stone. So if you show up at PyCon, Sam, will you still be wearing your Perl shirt?
Rael Dornfest: I’m thrilled to announce the 1.0 release of my Blosxom weblog app…. With the choice of dynamic or static rendering, Blosxom is at the point I’d hoped it’d be when it went 1.0.
Now I have my first dillema. I want to do static rendering for scalability, but in accordance with the teachings of REST, I also want my URI to identify resources that can serve both GETs and POSTs.
Meanwhile, the temptation to ditch Perl for Python is growing…
I’m back from Linux World. I’m trying to simultaneously catch up on my RSS feeds, organize my notes and thoughts, and get some pictures organized.
I’m out the door.
I’m off to New York City in the morning. I’m going to take a ferry into the city (there’s a ferry stop about a block from the Javits center). Watch this space for news and updates about and from the show.
Sam Ruby on new projects at Apache:
James (from Jakarta), Cocoon and Web Services (both from XML).
The Web Services project interests me, I’ll have to take a look at that later.
Brad Wilson brings the good news:
Hilary Rosen quits the RIAA! Could there be any better news today?