<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-8504592</id><updated>2011-04-24T06:29:47.135-04:00</updated><title type='text'>BlogicBlog: View from the trenches</title><subtitle type='html'>The blog about Java and XML with focus on troubleshooting issues and tools.</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://blogicblog.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8504592/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://blogicblog.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>BlogicBlogger</name><uri>http://www.blogger.com/profile/02931775813348618827</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>94</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-8504592.post-116768166811606365</id><published>2007-01-01T14:43:00.000-05:00</published><updated>2007-01-01T15:01:08.126-05:00</updated><title type='text'>The blog has moved</title><content type='html'>I have blogged here about Java and tech support issues since September 2004. Initially, the blog was anonymous as people were worried about negative repercussions from their workplace. Eventually, Sun and IBM and BEA (who I worked for at the time) saw the benefits and I have gone public.&lt;br /&gt;&lt;br /&gt;After a year or so of blogging, I realised that I want to blog about more than just Java. Unfortunately Blogspot did not support the categories and I did not want to pollute JavaBlogs syndicator (where I am a member) with irrelevant content. &lt;br /&gt;&lt;br /&gt;So I switched to the hosted WordPress account for my other topics some months back. And boy! was it nicer. Google is trying to catch up now, but it is too late for me.&lt;br /&gt;&lt;br /&gt;The free WordPress account had one major disadvantage though: it had limited customization of the layout and plugins, something the original Blogspot provided for.&lt;br /&gt;&lt;br /&gt;So, as part of the New Year resolutions, I have decided to consolidated the blogs into &lt;a href="http://blog.outerthoughts.com/"&gt;the new one&lt;/a&gt; at the personal domain. I have moved entries from both blog there, but not without some lost comments. Hopefully, I will figure out how to get them across eventually.&lt;br /&gt;&lt;br /&gt;I will still be a member of the JavaBlogs, since the new installation (also a Wordpress) allows to syndicate on the category level, rather than the full blog level. &lt;br /&gt;&lt;br /&gt;Happy New Year and I will see you at the new blog.&lt;br /&gt;&lt;br /&gt;BlogicBlogger Over and Out&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8504592-116768166811606365?l=blogicblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://blog.outerthoughts.com/' title='The blog has moved'/><link rel='replies' type='application/atom+xml' href='http://blogicblog.blogspot.com/feeds/116768166811606365/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8504592&amp;postID=116768166811606365&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8504592/posts/default/116768166811606365'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8504592/posts/default/116768166811606365'/><link rel='alternate' type='text/html' href='http://blogicblog.blogspot.com/2007/01/blog-has-moved.html' title='The blog has moved'/><author><name>BlogicBlogger</name><uri>http://www.blogger.com/profile/02931775813348618827</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8504592.post-116710253907517548</id><published>2006-12-25T22:05:00.000-05:00</published><updated>2006-12-25T22:08:59.086-05:00</updated><title type='text'>Ouch: Thinking about hiring an offshore team?</title><content type='html'>Check who they are training with. &lt;a href="http://yakovfain.javadevelopersjournal.com/visiting_an_offshore_training_camp_for_programmers.htm"&gt;Yakov Fain's notes from an offshoring training presentation&lt;/a&gt; are scary, and not in a good way.&lt;br /&gt;&lt;br /&gt;BlogicBlogger Over and Out&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8504592-116710253907517548?l=blogicblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blogicblog.blogspot.com/feeds/116710253907517548/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8504592&amp;postID=116710253907517548&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8504592/posts/default/116710253907517548'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8504592/posts/default/116710253907517548'/><link rel='alternate' type='text/html' href='http://blogicblog.blogspot.com/2006/12/ouch-thinking-about-hiring-offshore.html' title='Ouch: Thinking about hiring an offshore team?'/><author><name>BlogicBlogger</name><uri>http://www.blogger.com/profile/02931775813348618827</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8504592.post-116417004153182602</id><published>2006-11-21T23:07:00.000-05:00</published><updated>2006-11-21T23:34:01.550-05:00</updated><title type='text'>Microsoft's way of fixing a security issue with a feature</title><content type='html'>... is dropping the feature.&lt;br /&gt;&lt;br /&gt;I have an iPAQ rx3115 with a built-in WiFi. I had it for a while and it is a nice unit, if one forgives Windows Mobile 2003 (this is possible on a good day). I also have a wireless router, so can download books and generally browse internet from anywhere in the flat without turning the main computer on.&lt;br /&gt;&lt;br /&gt;One of the other benefits of the built-in WiFi was synchronization over IP, which for me was specifically over the WiFi. This feature is no more.&lt;br /&gt;&lt;br /&gt;Microsoft decided that this feature is a security risk because people's email, files and notes were transmitted unecrypted and could be snooped upon. So, with their new focus on security they had to fix this problem and fix it urgently.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;So they dropped the feature in the update&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;I am not sure what more to say. They decided and they executed. They did not bother mentioning this in the release notes, they did not provide it as either a disabled-by-default option or even as a registry setting. Nope. Just gone! And to make sure I don't endanger myself, they removed all old versions of the ActiveSynch as well.&lt;br /&gt;&lt;br /&gt;One &lt;span style="font-style: italic;"&gt;brave&lt;/span&gt; engineer decided to &lt;a href="http://blogs.msdn.com/windowsmobile/archive/2006/11/08/wifi-did-you-do-that.aspx"&gt;explain the reasoning behind the feature drop&lt;/a&gt; in his personal blog. Whatever! I can't say it any better than multiple comments on his blog already did and a fat lot of good it did to anybody.&lt;br /&gt;&lt;br /&gt;One thing for sure - this does not bode well for Vista, where such changes don't even require people installing the updates.&lt;br /&gt;&lt;br /&gt;BlogicBlogger Over and Out&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8504592-116417004153182602?l=blogicblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blogicblog.blogspot.com/feeds/116417004153182602/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8504592&amp;postID=116417004153182602&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8504592/posts/default/116417004153182602'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8504592/posts/default/116417004153182602'/><link rel='alternate' type='text/html' href='http://blogicblog.blogspot.com/2006/11/microsofts-way-of-fixing-security.html' title='Microsoft&apos;s way of fixing a security issue with a feature'/><author><name>BlogicBlogger</name><uri>http://www.blogger.com/profile/02931775813348618827</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8504592.post-116343127486666630</id><published>2006-11-13T10:08:00.000-05:00</published><updated>2006-11-13T10:21:14.886-05:00</updated><title type='text'>Java has gone open source with GPL2</title><content type='html'>&lt;a href="http://www.sun.com/software/opensource/java/"&gt;A great news all around&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;I hope Sun will also host a public cross-referencing source code navigator for the code, rather than just a subversion directory. Something like &lt;a href="https://sorcerer.dev.java.net/"&gt;Sorcerer&lt;/a&gt; might be a good start.  We know the idea is good, because &lt;a href="http://lxr.linux.no/"&gt;Linux had one for ages&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Oh, and a new line in a resume to strive for: &lt;span style="font-style: italic;"&gt;Java source code contributor&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;BlogicBlogger Over and Out&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8504592-116343127486666630?l=blogicblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blogicblog.blogspot.com/feeds/116343127486666630/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8504592&amp;postID=116343127486666630&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8504592/posts/default/116343127486666630'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8504592/posts/default/116343127486666630'/><link rel='alternate' type='text/html' href='http://blogicblog.blogspot.com/2006/11/java-has-gone-open-source-with-gpl2.html' title='Java has gone open source with GPL2'/><author><name>BlogicBlogger</name><uri>http://www.blogger.com/profile/02931775813348618827</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8504592.post-116243680619229972</id><published>2006-11-01T21:59:00.000-05:00</published><updated>2006-11-01T22:06:46.203-05:00</updated><title type='text'>Example based code quiz from O'Reilly Labs</title><content type='html'>O'Reilly labs have created a &lt;a href="http://labs.oreilly.com/code/quiz/"&gt;quick, but addictive code quiz&lt;/a&gt; that tests programmer's knowledge based on him being able to look at code example and figure out which book it might have come from.&lt;br /&gt;&lt;br /&gt;I run through it in one breath and did not do too badly (280 points). I mostly had troubles with VB/ASP (no surprise), but also with some examples that were ambiguous.&lt;br /&gt;&lt;br /&gt;O'Reilly is going to do some serious data mining from the game results, but I wish they would also provide the dataset to the public, obfuscated or otherwise. It would be interesting to play with it, a la &lt;a href="http://www.netflixprize.com/"&gt;Netflix Prize&lt;/a&gt;. And/or they could allow the results to be embeddable in the page for the brag value.&lt;br /&gt;&lt;br /&gt;BlogicBlogger Over and Out&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8504592-116243680619229972?l=blogicblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blogicblog.blogspot.com/feeds/116243680619229972/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8504592&amp;postID=116243680619229972&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8504592/posts/default/116243680619229972'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8504592/posts/default/116243680619229972'/><link rel='alternate' type='text/html' href='http://blogicblog.blogspot.com/2006/11/example-based-code-quiz-from-oreilly.html' title='Example based code quiz from O&apos;Reilly Labs'/><author><name>BlogicBlogger</name><uri>http://www.blogger.com/profile/02931775813348618827</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8504592.post-116154476714479612</id><published>2006-10-22T15:06:00.000-04:00</published><updated>2006-10-22T15:19:27.156-04:00</updated><title type='text'>Obscure bulk format converters of OpenOffice.org</title><content type='html'>I needed to convert multiple MSWord documents into the OpenOffice.org format and then later to convert those documents further into HTML. How to do it with a single document is obvious; it took some searching to figure out how to do it for multiple documents.&lt;br /&gt;&lt;br /&gt;The magic menu turned out to be File/Wizards (&lt;em&gt;Document Converter&lt;/em&gt; and &lt;em&gt;Web Page&lt;/em&gt; correspondingly). In a retrospect, it is not unobvious. The only reason it took time is because I very rarely use wizard interfaces of any software.&lt;br /&gt;&lt;br /&gt;Be that as it may, the wizards themselves are quite powerful and useful and work just fine on large file sets. The &lt;em&gt;Web Page&lt;/em&gt; wizard's actual purpose is to generate a pretty table of content for the documents, but it will convert all the documents into HTML as a side-effect. So, I just deleted the generated TOC files and kept the converted HTML documents. &lt;br /&gt;&lt;br /&gt;BlogicBlogger Over and Out&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8504592-116154476714479612?l=blogicblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blogicblog.blogspot.com/feeds/116154476714479612/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8504592&amp;postID=116154476714479612&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8504592/posts/default/116154476714479612'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8504592/posts/default/116154476714479612'/><link rel='alternate' type='text/html' href='http://blogicblog.blogspot.com/2006/10/obscure-bulk-format-converters-of.html' title='Obscure bulk format converters of OpenOffice.org'/><author><name>BlogicBlogger</name><uri>http://www.blogger.com/profile/02931775813348618827</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8504592.post-115204156617428139</id><published>2006-07-04T15:25:00.000-04:00</published><updated>2006-07-04T15:32:46.236-04:00</updated><title type='text'>Online typing speed test</title><content type='html'>Nice, simple &lt;a href="http://labs.jphantom.com/wpm/"&gt;typing speed test page&lt;/a&gt;. Even with tired hands, I managed to pull good 86 wpm with only a 3 mistakes.&lt;br /&gt;&lt;br /&gt;I remember buying the &lt;a href="http://www.typequick.com/"&gt;TypeQuick&lt;/a&gt; software long time ago to learn touch typing, when it still came on floppies and had some really strange copy protection. I remember the pain it was to &lt;span style="font-style: italic;"&gt;uninstall&lt;/span&gt; the application back onto the floppy disk to make sure the license could be transferred over to the new computer.&lt;br /&gt;&lt;br /&gt;At least, I could transfer the license back then. This days, Windows will not even let you do that legally. Talk about monopoly abuse.&lt;br /&gt;&lt;br /&gt;BlogicBlogger Over and Out&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8504592-115204156617428139?l=blogicblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blogicblog.blogspot.com/feeds/115204156617428139/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8504592&amp;postID=115204156617428139&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8504592/posts/default/115204156617428139'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8504592/posts/default/115204156617428139'/><link rel='alternate' type='text/html' href='http://blogicblog.blogspot.com/2006/07/online-typing-speed-test.html' title='Online typing speed test'/><author><name>BlogicBlogger</name><uri>http://www.blogger.com/profile/02931775813348618827</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8504592.post-115186051370156359</id><published>2006-07-02T13:08:00.000-04:00</published><updated>2006-07-02T13:15:13.710-04:00</updated><title type='text'>JavaOne 2006 sessions are up with sound and transcripts</title><content type='html'>&lt;a href="http://developers.sun.com/learning/javaoneonline/"&gt;The sessions&lt;/a&gt; are finally up and like last couple of years have sound synchronized with the slides and transcripts. Like last couple of years, there are some transcription errors. Not surprising given the accents, etc. Still, I wish Sun had given the speakers a way to double check and correct the transcriptions. Given that they will be up for a long time, it is worth making sure things look really well.&lt;br /&gt;&lt;br /&gt;I have checked &lt;a href="http://developers.sun.com/learning/javaoneonline/2006/tools/TS-1669.html"&gt;my own session (TS-1669)&lt;/a&gt; and it is not too bad. I had more raspy voice than I have normally, but that's probably because of all the talking and partying that happened beforehand.&lt;br /&gt;&lt;br /&gt;BlogicBlogger Over and Out&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8504592-115186051370156359?l=blogicblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blogicblog.blogspot.com/feeds/115186051370156359/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8504592&amp;postID=115186051370156359&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8504592/posts/default/115186051370156359'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8504592/posts/default/115186051370156359'/><link rel='alternate' type='text/html' href='http://blogicblog.blogspot.com/2006/07/javaone-2006-sessions-are-up-with.html' title='JavaOne 2006 sessions are up with sound and transcripts'/><author><name>BlogicBlogger</name><uri>http://www.blogger.com/profile/02931775813348618827</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8504592.post-115158123644632151</id><published>2006-06-29T07:01:00.000-04:00</published><updated>2006-06-29T20:00:45.943-04:00</updated><title type='text'>JavaOne session evaluation of my talk</title><content type='html'>I have received the session evaluations from &lt;a href="http://blogicblog.blogspot.com/2006/04/i-am-now-on-javaones-eventconnect-tool.html"&gt;the talk I did at JavaONE(TS-1669)&lt;/a&gt; (&lt;a href="http://java.sun.com/javaone/sf/sessions/main_session_pdfs.jsp"&gt;slides are available&lt;/a&gt;).  Differently from  the evaluation of &lt;a href="http://developers.sun.com/learning/javaoneonline/2004/newcooltech/TS-1646.html"&gt;the talk two years ago&lt;/a&gt;, this time it is more scientific. I guess pushing the evaluation paper on every attendee has paid of.&lt;br /&gt;&lt;br /&gt;I am quite happy with the result. The top two quartiles for overall quality were &lt;span style="font-style: italic;"&gt;4.03-4.29&lt;/span&gt; and &lt;span style="font-style: italic;"&gt;4.29-4.89&lt;/span&gt;. My mark is &lt;span style="font-weight: bold;"&gt;4.24&lt;/span&gt;. I did not make it into top 25% of the sessions, but I am somewhere in the top 30%.&lt;br /&gt;&lt;br /&gt;I had a fairly large room (620 people capacity). It was fully booked, but I was told the number of people who really show up is between 35% and 70%. My count was &lt;strike&gt;296&lt;/strike&gt; (Update: &lt;span style="font-weight: bold;"&gt;432&lt;/span&gt;), which is still respectable, especially considering that this year there were several sessions on troubleshooting.&lt;br /&gt;&lt;br /&gt;My other stats are fairly good as well. They are as follows (track, global averages are in brackets):&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Overall: 4.24&lt;/span&gt; (4.01, 4.12)&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Matching of the presentation and the abstract: 4.29&lt;/span&gt; (4.11, 4.17)&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Speaker quality: 4.31&lt;/span&gt; (4.01, 4.14)&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Presentation material quality: 4.13&lt;/span&gt; (3.94, 4.01)&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Demos: 3.76&lt;/span&gt; (3.82, 3.89)&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Q&amp;A: 3.77&lt;/span&gt; (3.88, 3.91)&lt;br /&gt;&lt;br /&gt;The last two are totally understandable as well. I did not actually have a live demo. That was for two reasons. I do not have a laptop at the moment and my tools setup is too complex for Sun's presentation machines. But also, and more importantly, I could have had a tiny demo or cover an additional theme. I chose to cover an additional theme (XML file processing). To my mind, that was a worthwhile tradeoff. I did built some demo-like slides into the presentation, but there is obviously nothing quite like seeing the speeker work the keyboard live.&lt;br /&gt;&lt;br /&gt;With Q&amp;amp;A marks, people were generous. I totally run out of time for Q&amp;A. Last time, they had to drag me off the platform, I was running so late. This year, I finished with 30 seconds to spare, so could evacuate before the dreaded bell. I stayed outside the room and chatted with anybody who was interested (I had about 10 people), but I really wish I had time for Q&amp;amp;A. Maybe next time, if I don't overpromise with the session topic again.&lt;br /&gt;&lt;br /&gt;I also wish I had some better feedback on how to improve my talks. Sun may provide the copies of the hand-filled comments sections eventually, but if you were at the presentation and have a comment, please make one on the blog. Constructive negative comments are very welcome.&lt;br /&gt;&lt;br /&gt;BlogicBlogger Over and Out&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8504592-115158123644632151?l=blogicblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blogicblog.blogspot.com/feeds/115158123644632151/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8504592&amp;postID=115158123644632151&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8504592/posts/default/115158123644632151'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8504592/posts/default/115158123644632151'/><link rel='alternate' type='text/html' href='http://blogicblog.blogspot.com/2006/06/javaone-session-evaluation-of-my-talk.html' title='JavaOne session evaluation of my talk'/><author><name>BlogicBlogger</name><uri>http://www.blogger.com/profile/02931775813348618827</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8504592.post-114826167805039863</id><published>2006-05-21T21:14:00.000-04:00</published><updated>2006-05-21T21:34:38.143-04:00</updated><title type='text'>Nested Archive Toolkit</title><content type='html'>IBM alphaWorks has released an interesting tool called &lt;a href="http://www.alphaworks.ibm.com/tech/nestedarchive"&gt;Nested Archive Tookit&lt;/a&gt; that allows to look inside the nested zip/jar/ear/war files. It looks to be useful for modification of config files deep inside the structure (e.g. web.xml inside foo.war inside bar.ear). It can also provide XML file with the description of the archive to the full depth. This makes it useful for postprocessing with XSLT and/or visualization tools.&lt;br /&gt;&lt;br /&gt;There is a big problem with the tool however and it is its license. As with most of other alphaWorks tools, it uses 90 days evaluation license. This means that production use is not really allowed and certainly not for long term. Given that the tool is not for everyday use, it is questionable whether good evaluation can be made in the time permitted.&lt;br /&gt;&lt;br /&gt;I have spoken with alphaWorks representative about the license issues at JavaOne and he said that it is possible to request for the tool to be open sourced. So, check it out and if it matches your needs, ask for it to be open sourced via license form.&lt;br /&gt;&lt;br /&gt;Oh and your IBM id is most probably an email (this one catches me every time).&lt;br /&gt;&lt;br /&gt;Finally, if the license issue irks you as much as it does me, there is always &lt;a href="https://truezip.dev.java.net/"&gt;TrueZIP&lt;/a&gt; with its Apache license. TrueZIP has some advanced functionality of its own, so it is worth a good look as well.&lt;br /&gt;&lt;br /&gt;BlogicBlogger Over and Out&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8504592-114826167805039863?l=blogicblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blogicblog.blogspot.com/feeds/114826167805039863/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8504592&amp;postID=114826167805039863&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8504592/posts/default/114826167805039863'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8504592/posts/default/114826167805039863'/><link rel='alternate' type='text/html' href='http://blogicblog.blogspot.com/2006/05/nested-archive-toolkit.html' title='Nested Archive Toolkit'/><author><name>BlogicBlogger</name><uri>http://www.blogger.com/profile/02931775813348618827</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8504592.post-114775194028440775</id><published>2006-05-15T23:15:00.000-04:00</published><updated>2006-05-15T23:59:00.356-04:00</updated><title type='text'>JavaOne day 0 - the issues Sun will do nothing about</title><content type='html'>A lot of interesting questions were asked at alumni-only fireside chat with Sun team today. I am only going to mention the questions Sun did not have a good story for.&lt;br /&gt;&lt;ul&gt;&lt;li&gt;JVM on PDAs - Sun is pushing Java for Mobiles quite hard. Witness the support for SaveJe. This however is a difficult road especially in North America with vendor fragmentation and difficulties of implementing full multimedia/call-handling capabilities. A question was asked whether Sun would consider implementing JVM just a basic app environment for non-phone PDAs running Windows 2003/2005 and for phone PDAs but without full integration of call-capabilities (like IBM's j9, but better). The answer made it very clear that PDAs are not a target device by themselves and that phone integration is a goal, but only with full-functionality . I have a non-phone PDA and was hoping to have a good JVM for it, but it looks like I should just forget about it.&lt;/li&gt;&lt;li&gt;Multimedia (JMF) API - This one is well and trully dead. Sun is happy for somebody else to develop an alternative reference implementation, but they are not putting any money into it themselves. The basic reason is that they think it will take too much effort to get JMF to really useful state and they are not interested in making it less than perfect. Apparently, there is now a project to do an &lt;a href="http://fmj.sourceforge.net/"&gt;open-source alternative implementation&lt;/a&gt;; let's hope it works out.&lt;/li&gt;&lt;li&gt;Serial port/USB access - Serial port implementation is semi-dead and there is no USB implementation. Sun's response was that there is a &lt;a href="http://javax-usb.org/faq.html"&gt;JSR by IBM&lt;/a&gt; about USB access, but no further details or enthusiasm were forthcoming.&lt;/li&gt;&lt;li&gt;Java hosting - the cost of java hosting is 10-15 times higher than hosting PHP apps. I have asked whether they knew why that might be and whether this is something Sun should pay attention to. The reply I got was that this is how capitalist market works and that maybe I should email Jonathan Schwartz about it. I might have mangled the question as the meaning I was aiming for was to see whether it was known what made Java hosting an expensive business - whether it was memory requirements, complicated versioning/classpath issues or something else. If I figure out a good way to phrase it, I &lt;span style="font-weight: bold;"&gt;will&lt;/span&gt; send an email to Jonathan and see what happens.&lt;/li&gt;&lt;li&gt;JavaOne scheduler application suckage (my question again) - every year scheduler application gets better, but it never seems to be as good as current technologies make it possible. Turns out that Sun people don't use the scheduler themselves (duh!), so they don't actually know it sucks (or pretend that they don't). Well, they got crowd's feedback on that issue loud and clear (very loud). Hopefully (as suggested) the next year's scheduler will be a competition of some sort with the best version becoming an official one. James Gosling sort of volunteered for that one.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Allowing JavaDocs to be published and remixed on 3rd party websites. This was a reference to several websites that a while ago put JavaDocs for official JDK packages together with JavaDocs for various open source software and allowed remixing/commenting/other social manipulations across all those APIs. Sun leaned heavily to have their API removed and I wanted to know whether that negative stance changed and/or whether they thought the legal/copyright issues really were more important than potential benefits of API presentation remix. &lt;a href="http://today.java.net/pub/au/189"&gt;Graham Hamilton&lt;/a&gt; answered that legal issues were quite important, but that JavaDoc will be much better in Java 6 and beyond. An answer, but not quite to the original question. He did add that maybe that issue should be revisited, but - as with other 'to be revisited' issues - I don't really expect them to remember the vague promises with all the other issues and pressures occuring during JavaOne.&lt;/li&gt;&lt;/ul&gt;There were many other good questions and answers and I am sure somebody will blog about them. These are just the issues that I think are difficult to pin Sun people down on usually and it is worth writing them down for future references, while the memory is strong.&lt;br /&gt;&lt;br /&gt;BlogicBlogger Over and Out&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8504592-114775194028440775?l=blogicblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blogicblog.blogspot.com/feeds/114775194028440775/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8504592&amp;postID=114775194028440775&amp;isPopup=true' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8504592/posts/default/114775194028440775'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8504592/posts/default/114775194028440775'/><link rel='alternate' type='text/html' href='http://blogicblog.blogspot.com/2006/05/javaone-day-0-issues-sun-will-do.html' title='JavaOne day 0 - the issues Sun will do nothing about'/><author><name>BlogicBlogger</name><uri>http://www.blogger.com/profile/02931775813348618827</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8504592.post-114683250865679732</id><published>2006-05-05T08:32:00.000-04:00</published><updated>2006-05-05T08:35:08.666-04:00</updated><title type='text'>Link: Nice port and network services search engine</title><content type='html'>&lt;a href="http://www.ports-services.com/"&gt;Ports-Services&lt;/a&gt; is a useful service to identify what might be listening on a particular port or what port should particular (well-known) service listen to.&lt;br /&gt;&lt;br /&gt;It has some java related ports (RMI, Jini).&lt;br /&gt;&lt;br /&gt;It also has trojan listings for the ports and it is a bit scary to see the useful service entries completely overshadowed by the huge number of various malware.&lt;br /&gt;&lt;br /&gt;BlogicBlogger Over and Out&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8504592-114683250865679732?l=blogicblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://www.ports-services.com/' title='Link: Nice port and network services search engine'/><link rel='replies' type='application/atom+xml' href='http://blogicblog.blogspot.com/feeds/114683250865679732/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8504592&amp;postID=114683250865679732&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8504592/posts/default/114683250865679732'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8504592/posts/default/114683250865679732'/><link rel='alternate' type='text/html' href='http://blogicblog.blogspot.com/2006/05/link-nice-port-and-network-services.html' title='Link: Nice port and network services search engine'/><author><name>BlogicBlogger</name><uri>http://www.blogger.com/profile/02931775813348618827</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8504592.post-114652993141336617</id><published>2006-05-01T20:12:00.000-04:00</published><updated>2006-05-01T20:32:15.766-04:00</updated><title type='text'>My talk made the top 10 suggestions for JavaOne 2006 Tools</title><content type='html'>Dana Nourie lists &lt;a href="http://java.sun.com/developer/technicalArticles/JavaOne2006/tools_top10.html"&gt;10 presentations in tools space&lt;/a&gt; that she thinks are worth seeing at JavaOne 2006. My own presentation is there as well (number 7). Guess it struck the chord. &lt;br /&gt;&lt;br /&gt;I also have 240+ people booked for my session as of now. No way to tell if that is many or not enough for this stage. But if any of those 240+ are reading this blog, are there any questions on what you would like to know about? While the slides are locked, the Q&amp;A and closing comments are still flexible.&lt;br /&gt;&lt;br /&gt;BlogicBlogger Over and Out&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8504592-114652993141336617?l=blogicblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blogicblog.blogspot.com/feeds/114652993141336617/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8504592&amp;postID=114652993141336617&amp;isPopup=true' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8504592/posts/default/114652993141336617'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8504592/posts/default/114652993141336617'/><link rel='alternate' type='text/html' href='http://blogicblog.blogspot.com/2006/05/my-talk-made-top-10-suggestions-for.html' title='My talk made the top 10 suggestions for JavaOne 2006 Tools'/><author><name>BlogicBlogger</name><uri>http://www.blogger.com/profile/02931775813348618827</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8504592.post-114637557054089477</id><published>2006-04-30T01:16:00.000-04:00</published><updated>2006-04-30T01:39:30.603-04:00</updated><title type='text'>Ethereal (network protocol analyzer) 0.99 is out</title><content type='html'>&lt;a href="http://www.ethereal.com/"&gt;Ethereal&lt;/a&gt; is a tool &lt;a href="http://blogicblog.blogspot.com/2005/07/re-open-source-applications-for-it.html"&gt;I always use&lt;/a&gt; when I have any kind of network related problems. Be it a firewall dropping packets, a server that incorrectly sets cookies or even an overly clever application that &lt;a href="http://blogicblog.blogspot.com/2006/02/techie-way-of-liberating-podcast-url.html"&gt;tries to obscure&lt;/a&gt; the exact network resources it uses. Ethereal collects that network data all the way up and down the network stack and all the way into file formats, such as GIFs and XML. And it allows to filter on any of the fields it understand.&lt;br /&gt;&lt;br /&gt;Usually Ethereal is updated every couple of months or so, but this time it was nearly 4 months. But the wait was worth it. They fixed a number of problems, made Windows experience just that tiny bit nicer and started to integrate a real scripting engine. They chose &lt;a href="http://www.lua.org/"&gt;Lua&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;This last one is a biggie. Ethereal has a lot of capabilities, but people always ask for just one more. Mine was to be able to extract all files of a particular mime-type out of the captured HTTP stream without having to click the payload packets one-by-one.&lt;br /&gt;&lt;br /&gt;I have not looked in details yet, but from the example given it looks like it can plug into the menus and have a full interface presence as well as low-level procedure hooks.&lt;br /&gt;&lt;br /&gt;Even with Lua being only an experimental addition, I really like the direction Ethereal team is taking. I only wish they actually explained the changed them made to the protocols. It is always nice to see more and more features in the HTTP dissector, but it would be nice not to have to actively hunt for them.&lt;br /&gt;&lt;br /&gt;BlogicBlogger Over and Out&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8504592-114637557054089477?l=blogicblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blogicblog.blogspot.com/feeds/114637557054089477/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8504592&amp;postID=114637557054089477&amp;isPopup=true' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8504592/posts/default/114637557054089477'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8504592/posts/default/114637557054089477'/><link rel='alternate' type='text/html' href='http://blogicblog.blogspot.com/2006/04/ethereal-network-protocol-analyzer-099.html' title='Ethereal (network protocol analyzer) 0.99 is out'/><author><name>BlogicBlogger</name><uri>http://www.blogger.com/profile/02931775813348618827</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8504592.post-114503155759734979</id><published>2006-04-14T11:45:00.000-04:00</published><updated>2006-04-14T12:19:19.676-04:00</updated><title type='text'>The Art of _Technical_ Customer Service</title><content type='html'>Guy Kawasaki writes about &lt;a href="http://blog.guykawasaki.com/2006/04/the_art_of_cust.html"&gt;the art of customer service&lt;/a&gt;. While all of the points are applicable, he did not take the one about integrating customer service into the mainstream far enough.&lt;br /&gt;&lt;br /&gt;He talks that customer service people receiving accolades as much as sales, engineering and marketing. That's great. But what about actively helping them to do their jobs better. Sales have fancy tools to track customers' pipelines, marketing get party budgets, engineers get multiple-monitors and fancy tech toys. Support is lucky if they get headsets that do not suck.&lt;br /&gt;&lt;br /&gt;So, what can be done to increase the productivity for &lt;span style="font-weight:bold;"&gt;technical&lt;/span&gt; support people?&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt; Are all communications with customers logged with specific cases? Usually this is true. But does that case tracking system allows to have files/attachment linked to it? Does it have web view so that both customer and the support engineer have a common history to discuss if the issue gets hairy? Does the case tracking system records every email sent out to the customer or is it an extra burden to record what's happening?&lt;br /&gt;&lt;li&gt; Are there tools/training that would make common tasks easier? For example, what text editor is being used to look at all those log files? Notepad? Shareware textpad? Or has someone actually introduced a feature rich editor (&lt;a href="http://blogicblog.blogspot.com/2004/09/fitting-first-post-i-love-vim.html"&gt;I like Vim&lt;/a&gt;) and trained people in how to use it.&lt;br /&gt;&lt;li&gt; Is there a backchannel from support to engineering and/or customer service advocate? This one is extremely important, as there are many things engineers do not have time to think of when the product is rolled out or updated. Small things like visible versioning of release and patches, like locations and types of configuration and log files, like whether the log files produced by the application miss &lt;a href="http://blogicblog.blogspot.com/2004/11/link-dos-and-donts-of-logging.html"&gt;correlation information&lt;/a&gt; such as thread id. Similarly, is there a checklist from support to engineering, QA and doc groups on what kind of things the product needs to have/explain so the new functionality is immediately supportable.&lt;br /&gt;&lt;li&gt; Is there a communication forum (mailing list, IM group, wiki) for the support people, especially if they span multiple locations? Given enough pain, support groups will collect the knowledge themselves, but it will be delayed, fragmented and not universal. &lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;These things taken together are a pie in the sky, but each one individually is actually within an easy reach with a strong return on investment. &lt;a href="http://blogicblog.blogspot.com/2006/04/i-am-now-on-javaones-eventconnect-tool.html"&gt;I am presenting at JavaONE this year&lt;/a&gt; on a similar topic, so if anybody is interested to chat with me about it, I would be happy to meet.&lt;br /&gt;&lt;br /&gt;BlogicBlogger Over and Out&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8504592-114503155759734979?l=blogicblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blogicblog.blogspot.com/feeds/114503155759734979/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8504592&amp;postID=114503155759734979&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8504592/posts/default/114503155759734979'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8504592/posts/default/114503155759734979'/><link rel='alternate' type='text/html' href='http://blogicblog.blogspot.com/2006/04/art-of-technical-customer-service.html' title='The Art of _Technical_ Customer Service'/><author><name>BlogicBlogger</name><uri>http://www.blogger.com/profile/02931775813348618827</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8504592.post-114433917292889776</id><published>2006-04-06T11:38:00.000-04:00</published><updated>2006-04-06T11:59:32.993-04:00</updated><title type='text'>Thread: More data, more tools or more answers?</title><content type='html'>&lt;a href="http://blogicblog.blogspot.com/2006/02/quoted-but-misunderstood-whats-missing.html"&gt;One of my conversations&lt;/a&gt; was &lt;a href="http://blogs.ittoolbox.com/security/anton/archives/008608.asp"&gt;commented on&lt;/a&gt; by &lt;span class="authorLink"&gt;&lt;/span&gt;Dr Anton Chuvakin. I had replied to him in his comments, but unfortunately he keeps reposting the article to new services without bothering to address the reply, so I am putting it here as a central reference.&lt;br /&gt;&lt;br /&gt;Basically, Anton (if I may call him this) thinks that the universe of choices around log file discussion is not just&lt;br /&gt;1. More data&lt;br /&gt;2. Better formatted data&lt;br /&gt;3. More tools to mangle the data&lt;br /&gt;&lt;br /&gt;But must also: include&lt;br /&gt;4. More answers to their issues-of-the-moment&lt;br /&gt;&lt;br /&gt;He favours the last point much stronger than others and says:&lt;br /&gt;&lt;blockquote&gt;Thus, I think the focus should be on more intelligence and giving answers, not tools.&lt;/blockquote&gt;I happen to think that while his 4th point is great, it is not a concrete, actionable step forward and therefore does not really help the discussion.&lt;br /&gt;Specifically (from my original comment):&lt;br /&gt;&lt;blockquote&gt;...The whole point of tech support is that the answer is not easy to find. Certainly on the 2nd/3rd level of support it is so.&lt;br /&gt;&lt;br /&gt;Therefore, what you instead get is a lot of data that _probably_ can lead one to the answer. Unfortunately, if the data is not coherent (parsable, timestamped, thread-stampted, etc), it is next to impossible to find the answer even if one is known to exist.&lt;br /&gt;&lt;br /&gt;One of the real examples I had was trying to prove that a particular access did _not_ happen based on 2 Gigabytes of badly formatted, mismatched log files. I have managed to do that but only because I wrote some tools for the task. And even with the tools, it was still up to me to interpret the results correctly and explain them to the customer.&lt;br /&gt;&lt;br /&gt;In summary, your fourth point is a goal, while first 3 are possible ways of getting there. Just asking for that 'give answers' solution is like looking for silver bullet.&lt;br /&gt;&lt;/blockquote&gt;I would love Anton to comment on this specifically. Maybe he can give a concrete support to his point, as &lt;a href="http://blogicblog.blogspot.com/2004/11/link-dos-and-donts-of-logging.html"&gt;I did before&lt;/a&gt; for the point 2).&lt;br /&gt;&lt;br /&gt;BlogicBlogger Over and Out&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8504592-114433917292889776?l=blogicblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blogicblog.blogspot.com/feeds/114433917292889776/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8504592&amp;postID=114433917292889776&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8504592/posts/default/114433917292889776'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8504592/posts/default/114433917292889776'/><link rel='alternate' type='text/html' href='http://blogicblog.blogspot.com/2006/04/thread-more-data-more-tools-or-more.html' title='Thread: More data, more tools or more answers?'/><author><name>BlogicBlogger</name><uri>http://www.blogger.com/profile/02931775813348618827</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8504592.post-114400286635816328</id><published>2006-04-02T14:08:00.000-04:00</published><updated>2006-04-02T14:34:26.450-04:00</updated><title type='text'>I am now on JavaOne's EventConnect tool</title><content type='html'>&lt;a href="http://blogicblog.blogspot.com/2006/01/i-am-presenting-at-javaone-2006.html"&gt;I am presenting at JavaOne&lt;/a&gt; again this year, My session is TS-1669                         entitled "                                            Unhappily ever after: support, maintenance and troubleshooting of Java applications in production environments                        "&lt;br /&gt;&lt;br /&gt;It covers more topics than the one &lt;a href="http://developers.sun.com/learning/javaoneonline/2004/newcooltech/TS-1646.html"&gt;I did in 2004&lt;/a&gt;. It also seems to have been marked as more interesting by Sun. Last time I remember having about 300 people in the room. This time, the earmarked room is for 700 people. I will believe it when I see it. I think they might change it once they had a chance to compare all the presentations.&lt;br /&gt;&lt;br /&gt;In any case, I will be happy to push the message out to however many people will show up. But if I catch the interest of any techie managers having to provide technical support for Java applications in the field, I will be &lt;span style="font-weight: bold;"&gt;very&lt;/span&gt; happy. I think there is not enough thought put into making technical aspects of support easy. There are some low-hanging fruits out there for the taking with the results better for &lt;span style="font-weight: bold;"&gt;both&lt;/span&gt; support and developer side of the problem solving proces.&lt;br /&gt;&lt;br /&gt;If anybody is coming to JavaOne, &lt;a href="http://javaone.leveragesoftware.com/profile_view.lev?customerid=arafalov"&gt;I am now on the Event Connect&lt;/a&gt; tool and will welcome the introduction/meet requests.&lt;br /&gt;&lt;br /&gt;BlogicBlogger Over and Out&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8504592-114400286635816328?l=blogicblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blogicblog.blogspot.com/feeds/114400286635816328/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8504592&amp;postID=114400286635816328&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8504592/posts/default/114400286635816328'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8504592/posts/default/114400286635816328'/><link rel='alternate' type='text/html' href='http://blogicblog.blogspot.com/2006/04/i-am-now-on-javaones-eventconnect-tool.html' title='I am now on JavaOne&apos;s EventConnect tool'/><author><name>BlogicBlogger</name><uri>http://www.blogger.com/profile/02931775813348618827</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8504592.post-114307966048012679</id><published>2006-03-22T20:55:00.000-05:00</published><updated>2006-03-22T21:07:40.493-05:00</updated><title type='text'>Why I prefer Andrew C. Oliver to write 'drab' articles</title><content type='html'>Andrew is &lt;a href="http://linuxintegrators.com/acoliver/code/?permalink=x-0206.html"&gt;confused&lt;/a&gt; why his 'drab' article on &lt;a href="http://jboss.org/jbossBlog/blog/acoliver/2006/03/21/If_you_dont_do_this_JBoss_will_run_really_slowly.txt"&gt;speeding up JBoss&lt;/a&gt; is much more popular than his repost of a deep voodoo article asking other people to implement someting that he finds interesting. I wonder!&lt;br /&gt;&lt;br /&gt;&lt;a href="http://digg.com/programming/If_you_don_t_do_this_JBoss_will_run_really_slowly"&gt;I have linked&lt;/a&gt; to the speeding up article when I saw it, because it was something useful either immediately or later if I do have strange slow-downs/memory issues to troubleshoot. It (as I mentioned originally) was also useful beyond JBoss and I knew that because I had to explain the same issues to the customers using Weblogic.&lt;br /&gt;&lt;br /&gt;His other article seems to requite much more thought and a deeper involvement. Maybe one day I will have free time and skills to understand that article as I am sure it deserves to be. But probably not soon.&lt;br /&gt;&lt;br /&gt;P.s. I am not vain enough to think that my opinion really deserves a full blog entry (and I saw the article from JavaBlogs' pupular list anyway); it is just that he doesn't have the comments enabled.....&lt;br /&gt;&lt;br /&gt;BlogicBlogger Over and Out&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8504592-114307966048012679?l=blogicblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blogicblog.blogspot.com/feeds/114307966048012679/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8504592&amp;postID=114307966048012679&amp;isPopup=true' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8504592/posts/default/114307966048012679'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8504592/posts/default/114307966048012679'/><link rel='alternate' type='text/html' href='http://blogicblog.blogspot.com/2006/03/why-i-prefer-andrew-c-oliver-to-write.html' title='Why I prefer Andrew C. Oliver to write &apos;drab&apos; articles'/><author><name>BlogicBlogger</name><uri>http://www.blogger.com/profile/02931775813348618827</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8504592.post-114307856121082612</id><published>2006-03-22T19:55:00.000-05:00</published><updated>2006-03-22T20:49:21.263-05:00</updated><title type='text'>Oh Tomcat of the multiple conflicting ports!</title><content type='html'>Ever tried running multiple Tomcat on the same machine and have that fail because of the port conflict. And not because of the HTTP listen port conflict - because you did know about that one and changed it. But, rather, because of the other ports that are open out of the box as well that even Tomcat's documentation does not mention.&lt;br /&gt;&lt;br /&gt;So, turns out that Tomcat 5, has 3 ports open and what interesting ports they are:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;8080 - that's the one they tell you about and it is where all the normal HTTP traffic goes to&lt;/li&gt;&lt;li&gt;8009 - that's &lt;a href="http://tomcat.apache.org/tomcat-5.5-doc/connectors.html"&gt;an AJP connector&lt;/a&gt; that you need if you are behind a webserver like apache that will pass the requests to you. Why is it on by default, I don't know. You have to configure the webserver side anyway, how difficult would it be to uncomment it at the same time. And if - for whatever reason - you are running Tomcat on its own, you now have another obscure port to worry about as a management hassle or even a possible attack vector.&lt;/li&gt;&lt;li&gt;8005 - This one is interesting. It is binded to the localhost only and it is how you shutdown the tomcat when you run the shutdown script. And to shut it down, all you need to do is telnet to the port and say the magic word, which for tomcat 5.0 is hardcoded at SHUTDOWN and for 5.5 is helpfully kept in the open in the server.xml . You don't even need to be the same account to do this, just a user on the same system. This small issue &lt;a href="http://tomcat.apache.org/faq/security.html#8005"&gt;has been acknowledged&lt;/a&gt; by the Tomcat's team.&lt;/li&gt;&lt;/ol&gt;So, to make this also &lt;a href="http://en.wikiquote.org/wiki/Maimonides"&gt;a fishing lesson rather than a handout of seafood&lt;/a&gt;, here is a generic way to check those ports without having to page down the 19K of semi-commented-out XML.&lt;br /&gt;&lt;br /&gt;The command should be all in one line:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;&lt;a href="http://www.freesoftwaremagazine.com/free_issues/issue_06/xml_starlet/"&gt;...\xmlstarlet-1.0.1\xml&lt;/a&gt;  sel -T -t&lt;br /&gt; -m //*[.//@port]&lt;br /&gt;   -m ancestor::* -o -+ -b&lt;br /&gt;   -v local-name()&lt;br /&gt;   -i @port -o : -v @port -b&lt;br /&gt;   -n&lt;br /&gt; server.xml&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;The command line above means: for each element that has an attribute &lt;span style="font-style: italic;"&gt;port&lt;/span&gt; or a child with such an attribute, print the element with offset based on it nesting depth; if this particular element does have the &lt;span style="font-style: italic;"&gt;port&lt;/span&gt; attribute, print the port value as well.&lt;br /&gt;&lt;br /&gt;The result for the default Tomcat's setup is:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;Server:8005&lt;br /&gt;-+Service&lt;br /&gt;-+-+Connector:8080&lt;br /&gt;-+-+Connector:8009&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;BlogicBlogger Over and Out&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8504592-114307856121082612?l=blogicblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blogicblog.blogspot.com/feeds/114307856121082612/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8504592&amp;postID=114307856121082612&amp;isPopup=true' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8504592/posts/default/114307856121082612'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8504592/posts/default/114307856121082612'/><link rel='alternate' type='text/html' href='http://blogicblog.blogspot.com/2006/03/oh-tomcat-of-multiple-conflicting.html' title='Oh Tomcat of the multiple conflicting ports!'/><author><name>BlogicBlogger</name><uri>http://www.blogger.com/profile/02931775813348618827</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8504592.post-114290794012726113</id><published>2006-03-20T20:53:00.000-05:00</published><updated>2006-03-20T21:25:40.190-05:00</updated><title type='text'>Review: Log4j Chainsaw v2</title><content type='html'>Recently, I had been contacted by one of the &lt;a href="http://logging.apache.org/log4j/docs/chainsaw.html"&gt;Chainsaw&lt;/a&gt;'s developers - Scott Deboy (no blog &lt;span style="font-weight: bold;"&gt;yet&lt;/span&gt;). He asked if I had any feedback on the tool's new iteration as it would seem to be a good match to my interests and blog's goal.&lt;br /&gt;&lt;br /&gt;I had looked at the Chainsaw a while ago, but it was not quite up to scratch then. Looking at it again, the tool feels much better and if you have to look at the log files, I strongly recommend to check it out (and/or &lt;a href="http://blogicblog.blogspot.com/2006/02/quoted-but-misunderstood-whats-missing.html"&gt;Splunk&lt;/a&gt;).&lt;br /&gt;&lt;br /&gt;Initially, Chainsaw may feel a little forbidding due to a large feature set. But as with other strong tools, such as &lt;a href="http://blogicblog.blogspot.com/2005/07/re-open-source-applications-for-it.html"&gt;Ethereal and XMLStarlet&lt;/a&gt;, if you have to deal with the problem space repeatedly, these tools make it worth your while. And all of those features are actually useful and come from attacking real problems. This is quite a different feel to some of the vendors' tools which look shiny, but fail in real use.&lt;br /&gt;&lt;br /&gt;I do however have some gripes that I feel would make troubleshooting much faster if resolved. Most of them are around (otherwise great) highlighting and expression facilities.&lt;br /&gt;&lt;ol&gt;&lt;li&gt;For the fields that take an expression, it would be good to see whether the expression typed in so far is correct. Ethereal does this quite nicely. Expression builder is good for beginners, but immediate correctness feedback would be useful for those that are more advanced.&lt;/li&gt;&lt;li&gt;It would be good to have the highlight rules available as a view/pane. In Vim (with &lt;a href="http://blogicblog.blogspot.com/2004/09/fitting-first-post-i-love-vim.html"&gt;OTF script&lt;/a&gt; installed) - I can highlight with as little as &lt;span style="font-weight: bold; font-style: italic;"&gt;:1OTF XYZ&lt;/span&gt; (1-9 is a color index). So, the price of verifying an idea is very quick. I feel both Ethereal and Chainsaw are slightly behind in that respect. In addition, I can highlight multiple elements in a line with different colours. That really helps sometimes. Again, nothing else I have seen allows me to do that.&lt;/li&gt;&lt;li&gt;The expression window for Next/Previous navigation does not seem to have keyboard shortcuts equivalent to the buttons and requires switching hands from the keyboard to the mouse. Having keyboard mapping would be faster. Some other window also did not seem to respond to Enter key and required switching to the mouse, but I did not note which one.&lt;/li&gt;&lt;li&gt;Bookmarking a particular line and ability to come back to it quickly would be great. This feature however is more &lt;span style="font-style: italic;"&gt;nice&lt;/span&gt; than &lt;span style="font-style: italic;"&gt;important&lt;/span&gt;.&lt;br /&gt;&lt;/li&gt;&lt;/ol&gt;So in summary, &lt;a href="http://logging.apache.org/log4j/docs/chainsaw.html"&gt;Chainsaw&lt;/a&gt; is very nice, but still with some room to grow.&lt;br /&gt;&lt;br /&gt;BlogicBlogger Over and Out&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8504592-114290794012726113?l=blogicblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blogicblog.blogspot.com/feeds/114290794012726113/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8504592&amp;postID=114290794012726113&amp;isPopup=true' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8504592/posts/default/114290794012726113'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8504592/posts/default/114290794012726113'/><link rel='alternate' type='text/html' href='http://blogicblog.blogspot.com/2006/03/review-log4j-chainsaw-v2.html' title='Review: Log4j Chainsaw v2'/><author><name>BlogicBlogger</name><uri>http://www.blogger.com/profile/02931775813348618827</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8504592.post-114100345722905192</id><published>2006-02-26T20:12:00.000-05:00</published><updated>2006-02-26T20:24:17.286-05:00</updated><title type='text'>What's in the access log</title><content type='html'>What is a server access log and how much information can one actually extract from it? If you don't know, read this &lt;a href="http://www.timeatlas.com/mos/The_News/Security/Annual_Report_on_Your_Data_and_our_Server_Logs/"&gt;good introductory article&lt;/a&gt; on the subject.&lt;br /&gt;&lt;br /&gt;And if you find the article interesting, look for other logs your server/application produces. The easiest way to find out what log files you have is to run &lt;a href="http://www.sysinternals.com/Utilities/ProcessExplorer.html"&gt;ProcessExplorer&lt;/a&gt; on Windows or &lt;a href="http://freshmeat.net/projects/lsof/"&gt;lsof&lt;/a&gt; on *nix and see what .log files the program is keeping open and where. Doing this may also help you to discover where all the disk space is gone.....&lt;br /&gt;&lt;br /&gt;BlogicBlogger Over and Out&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8504592-114100345722905192?l=blogicblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blogicblog.blogspot.com/feeds/114100345722905192/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8504592&amp;postID=114100345722905192&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8504592/posts/default/114100345722905192'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8504592/posts/default/114100345722905192'/><link rel='alternate' type='text/html' href='http://blogicblog.blogspot.com/2006/02/whats-in-access-log.html' title='What&apos;s in the access log'/><author><name>BlogicBlogger</name><uri>http://www.blogger.com/profile/02931775813348618827</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8504592.post-114084689966005816</id><published>2006-02-25T00:54:00.000-05:00</published><updated>2006-02-25T00:54:59.666-05:00</updated><title type='text'>More GraphViz goodness</title><content type='html'>&lt;div xmlns="http://www.w3.org/1999/xhtml"&gt;I wrote about GraphViz &lt;a href="http://blogicblog.blogspot.com/2004/10/power-of-graphviz.html"&gt;before&lt;/a&gt;, but so many new Java projects showed up, that I thought it was worth making an update.&lt;br/&gt;&lt;ol&gt;&lt;li&gt;&lt;a href="http://www.ggtools.net/grand/"&gt;Grand: Ant config file visualizer&lt;/a&gt; that even better than other options I wrote about before.&lt;/li&gt;&lt;li&gt;&lt;a href="http://lightuml.sourceforge.net/"&gt;LightUML&lt;/a&gt;: UML generator from Java classes&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.softwaresecretweapons.com/jspwiki/Wiki.jsp?page=LinguineMaps"&gt;Linguine Maps&lt;/a&gt;: Visualizer library for many types including WSDL, Ant, Hibernate and DTD&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.kirkk.com/main/Main/JarAnalyzer"&gt;JarAnalyzer&lt;/a&gt;: Dependency visualization for jar files (with an &lt;a href="http://jroller.com/page/carlossg?entry=analyzing_jar_dependencies"&gt;independent review&lt;/a&gt;)&lt;br/&gt;&lt;/li&gt;&lt;/ol&gt;If you have anything where A and B point to C and C points to D, &lt;a href="http://www.graphviz.org"&gt;GraphViz&lt;/a&gt; is really worth checking out. &lt;br/&gt;It is not in Java however; if you only look at Java products, check out &lt;a href="http://prefuse.sourceforge.net/"&gt;Prefuse&lt;/a&gt; instead.&lt;br/&gt;&lt;br/&gt;BlogicBlogger Over and Out&lt;br/&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8504592-114084689966005816?l=blogicblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blogicblog.blogspot.com/feeds/114084689966005816/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8504592&amp;postID=114084689966005816&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8504592/posts/default/114084689966005816'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8504592/posts/default/114084689966005816'/><link rel='alternate' type='text/html' href='http://blogicblog.blogspot.com/2006/02/more-graphviz-goodness.html' title='More GraphViz goodness'/><author><name>BlogicBlogger</name><uri>http://www.blogger.com/profile/02931775813348618827</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8504592.post-114020884091923384</id><published>2006-02-17T15:26:00.000-05:00</published><updated>2007-03-15T22:44:11.506-04:00</updated><title type='text'>The good and bad of outsourcing to Russia</title><content type='html'>Yakov Fain writes (from experience) about good and bad aspects of &lt;a href="http://yakovfain.javadevelopersjournal.com/russian_programmers.htm"&gt;Russian programmers for outsourcing&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;I left Russia well before American companies thought of trusting russian (or indian) programmers. But I remember the software and ingenious hacks written back then by my friends to work with limited computing resources available. I participated in programming competitions and summer camps, where school kids learned and applied concepts that are only taught on advanced level of university education in other countries.&lt;br /&gt;&lt;br /&gt;To this day, I claim to have gone through two different schools of programming. One is Russian and one is Australian. And you shouldn't have to guess (after this article), which one I feel had given me a stronger grounding in what I do daily.&lt;br /&gt;&lt;br /&gt;BlogicBlogger Over and Out&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8504592-114020884091923384?l=blogicblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blogicblog.blogspot.com/feeds/114020884091923384/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8504592&amp;postID=114020884091923384&amp;isPopup=true' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8504592/posts/default/114020884091923384'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8504592/posts/default/114020884091923384'/><link rel='alternate' type='text/html' href='http://blogicblog.blogspot.com/2006/02/good-and-bad-of-outsourcing-to-russia.html' title='The good and bad of outsourcing to Russia'/><author><name>BlogicBlogger</name><uri>http://www.blogger.com/profile/02931775813348618827</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8504592.post-114006206288137433</id><published>2006-02-15T22:27:00.000-05:00</published><updated>2006-02-15T22:54:22.966-05:00</updated><title type='text'>Good-bye ProcessExplorer - your license got too strict</title><content type='html'>I used to rave to everybody about how good &lt;a href="http://www.sysinternals.com/Utilities/ProcessExplorer.html"&gt;ProcessExplorer&lt;/a&gt; from Sysinternals was for technical troubleshooting. Oops, I guess I was too loud.&lt;br /&gt;&lt;br /&gt;The &lt;a href="http://www.sysinternals.com/Licensing.html"&gt;new license terms&lt;/a&gt; state:&lt;br /&gt;&lt;p&gt;&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;A commercial license is required to use the software in any way not covered above, including for example:  &lt;/p&gt;     &lt;ul&gt;&lt;li&gt;Use of the software for technical support on customer computers&lt;/li&gt;&lt;/ul&gt;&lt;/blockquote&gt;This license does appear in ProcessExplorer 10.05. The license is not yet in my other favourite tool (FileMon), but I assume it will get rolled out with the next release.&lt;br /&gt;&lt;br /&gt;This may still allow users to download and install the product themselves, but even that seems to violate the spirit if not the letter of the license.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://blogicblog.blogspot.com/2006/01/i-am-presenting-at-javaone-2006.html"&gt;I was going to present at JavaOne&lt;/a&gt; with very strong emphasis on the tools from Sysinternals, but now I may have to rewrite that presentation.&lt;br /&gt;&lt;br /&gt;I can understand that the company wants to drive the customers towards their commercial offerings, but it is still sad to suddenly be able to do &lt;span style="font-weight: bold;"&gt;less&lt;/span&gt; rather than more with the new release.&lt;br /&gt;&lt;br /&gt;BlogicBlogger Over and Out&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8504592-114006206288137433?l=blogicblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blogicblog.blogspot.com/feeds/114006206288137433/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8504592&amp;postID=114006206288137433&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8504592/posts/default/114006206288137433'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8504592/posts/default/114006206288137433'/><link rel='alternate' type='text/html' href='http://blogicblog.blogspot.com/2006/02/good-bye-processexplorer-your-license.html' title='Good-bye ProcessExplorer - your license got too strict'/><author><name>BlogicBlogger</name><uri>http://www.blogger.com/profile/02931775813348618827</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8504592.post-113997335147910236</id><published>2006-02-14T22:07:00.000-05:00</published><updated>2006-02-14T22:39:55.693-05:00</updated><title type='text'>Re: Guerrilla Debugging For Java</title><content type='html'>Russ Olsen (via &lt;a href="http://weblog.infoworld.com/ittroubleshooter/archives/2006/02/debugging_versu.html"&gt;&lt;span class="artText"&gt;&lt;span class="posted"&gt;Michael Baum&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;) &lt;a href="http://jroller.com/page/rolsen?entry=guerrilla_debugging_for_java"&gt;writes about tools&lt;/a&gt; to use in production, when ones does not have access to tools. Specifically, when one does not have access to tools like Eclipse IDE.&lt;br /&gt;&lt;br /&gt;He mentions a good list of tools, though he has a bit too much praise about Strace. To quote:&lt;br /&gt;&lt;blockquote&gt;Ever wonder why your program can‘t open that one file? Use strace to find out precisely which file it is trying to open and the exact identity of the error. Does your program simply go into a trance and stop responding? There is a fair chance that you will find out why with strace. Clueless as to why your webapp is leaking memory? Strace may supply the clue.&lt;br /&gt;&lt;blockquote&gt;&lt;/blockquote&gt;&lt;/blockquote&gt;In reality, there are much better tools to use for those task. At least on windows, &lt;a href="http://www.sysinternals.com/Utilities/Filemon.html"&gt;FileMon&lt;/a&gt; is a much better tool to check which files are being opened and &lt;a href="http://www.sysinternals.com/Utilities/Handle.html"&gt;&lt;/a&gt;&lt;a href="http://www.sysinternals.com/Utilities/Handle.html"&gt;Handle&lt;/a&gt; is great for checking which process locks what files (&lt;a href="http://freshmeat.net/projects/lsof/"&gt;lsof&lt;/a&gt; does that for Unix). Thread dumps analysis (&lt;a href="http://dev.bea.com/products/wlplatform81/articles/thread_dumps.jsp"&gt;my tool&lt;/a&gt;) is better for checking what's hanging. And &lt;a href="http://www.ethereal.com/"&gt;Ethereal&lt;/a&gt; is a must for any network troubleshooting.&lt;br /&gt;&lt;br /&gt;But the general point is strong. And the section about BeanShell was something I haven't thought of before. Very good summary article.&lt;br /&gt;&lt;br /&gt;BlogicBlogger Over and Out&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8504592-113997335147910236?l=blogicblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blogicblog.blogspot.com/feeds/113997335147910236/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8504592&amp;postID=113997335147910236&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8504592/posts/default/113997335147910236'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8504592/posts/default/113997335147910236'/><link rel='alternate' type='text/html' href='http://blogicblog.blogspot.com/2006/02/re-guerrilla-debugging-for-java.html' title='Re: Guerrilla Debugging For Java'/><author><name>BlogicBlogger</name><uri>http://www.blogger.com/profile/02931775813348618827</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8504592.post-113936879033400670</id><published>2006-02-07T21:49:00.000-05:00</published><updated>2006-02-15T20:59:57.376-05:00</updated><title type='text'>Quoted, but misunderstood: What's Missing from Production System Troubleshooting</title><content type='html'>&lt;span class="artText"&gt;&lt;span class="posted"&gt;Michael Baum &lt;a href="http://weblog.infoworld.com/ittroubleshooter/archives/2006/02/whats_missing_f.html"&gt;quotes&lt;/a&gt;  &lt;a href="http://blogicblog.blogspot.com/2006/02/re-how-hard-is-it-to-troubleshoot-it.html"&gt;my feedback&lt;/a&gt; on &lt;a href="http://weblog.infoworld.com/ittroubleshooter/archives/2006/02/so_how_hard_is.html"&gt;his survey article&lt;/a&gt;, but completely misses that we actually want the same thing.  We just approach it from different angles.&lt;br /&gt;&lt;br /&gt;To get to the (misunderstood) point:&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="artText"&gt;&lt;span class="artText"&gt;&lt;blockquote&gt;The notion that IT people need even more data generated by developers kinda misses the point. Troubleshooting production applications is a whole lot different that debugging code in development or staging environments. Production systems involve many technologies and systems that just don't appear in pre-production environments.&lt;br /&gt;&lt;/blockquote&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="artText"&gt;&lt;span class="posted"&gt;I do not ask for more data, I ask that the data format currently being used is reviewed to see whether it is actually useful for troubleshooting/monitoring and that concerned effort is made to change the format where it proves not to be useful.&lt;br /&gt;&lt;br /&gt;For example, any messages produced by multithreaded services &lt;span style="font-weight: bold;"&gt;must&lt;/span&gt; include thread/transaction id in them. Trying to extract sequence out of the logs that just intermingle their log entries is next to impossible. Same problem with having timestamps in a format that does not allow to correlate to other log types.&lt;br /&gt;&lt;br /&gt;My point was that developer would not see this kind of issues, until they have to do the troubleshooting themselves. Then, they might be more amenable to pleas for better logging formats.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="artText"&gt;&lt;span class="posted"&gt;And yes, I did spend 3 years as technical support engineer for BEA looking at the multi-megabyte (sometimes multi-gigabyte) log files for people whose configuration I did not know 30 minutes earlier. So, I believe I did have to deal with the issues Michael have seen at Yahoo and at Splunk too. In fact, &lt;a href="http://blogicblog.blogspot.com/2006/01/i-am-presenting-at-javaone-2006.html"&gt;I will be delivering JavaOne presentation&lt;/a&gt; about this very issue this year.&lt;br /&gt;&lt;br /&gt;Speaking of &lt;a href="http://www.splunk.com"&gt;Splunk&lt;/a&gt;, it is a great idea and a step in a right direction (&lt;a href="http://blogicblog.blogspot.com/2005/07/discussion-how-should-applications-log.html"&gt;as I wrote was&lt;/a&gt; 9 months ago). I could see how it would have been useful to me when dealing with large data sets.&lt;br /&gt;&lt;br /&gt;Unfortunately, it is only a first step; to replace my advanced troubleshooting environment (&lt;a href="http://blogicblog.blogspot.com/2004/09/fitting-first-post-i-love-vim.html"&gt;*cough* Vim *cough*&lt;/a&gt;), I would need to at least be able highlight several patterns at the same time in different colors (e.g. IP address, time sequence &lt;span style="font-style: italic;"&gt;and&lt;/span&gt; URL type).&lt;br /&gt;&lt;br /&gt;But I will be evaluating Splunk in more details and probably will be mentioning it in my presentation at JavaOne. Especially, if it will be downloadable as VMWare image to try under Windows environment.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="artText"&gt;&lt;span class="posted"&gt;(Update from Feb 14th: &lt;a href="http://weblog.infoworld.com/ittroubleshooter/archives/2006/02/mia_culpa_quote.html"&gt;we are on the same page now&lt;/a&gt;)&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;BlogicBlogger Over and Out&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8504592-113936879033400670?l=blogicblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blogicblog.blogspot.com/feeds/113936879033400670/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8504592&amp;postID=113936879033400670&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8504592/posts/default/113936879033400670'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8504592/posts/default/113936879033400670'/><link rel='alternate' type='text/html' href='http://blogicblog.blogspot.com/2006/02/quoted-but-misunderstood-whats-missing.html' title='Quoted, but misunderstood: What&apos;s Missing from Production System Troubleshooting'/><author><name>BlogicBlogger</name><uri>http://www.blogger.com/profile/02931775813348618827</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8504592.post-113929404381073883</id><published>2006-02-07T01:21:00.000-05:00</published><updated>2006-02-07T01:34:03.820-05:00</updated><title type='text'>Gmail and the periodic spam filtering failure</title><content type='html'>Gmail is usually pretty good about spam filtering. But not at the moment. As of the last 2 or 3 days, the spam I know it caught before is now ending up in my mailbox. And I think I know why.&lt;br /&gt;&lt;br /&gt;The same thing happened over Christmas. Suddenly all the spam appeared in my inbox. I had a theory then and it seems to be confirmed now.&lt;br /&gt;&lt;br /&gt;I think Gmail team drops their filtering level around big celebrations (Valentine's day is coming up). Around these events, people send to each other &lt;a href="http://www.theonion.com/content/node/43960"&gt;emails that differ from their normal day to day activities&lt;/a&gt; (warning: humour). It is very possible that normal Gmail's algorithms would treat celebratory emails as spam and people would end up loosing messages.&lt;br /&gt;&lt;br /&gt;So, to avoid classifying good emails as spam, Gmail team drop the filtering level. That in turn makes some spam emails look normal which annoys people in a different (more habitual and therefore less important) way.&lt;br /&gt;&lt;br /&gt;I hope this is not the case and that I am just observing some fixable glitches, but this is the second time now and therefore is a coincidence (up from the chance). If it happens again around may (mother's day), I would think I have a full blown theory.&lt;br /&gt;&lt;br /&gt;Oh and any Gmail engineer is more than welcome to comment. :-)&lt;br /&gt;&lt;br /&gt;BlogicBlogger Over and Out&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8504592-113929404381073883?l=blogicblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blogicblog.blogspot.com/feeds/113929404381073883/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8504592&amp;postID=113929404381073883&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8504592/posts/default/113929404381073883'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8504592/posts/default/113929404381073883'/><link rel='alternate' type='text/html' href='http://blogicblog.blogspot.com/2006/02/gmail-and-periodic-spam-filtering.html' title='Gmail and the periodic spam filtering failure'/><author><name>BlogicBlogger</name><uri>http://www.blogger.com/profile/02931775813348618827</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8504592.post-113899037194810390</id><published>2006-02-03T12:48:00.000-05:00</published><updated>2006-02-03T13:16:58.773-05:00</updated><title type='text'>The techie way of liberating the podcast URL from iTunes</title><content type='html'>&lt;a href="http://weblog.infoworld.com/udell/2006/02/03.html#a1381"&gt;Jon Udell is not happy&lt;/a&gt; about having to transcribe podcast URLs that iTunes displays, but does not allow to copy. While the general point about lock-in is good, here is a quick techie workaround in a meanwhile.&lt;br /&gt;&lt;br /&gt;However much iTunes may want to hide the URLs, at some point it has to actually retrieve something from it, and do it using standard network protocol.&lt;br /&gt;&lt;br /&gt;Enter &lt;a href="http://www.ethereal.com/"&gt;Ethereal&lt;/a&gt;, open-source multi-platform network protocol analyser. Using it to get the URL is a serious overkill, but the tool itself comes useful over and over again in many situations.&lt;br /&gt;&lt;br /&gt;The steps to snag the URL are:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;With iTunes already open, start Ethereal up and run capture in non-promiscuous mode with 'tcp' as the filter.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Go to iTunes and do 'Update podcast' on the podcast you want.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Let the update happen and stop the Ethereal capture. You should now have a lot of packets in the Ethereal's view.&lt;br /&gt;&lt;/li&gt;&lt;li&gt; In the filter section (this is different filter from before) enter: &lt;strong&gt;http.request.uri contains "xml" .&lt;/strong&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt; This should show only the packets that are http requests for files with xml in their name. If nothing shows up, try &lt;strong&gt;http.request.method&lt;/strong&gt; as filter. If there is still problem, try &lt;strong&gt;http&lt;/strong&gt; and see if you have any traffic on the chosen interface at all.&lt;br /&gt;&lt;/li&gt;&lt;li&gt; Assuming you finally have the right request, you now do right-click-menu/Follow TCP Stream and copy the URI and host from there.&lt;br /&gt;&lt;/li&gt;&lt;li&gt; You are done. It sounds a bit long, but takes about 30 seconds after installation is done and correct interfaces are figured out.&lt;br /&gt;&lt;/li&gt; &lt;/ol&gt;For more advanced HTTP work, it is also worth going to the preferences for Ethereal and make sure that packet reassembly is enabled for all levels of the network stack (HTTP, TCP, IP).&lt;br /&gt;&lt;br /&gt;BlogicBlogger Over and Out&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8504592-113899037194810390?l=blogicblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blogicblog.blogspot.com/feeds/113899037194810390/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8504592&amp;postID=113899037194810390&amp;isPopup=true' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8504592/posts/default/113899037194810390'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8504592/posts/default/113899037194810390'/><link rel='alternate' type='text/html' href='http://blogicblog.blogspot.com/2006/02/techie-way-of-liberating-podcast-url.html' title='The techie way of liberating the podcast URL from iTunes'/><author><name>BlogicBlogger</name><uri>http://www.blogger.com/profile/02931775813348618827</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8504592.post-113889256139855328</id><published>2006-02-02T09:44:00.000-05:00</published><updated>2006-02-02T10:02:41.463-05:00</updated><title type='text'>Re: How Hard is it to Troubleshoot IT Anyway?</title><content type='html'>&lt;span class="artText"&gt;&lt;span class="posted"&gt;Michael Baum reports on the &lt;a href="http://weblog.infoworld.com/ittroubleshooter/archives/2006/02/so_how_hard_is.html"&gt;survey of system administrators regarding their troubleshooting activities&lt;/a&gt;. It is an interesting summary, but something is missing.&lt;br /&gt;&lt;br /&gt;There seem to be a lot of questions regarding how the problems are handled now with the predictable answers of base power tools like grep, perl and Ethereal. What I don't see is any questions on how to fix the problem going forward.&lt;br /&gt;&lt;br /&gt;By now we pretty much established that until the developers themselves try to support/troubleshoot their own products in production (or get loud enough feedback), they will not understand how to make their products easier to manage post-deployment.&lt;br /&gt;&lt;br /&gt;The surveys of the&lt;span style="font-weight: bold;"&gt; &lt;span style="font-style: italic;"&gt;how do you deal with it now&lt;/span&gt;&lt;/span&gt; kind should always include questions on why commercial solutions are not suitable (usually due to installation/license difficulties) and also what the companies creating the products could do to make things easier in a long run.&lt;br /&gt;&lt;br /&gt;I know some companies slowly do it on their own (e.g. &lt;a href="http://www.sun.com/bigadmin/content/dtrace/"&gt;dTrace&lt;/a&gt; from Sun), but I think, if backed by organisations such as &lt;a href="http://www.lopsa.org/"&gt;LOPSA&lt;/a&gt; or &lt;a href="http://www.naspa.com/"&gt;NaSPA&lt;/a&gt;, the progress might have been faster. After all, by now we have pretty much established that the problems will not go away by themselves, but - if anything - will get worse.&lt;br /&gt;&lt;br /&gt;And if the System Administrators want to join forces with other technical people running into the same problems, they should pay more attention to technical support people as well as to forensic analysts. Both of these groups also have to deal with finding a needle of important information in a mountain of obscure, disjointed, overwhelming data. The progress in the area of forensic analysis tools is especially fast these days, as it is driven by the very high profile security concerns (most of the &lt;a href="http://www.acm.org/pubs/cacm/toc/2006/february_toc.html"&gt;February issue of &lt;span style="font-style: italic;"&gt;Communications of the ACM&lt;/span&gt;&lt;/a&gt; is about this very topic).&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;BlogicBlogger Over and Out&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8504592-113889256139855328?l=blogicblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blogicblog.blogspot.com/feeds/113889256139855328/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8504592&amp;postID=113889256139855328&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8504592/posts/default/113889256139855328'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8504592/posts/default/113889256139855328'/><link rel='alternate' type='text/html' href='http://blogicblog.blogspot.com/2006/02/re-how-hard-is-it-to-troubleshoot-it.html' title='Re: How Hard is it to Troubleshoot IT Anyway?'/><author><name>BlogicBlogger</name><uri>http://www.blogger.com/profile/02931775813348618827</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8504592.post-113876048540642005</id><published>2006-01-31T21:12:00.000-05:00</published><updated>2006-01-31T21:24:42.386-05:00</updated><title type='text'>I am presenting at JavaOne 2006</title><content type='html'>This feels good. Last time I submitted and got accepted to talk at JavaOne (2004), I was working for one of the major sponsors. With all the rumors about too many presenters from Sun and sponsors, it makes one wonder how much of the reason was the presentation quality and how much was some of the other factors.&lt;br /&gt;&lt;br /&gt;These days, I am definitely &lt;span style="font-weight: bold;"&gt;not &lt;/span&gt;working for a sponsor, so hopefully my presentation is due to my topic alone. And the topic is: &lt;span style="font-style: italic;"&gt;Unhappily ever after: support, maintenance and troubleshooting of Java applications in production environments&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;The preliminary outline I have submitted is extremely ambitious, but I hope I can fit it all in, even if not in details. I have talked about many of the issues in the blog already, so that could become useful for back-references.&lt;br /&gt;&lt;br /&gt;I will probably be putting some snippets on the blog as I go along, but if any of you &lt;span style="font-style: italic;"&gt;out there&lt;/span&gt; have strong opinions on what you would like to see in such a presentation, the comments are open.&lt;br /&gt;&lt;br /&gt;BlogicBlogger Over and Out&lt;br /&gt;Technorati tags: &lt;a href="http://technorati.com/tag/javaone" rel="tag"&gt;javaone&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8504592-113876048540642005?l=blogicblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blogicblog.blogspot.com/feeds/113876048540642005/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8504592&amp;postID=113876048540642005&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8504592/posts/default/113876048540642005'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8504592/posts/default/113876048540642005'/><link rel='alternate' type='text/html' href='http://blogicblog.blogspot.com/2006/01/i-am-presenting-at-javaone-2006.html' title='I am presenting at JavaOne 2006'/><author><name>BlogicBlogger</name><uri>http://www.blogger.com/profile/02931775813348618827</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8504592.post-113815749584585166</id><published>2006-01-24T21:43:00.000-05:00</published><updated>2006-01-24T21:51:35.856-05:00</updated><title type='text'>Re: I love when its in Word - you have it easy</title><content type='html'>Andrew C. Oliver &lt;a href="http://linuxintegrators.com/acoliver/rant/?permalink=x-0157.html"&gt;muses&lt;/a&gt; on the need for violence when getting Java stack traces embedded in the MS Word docs. I call his bluff.&lt;br /&gt;&lt;br /&gt;A day, when your MS Word document arrives and you open it to discover &lt;span style="font-weight: bold;"&gt;an image&lt;/span&gt; of the &lt;span style="font-weight: bold;"&gt;DOS window&lt;/span&gt; where &lt;span style="font-weight: bold;"&gt;part of the stack trace&lt;/span&gt; is seen at &lt;span style="font-weight: bold;"&gt;50% zoom&lt;/span&gt;, then you can contemplate violence.&lt;br /&gt;&lt;br /&gt;Until then....&lt;br /&gt;&lt;br /&gt;BlogicBlogger Over and Out&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8504592-113815749584585166?l=blogicblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blogicblog.blogspot.com/feeds/113815749584585166/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8504592&amp;postID=113815749584585166&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8504592/posts/default/113815749584585166'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8504592/posts/default/113815749584585166'/><link rel='alternate' type='text/html' href='http://blogicblog.blogspot.com/2006/01/re-i-love-when-its-in-word-you-have-it.html' title='Re: I love when its in Word - you have it easy'/><author><name>BlogicBlogger</name><uri>http://www.blogger.com/profile/02931775813348618827</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8504592.post-113427669131128004</id><published>2005-12-10T23:41:00.000-05:00</published><updated>2005-12-10T23:51:31.313-05:00</updated><title type='text'>Support aspects of AJAX</title><content type='html'>&lt;a href="http://en.wikipedia.org/wiki/AJAX"&gt;AJAX&lt;/a&gt; has grown up! People starting to wonder what impact AJAX style applications have as compared to the older logic. Some impacts are obviously positive, some not so.&lt;br /&gt;&lt;br /&gt;From the support point of view, AJAX style application may cause more hidden problems due to the granularity of the communications. Specifically, where a single user previously might have made one new server request every 30 seconds after initial load, with AJAX, the same user might be generating a new request every couple of seconds. &lt;br /&gt;&lt;br /&gt;This means that even a server for small userbase will have to be configured and tuned as if the userbase is much higher. I am talking higher workers counts, more potential for bottlenecks, higher log volume.&lt;br /&gt;&lt;br /&gt;And if the userbase was already high or is growing rapidly, the servers may not even be able to deal with it well and may even require a different implementation style. &lt;br /&gt;&lt;br /&gt;Greg Wilkins - who is the author of Jetty HTTP server - has started thinking of it already. &lt;a href="http://www.mortbay.com/MB/log/gregw/?permalink=ScalingConnections.html"&gt;His article about these issues&lt;/a&gt; is well worth a read even if you are using a different server.&lt;br /&gt;&lt;br /&gt;BlogicBlogger Over and Out&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8504592-113427669131128004?l=blogicblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blogicblog.blogspot.com/feeds/113427669131128004/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8504592&amp;postID=113427669131128004&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8504592/posts/default/113427669131128004'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8504592/posts/default/113427669131128004'/><link rel='alternate' type='text/html' href='http://blogicblog.blogspot.com/2005/12/support-aspects-of-ajax.html' title='Support aspects of AJAX'/><author><name>BlogicBlogger</name><uri>http://www.blogger.com/profile/02931775813348618827</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8504592.post-113427606230153149</id><published>2005-12-10T23:37:00.000-05:00</published><updated>2005-12-10T23:41:02.310-05:00</updated><title type='text'>Link: new troubleshooting blog</title><content type='html'>Another troubleshooter decided to speak of his experience. This time it is Michael Baum with an &lt;a href="http://weblog.infoworld.com/ittroubleshooter/"&gt;IT Troubleshooter blog&lt;/a&gt; over at Infoworld.&lt;br /&gt;&lt;br /&gt;The amount of content there is still small, but the ideas sound good to me. If you like what I write, check his blog out as well.&lt;br /&gt;&lt;br /&gt;BlogicBlogger Over and Out&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8504592-113427606230153149?l=blogicblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blogicblog.blogspot.com/feeds/113427606230153149/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8504592&amp;postID=113427606230153149&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8504592/posts/default/113427606230153149'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8504592/posts/default/113427606230153149'/><link rel='alternate' type='text/html' href='http://blogicblog.blogspot.com/2005/12/link-new-troubleshooting-blog.html' title='Link: new troubleshooting blog'/><author><name>BlogicBlogger</name><uri>http://www.blogger.com/profile/02931775813348618827</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8504592.post-112717454228902985</id><published>2005-09-19T19:02:00.000-04:00</published><updated>2005-09-19T20:02:22.366-04:00</updated><title type='text'>My take on "problem solving skills"</title><content type='html'>cynicalman asks &lt;a href="http://blog.geeksmithology.com/?p=78"&gt;what the "problem solving skills" in a job description actually mean&lt;/a&gt; and then tries to discover and blog the answers. &lt;br /&gt; &lt;br /&gt;I do not actually agree that his first discovered rule is actually "a skill" (I think it is more of a test procedure), but the question asked does require a thought. &lt;br /&gt;&lt;br /&gt;I was frequently told that I have good problem solving skills. So, here is my quick take on what those skills are:&lt;br /&gt;&lt;dl&gt;&lt;br /&gt;&lt;dt&gt; Being able to quickly deduce a structure and meaning from the given examples or behaviour&lt;br /&gt;&lt;dd&gt; For example, my co-worker was having a problem with a Fortran program. I haven't seen Fortran before, but was able to figure out the control structure rules on the fly and see where the bug was. Another example would be to take a program with an unfamiliar menu structure (or a familiar Microsoft one) and quickly find where a particular option could be.&lt;br /&gt;&lt;br /&gt;&lt;dt&gt; Knowing how to ask question - of yourself and others - that would partition the problem space&lt;br /&gt;&lt;dd&gt; &lt;em&gt;So, you say the server has crashed?&lt;/em&gt; is not a good question. How about &lt;em&gt;When you say the server crashed, did the program exit completely? If not, was it rather just very slow and/or returned to normal a while later?&lt;/em&gt; It is really a couple of questions here, but the idea is to split the possible problem space into segments and decide which segment to keep working with. Similarly a good question would be: &lt;em&gt;If this was caused by a network problem, how/where/when would it show up? Which log or trace file do I need to check to confirm or reject this?&lt;/em&gt;&lt;br /&gt;&lt;br /&gt;&lt;dt&gt; Knowing how to convert data into information&lt;br /&gt;&lt;dd&gt; Getting a 3 page long java thread dump is a (bad?) luck. Knowing how to read that thread dump to identify what the program was doing at the time and what it was _not_ doing is a problem solving skill. &lt;br /&gt;&lt;br /&gt;&lt;dt&gt; Being able to manipulate large datasets and extract required individual entries&lt;br /&gt;&lt;dd&gt; To me, this covers not being scared by 2GBytes access logs when I search for a problem behaviour pattern. It also covers knowing the tools to slide/dice/reconstruct the data sets. &lt;br /&gt;&lt;br /&gt;&lt;dt&gt; Having a toolkit and knowing it well&lt;br /&gt;&lt;dd&gt; At the moment, my toolkit is &lt;a href="http://blogicblog.blogspot.com/2004/09/fitting-first-post-i-love-vim.html"&gt;Vim with couple of plugins&lt;/a&gt; for editing and RegExp work, &lt;a href="http://blogicblog.blogspot.com/2005/07/re-open-source-applications-for-it.html"&gt;Ethereal&lt;/a&gt; for network, &lt;a href="http://blogicblog.blogspot.com/2004/09/troubleshooting-classnotfoundexception.html"&gt;FileMon&lt;/a&gt;/RegMon/TcpMon from &lt;a href="http://www.sysinternals.com/"&gt;SysInternals&lt;/a&gt; for Windows troubleshooting, &lt;a href="http://blogicblog.blogspot.com/2004/09/xmlstarlet-gentle-introduction-into.html"&gt;XMLStarlet&lt;/a&gt; for XML files, and, of course, Cygwin for its full toolchain. I have also written custom programs, mostly for complex data extraction. Finally, I use &lt;a href="http://blogicblog.blogspot.com/2004/10/power-of-graphviz.html"&gt;GraphViz&lt;/a&gt; for visualization of my extraction results. One of the things that frustrates me most is a person reading a log file in Notepad. What can they do with it except looking at it one line at a time? No highlighting, no place marks, no way to interactively clean it up by regexp deleting some unrelated sections.&lt;br /&gt;&lt;br /&gt;&lt;dt&gt; And, above all, not giving up&lt;br /&gt;&lt;dd&gt; Most of the situations can be troubleshooted successfully. Especially if you can reproduce it, insert trace statements or do other developer level modifications. If you think you hit a &lt;em&gt;writer's block&lt;/em&gt; of troubleshooting, use the same techniques writers do (try anything, switch attention, define next action, etc.)&lt;br /&gt;&lt;/dl&gt;&lt;br /&gt;Comments, thoughts, references?&lt;br /&gt;&lt;br /&gt;BlogicBlogger Over and Out&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8504592-112717454228902985?l=blogicblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blogicblog.blogspot.com/feeds/112717454228902985/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8504592&amp;postID=112717454228902985&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8504592/posts/default/112717454228902985'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8504592/posts/default/112717454228902985'/><link rel='alternate' type='text/html' href='http://blogicblog.blogspot.com/2005/09/my-take-on-problem-solving-skills.html' title='My take on &quot;problem solving skills&quot;'/><author><name>BlogicBlogger</name><uri>http://www.blogger.com/profile/02931775813348618827</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8504592.post-112575956768180960</id><published>2005-09-03T10:38:00.000-04:00</published><updated>2005-09-03T10:59:29.086-04:00</updated><title type='text'>Weblogic 9: support aspects</title><content type='html'>Vinny Carpenter &lt;a href="http://www.j2eegeek.com/blog/2005/09/01/weblogic-90-first-look-at-the-ga-release/"&gt;reviews  Weblogic 9&lt;/a&gt;. He mentions many features, but forgets what I think will be a very interesting supportability aspect: &lt;a href="http://e-docs.bea.com/wls/docs90/notes/new.html#1228298"&gt;Diagnostic Service&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Up to the 9.0 release, one of the big support headaches was that for many of the subsystems, the running state was not exportable for analysis; that a transaction running through the system would have different IDs in different subsystems with no way to associate them. &lt;br /&gt;&lt;br /&gt;Basically, it was often impossible to tell what the system is actually doing without writing custom patches, which the customer may or may not be willing to install in the production system.&lt;br /&gt;&lt;br /&gt;The Diagnostic Service was designed to solve exactly that. I don't think it provides for it all out of the box, but the &lt;a href="http://e-docs.bea.com/wls/docs90/wldf_configuring/index.html"&gt;hooks&lt;/a&gt; certainly are there and I am hoping to see a community form around this service within or outside of BEA.&lt;br /&gt;&lt;br /&gt;Technorati Tags: &lt;a href="http://technorati.com/tag/WebLogic" rel="tag"&gt;WebLogic&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;BlogicBlogger Over and Out&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8504592-112575956768180960?l=blogicblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blogicblog.blogspot.com/feeds/112575956768180960/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8504592&amp;postID=112575956768180960&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8504592/posts/default/112575956768180960'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8504592/posts/default/112575956768180960'/><link rel='alternate' type='text/html' href='http://blogicblog.blogspot.com/2005/09/weblogic-9-support-aspects.html' title='Weblogic 9: support aspects'/><author><name>BlogicBlogger</name><uri>http://www.blogger.com/profile/02931775813348618827</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8504592.post-112424560070043866</id><published>2005-08-16T21:54:00.000-04:00</published><updated>2005-08-16T22:26:40.750-04:00</updated><title type='text'>Easier way to collect thread dumps</title><content type='html'>When I worked at BEA support, we troubleshooted a lot of issues using the thread dumps. There were a couple of problems with them:&lt;br /&gt;&lt;ul&gt;&lt;li&gt; On Solaris/Linux/HP-UP, the thread dumps had to be extracted from the stdout files, which in some cases did not exist (never redirected) and in others were not rotated on restart and therefore had several months of logs (GBs). Either way finding the thread dumps was difficult.&lt;br /&gt;&lt;/li&gt;&lt;li&gt; Windows users often just had stdout going to the console and, when the thread dumps were screen-scraped, they got broken up in all sorts of strange locations making it harder to do any automated processing or even a decent pattern search.&lt;br /&gt;&lt;/li&gt;&lt;li&gt; When more than one thread dump was required (90% of the cases), it was hard to figure out how often the thread dumps were taken as they did not include a timestamp. At least SUN JVM did not. JRockit and IBM, both had it.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;Therefore, I am glad to see that it is becoming easier to get good thread dumps. At least for JRockit &lt;a href="http://dev2dev.bea.com/blog/sla/archive/2005/07/useful_tool_jrc.html"&gt;with the jrcmd command&lt;/a&gt;. In fact, the command looks useful for &lt;a href="http://dev2dev.bea.com/blog/sla/archive/2005/08/jrmcd_f.html"&gt;a number of things&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Unfortunately, it is still somewhat hard to do the same with SUN's JVM. They have the &lt;a href="http://java.sun.com/j2se/1.5.0/docs/tooldocs/share/jstack.html"&gt;jstack command&lt;/a&gt;, but it is still not available for Windows.&lt;br /&gt;&lt;br /&gt;Of course, with &lt;a href="http://blogs.sun.com/roller/page/bmc/20050418"&gt;dTrace&lt;/a&gt;, thread dumps might become obsolete, but yet again this is only a Solaris 10 option, though there are some rumours of &lt;a href="http://blogs.sun.com/roller/page/bmc/20050816"&gt;dTrace for BSD&lt;/a&gt; or maybe even  &lt;a href="http://blogs.sun.com/roller/page/bmc/20050811"&gt;Debian&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;In a short term though, if you find yourself in need of some serious thread dump taking, do take a look at &lt;a href="http://commerce.bea.com/products/weblogicjrockit/5.0/jr_50.jsp"&gt;JRockit&lt;/a&gt;. It is free after all. And it does have other &lt;a href="http://edocs.bea.com/wljrockit/docs50/usingMMLeak/"&gt;cool troubleshooting tools&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;BlogicBlogger Over and Out&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8504592-112424560070043866?l=blogicblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blogicblog.blogspot.com/feeds/112424560070043866/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8504592&amp;postID=112424560070043866&amp;isPopup=true' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8504592/posts/default/112424560070043866'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8504592/posts/default/112424560070043866'/><link rel='alternate' type='text/html' href='http://blogicblog.blogspot.com/2005/08/easier-way-to-collect-thread-dumps.html' title='Easier way to collect thread dumps'/><author><name>BlogicBlogger</name><uri>http://www.blogger.com/profile/02931775813348618827</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8504592.post-112407426201540560</id><published>2005-08-14T20:34:00.000-04:00</published><updated>2005-08-14T22:51:02.073-04:00</updated><title type='text'>Book review: 'Blog' by Hugh Hewitt</title><content type='html'>I blog. Obviously! But I felt that an influential blogger like Hugh Hewitt might give a good overview and write a book worth reading. Boy, was I mistaken.&lt;br /&gt;&lt;br /&gt;This book is squarely targeted at non-technical, right-wing, religious Americans who don't mind being sneered at. Anybody else should try to avoid it.&lt;br /&gt;&lt;br /&gt;For that &lt;em&gt;Anybody else&lt;/em&gt; group, here is couple of reasons from the book itself (emphasis mine).&lt;br /&gt;&lt;ul&gt;&lt;li&gt;An audience test that &lt;strong&gt;really&lt;/strong&gt; should have been on the book's jacket and not on the page 88 of the book:&lt;br /&gt;&lt;quote&gt;&lt;em&gt;Most of America knows that elite journalism is staffed by people who are overwhelmingly way-left-of-center in their politics. If you don't believe that America believes that, or you want to argue over what 'way-left-of-center' means, &lt;strong&gt;you have purchased the wrong book&lt;/strong&gt;. You are still living in the land of the lost and don't want to move, so go buy Al Franken's or Michael Moore's latest and miss the revolution.&lt;/em&gt;&lt;/quote&gt;&lt;br /&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Hugh seems to think that contempt is a good thing to demonstrate to prove your point:&lt;br /&gt;&lt;quote&gt;&lt;em&gt;Barbra Streisand is a blogger. A &lt;strong&gt;not-very-bright one&lt;/strong&gt;, but a blogger nonetheless.&lt;/em&gt;&lt;/quote&gt; (p 128)&lt;br /&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;I am also not so sure Hugh was the right person to advise on how to setup a blog. He freely admits to not knowing the technology, but the following quote shows that maybe the editor should have insisted harder on a technophilic co-writer.&lt;br /&gt;&lt;quote&gt;&lt;em&gt;I am still unsure what an RSS feed is and have trouble making the permalinks work - but it does not matter!&lt;/em&gt;&lt;/quote&gt;&lt;br /&gt;RSS is so important in having a blog read and indexed that sacrificing it for whatever &lt;em&gt;easy to start a blog&lt;/em&gt; point Hugh had was in my mind a terrible choice. He has an RSS feed on his own website - four types actually - so he has denied others what might be contributing to his own success.&lt;br /&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Nearly all of the examples are given based on political or religious blogs. Are the technical blogs not worth a mention? Or is the technical community is just not a target for the book because they have already figured all of this out? Either way, mentioning a blogging CEO like &lt;a href="http://blogs.sun.com/jonathan"&gt;Jonathan Schwartz&lt;/a&gt; would have carried Hugh's point much further than the argument in the book did. In fact the only real mention of the technological company is Technorati, which Hugh is plugging quite often.&lt;br /&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Even the practical advice does not seem to ring a bell for me. For example:&lt;br /&gt;&lt;quote&gt;&lt;em&gt;So how to go about making friends in the blogosphere? Here are some specific steps.&lt;br&gt;&lt;br /&gt;First, acquaint yourself with the form, and having done so, decide who genuinely does a good job, who meets your information needs. Then tell them. &lt;strong&gt;Via e-mail. Repeatedly.&lt;/strong&gt;&lt;/em&gt;&lt;br /&gt;&lt;/quote&gt;&lt;br /&gt;The word SPAM comes to mind. I am not sure why. Maybe it is the &lt;em&gt;Repeatedly&lt;/em&gt; bit that seems to imply rejection at first attempt.&lt;br /&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;The section on what to do when one is convinced to start blogging is interesting, but unfortunately, it is barely 20 pages long. Couple of good articles would have done it better. &lt;/li&gt;&lt;br /&gt;&lt;li&gt;Finally, there seems to be no mention of &lt;a href="http://longtail.typepad.com/the_long_tail/"&gt;the long tail market&lt;/a&gt; which allows for so many people to blog about interesting things that are not politics or religion. &lt;br /&gt;&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;Those were the reasons that really made me to write this review. People with stronger political views and sharper tongues actually &lt;a href="http://www.wirenh.com/Literary/General_Literary/blog_or_the_terrorists_win_20050323367.html"&gt;pick on different points&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Still if I haven't convinced you, maybe the book is for you. It is currently &lt;a href="http://www.amazon.com/exec/obidos/tg/detail/-/078521187X/104-5027222-8005560"&gt;available &lt;/a&gt;at Amazon at 60% discount ($8 down from $20). This is quite telling all by itself. After the Amazon takes its own 20% cut - which is another $4 - there is not much margin there for the author to make any money of the book. To me that means that the real purpose of the book was to further increase Hugh's fame rather than to really educate the audience. Caveat emptor! &lt;br /&gt;&lt;br /&gt;BlogicBlogger Over and Out&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8504592-112407426201540560?l=blogicblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blogicblog.blogspot.com/feeds/112407426201540560/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8504592&amp;postID=112407426201540560&amp;isPopup=true' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8504592/posts/default/112407426201540560'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8504592/posts/default/112407426201540560'/><link rel='alternate' type='text/html' href='http://blogicblog.blogspot.com/2005/08/book-review-blog-by-hugh-hewitt.html' title='Book review: &apos;Blog&apos; by Hugh Hewitt'/><author><name>BlogicBlogger</name><uri>http://www.blogger.com/profile/02931775813348618827</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8504592.post-112295085068743202</id><published>2005-08-01T21:59:00.000-04:00</published><updated>2005-08-01T22:48:00.526-04:00</updated><title type='text'>Re: More Readable Classpaths for Ant Builds</title><content type='html'>Lance Hankins got annoyed with having to eyeball ant's output of the long classpaths and wrote &lt;a href="http://peeps.dallas.focus-technologies.com/roller/comments/lhankins/Weblog/more_readable_classpaths_for_ant"&gt;a task to do the classpath output in a slightly more readable form&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Neat, but perhaps there is a more generic way to do it. After all, not only ant produces these long semi-column separated monstrosities.&lt;br /&gt;&lt;br /&gt;So, I want to show how I do it with Vim (&lt;a href="http://blogicblog.blogspot.com/2004/09/fitting-first-post-i-love-vim.html"&gt;Why Vim...&lt;/a&gt;).&lt;br /&gt;&lt;br /&gt;Let's use Lance's output as given. &lt;br /&gt;&lt;ol&gt;&lt;br /&gt;&lt;li&gt; Copy and paste it into Vim.&lt;br /&gt;&lt;li&gt; Notice that it is broken into multiple (23) lines. While he probably did it for a better web presentation, this also happens when somebody screen scrapes the classpath from the DOS window.&lt;br /&gt;&lt;li&gt; Let's combine all the lines back into one long one: &lt;strong&gt;:%j!&lt;/strong&gt;.&lt;br&gt; This command means: &lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;&lt;em&gt;in the command-line mode (&lt;strong&gt;:&lt;/strong&gt;), &lt;br /&gt;&lt;li&gt;for the whole buffer (&lt;strong&gt;%&lt;/strong&gt;) &lt;br /&gt;&lt;li&gt;join lines (&lt;strong&gt;j&lt;/strong&gt;) &lt;br /&gt;&lt;li&gt;without inserting or deleting any spaces on the join (&lt;strong&gt;!&lt;/strong&gt;)&lt;/em&gt;&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;&lt;li&gt; Now, let's split them on the semicolon: &lt;strong&gt;:s/;/^M/g&lt;/strong&gt;. &lt;br&gt;In here, we are &lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;&lt;em&gt;in the command mode again (&lt;strong&gt;:&lt;/strong&gt;), &lt;br /&gt;&lt;li&gt; working with the current line (&lt;strong&gt;no range indicated&lt;/strong&gt;) &lt;br /&gt;&lt;li&gt; doing a substitution (&lt;strong&gt;s/FROM/TO/&lt;/strong&gt;) &lt;br /&gt;&lt;li&gt; from semicolon (&lt;strong&gt;/;/&lt;/strong&gt;) &lt;br /&gt;&lt;li&gt; to a line break (&lt;strong&gt;^M&lt;/strong&gt;, produced -at least on windows- with CTRL-Q CTRL-M key sequence), &lt;br /&gt;&lt;li&gt; and repeating this substitution for the whole line (&lt;strong&gt;s/FROM/TO/g&lt;/strong&gt;)&lt;br /&gt;&lt;/ul&gt;&lt;/em&gt;&lt;br /&gt;&lt;li&gt; Ok, we are done in less than 20 keystrokes including cut and paste and carriage returns!&lt;br /&gt;&lt;li&gt; Let's see what else we can do. How about sorting and deduping the entries? (after cleaning up the first line to remove the [echo....] bit)&lt;br /&gt;&lt;li&gt; &lt;strong&gt;:%!sort -u&lt;/strong&gt;. This will require Cygwin to be first on the path in the Windows environments. &lt;br /&gt;&lt;li&gt; How about highlighting all the sprint jars in one color and all hibernate jars in another?&lt;br /&gt;&lt;li&gt; &lt;strong&gt;:1OTF spring&lt;/strong&gt; and &lt;strong&gt;:2OTF hibernate&lt;/strong&gt;. This requires &lt;a href="http://vim.sourceforge.net/scripts/script.php?script_id=634"&gt;OTF&lt;/a&gt; Vim plugin. &lt;br /&gt;&lt;li&gt; As an added benefit, the command above immediately highlight spring's jar for hibernate as it is the only line with two colors on it. Could be useful to keep in mind.&lt;br /&gt;&lt;/ol&gt;&lt;br /&gt;&lt;br /&gt;I could go on for a while, but hopefully this will be a more useful and &lt;em&gt;generic&lt;/em&gt; way to deal with long classpaths rather than having to write an ant task. KISS, &lt;a href="http://www.codegeneration.net/tiki-read_article.php?articleId=9"&gt;DRY&lt;/a&gt;, etc.&lt;br /&gt;&lt;br /&gt;BlogicBlogger Over and Out&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8504592-112295085068743202?l=blogicblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blogicblog.blogspot.com/feeds/112295085068743202/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8504592&amp;postID=112295085068743202&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8504592/posts/default/112295085068743202'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8504592/posts/default/112295085068743202'/><link rel='alternate' type='text/html' href='http://blogicblog.blogspot.com/2005/08/re-more-readable-classpaths-for-ant.html' title='Re: More Readable Classpaths for Ant Builds'/><author><name>BlogicBlogger</name><uri>http://www.blogger.com/profile/02931775813348618827</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8504592.post-112233537441830152</id><published>2005-07-25T19:36:00.000-04:00</published><updated>2005-07-25T19:49:34.426-04:00</updated><title type='text'>Two takes on culture clash of Mainframe vs. Modern skill sets</title><content type='html'>C|Net News has an &lt;a href="http://news.com.com/The+great+legacy+skills+debate/2010-1007_3-5798584.html?tag=nefd.ac"&gt;article &lt;/a&gt;talking about Legacy (mostly mainframe) skills and how they contrast to the skills developed in the modern world of Linux, Web, Java and .Net.&lt;br /&gt;&lt;br /&gt;It is a typical high level article where each word is important, but the whole passage is hard to read.&lt;br /&gt;&lt;br /&gt;On the other hand, we have &lt;a href="http://ask.slashdot.org/article.pl?sid=05/07/18/2035235&amp;threshold=5&amp;tid=190&amp;tid=130&amp;tid=201&amp;tid=4"&gt;a Slashdot discussion &lt;/a&gt;on the same topic from only a couple of days earlier. In there, deep comments are mixed in with just as deep geek humor with the end result of being much more entertaining end educational at the same time.&lt;br /&gt;&lt;br /&gt;But only by reading both articles, one gains a good understanding of what the issue is actually about. &lt;br /&gt;&lt;br /&gt;BlogicBlogger Over and Out&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8504592-112233537441830152?l=blogicblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blogicblog.blogspot.com/feeds/112233537441830152/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8504592&amp;postID=112233537441830152&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8504592/posts/default/112233537441830152'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8504592/posts/default/112233537441830152'/><link rel='alternate' type='text/html' href='http://blogicblog.blogspot.com/2005/07/two-takes-on-culture-clash-of.html' title='Two takes on culture clash of Mainframe vs. Modern skill sets'/><author><name>BlogicBlogger</name><uri>http://www.blogger.com/profile/02931775813348618827</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8504592.post-112224101161640782</id><published>2005-07-24T15:27:00.000-04:00</published><updated>2005-07-24T18:20:30.056-04:00</updated><title type='text'>Re: Open Source Applications for IT You've Never Heard Of</title><content type='html'>Alan Williamson is &lt;a href="http://alan.blog-city.com/oscon.htm"&gt;planning to present about Open Source application that most of people don't know about&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;He is also asking the community to contribute their lists. Well, I have three tools that I like enough to mention (again).&lt;br /&gt;&lt;dl&gt;&lt;br /&gt;&lt;dt&gt; &lt;a href="http://www.ethereal.com/"&gt;Ethereal&lt;/a&gt;&lt;br /&gt;&lt;dd&gt; Whenever you have to troubleshoot an application with a lot of network traffic, Ethereal is a good tool to keep in mind. It allows to see the network traffic on both high and low level and is flexible enough to narrow down exactly to the information subset needed. And it &lt;a href="http://wiki.ethereal.com/Mate"&gt;keeps getting better&lt;/a&gt;. &lt;br /&gt;&lt;dt&gt; &lt;a href="http://xmlstar.sourceforge.net/"&gt;XMLStarlet &lt;/a&gt;&lt;br /&gt;&lt;dd&gt; If you are trying to extract some information from an XML file, XMLStarlet is a great way to quickly try several approaches without having to type a lot of XSLT. I have written about it &lt;a href="http://blogicblog.blogspot.com/2004/09/xmlstarlet-gentle-introduction-into.html"&gt;before &lt;/a&gt;, but there were some bigger introduction articles written about it later &lt;a href="http://www.freesoftwaremagazine.com/free_issues/issue_06/xml_starlet/"&gt;here&lt;/a&gt;  and &lt;a href="http://www-128.ibm.com/developerworks/xml/library/x-starlet.html"&gt;here&lt;/a&gt;&lt;br /&gt;&lt;dt&gt; &lt;a href="http://www.graphviz.org/"&gt;GraphViz&lt;/a&gt;&lt;br /&gt;&lt;dd&gt; This is a visualization tool that allows you to build complex graphs (directed or otherwise) from a very simple description language. I &lt;a href="http://blogicblog.blogspot.com/2004/10/power-of-graphviz.html"&gt;talked&lt;/a&gt; about it in depth before as well.&lt;br /&gt;&lt;/dl&gt;&lt;br /&gt;All of these tools have just enough of a learning curve, to need an effort to learn them. But once you get over that initial hump, the tools are suddenly very applicable nearly at the daily basis. From my experience, I really would recommend to have a look at them, so that later, when the actual needs arises, you would know that the powerful, open source tools exist to help you out.&lt;br /&gt;&lt;br /&gt;BlogicBlogger Over and Out&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8504592-112224101161640782?l=blogicblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blogicblog.blogspot.com/feeds/112224101161640782/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8504592&amp;postID=112224101161640782&amp;isPopup=true' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8504592/posts/default/112224101161640782'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8504592/posts/default/112224101161640782'/><link rel='alternate' type='text/html' href='http://blogicblog.blogspot.com/2005/07/re-open-source-applications-for-it.html' title='Re: Open Source Applications for IT You&apos;ve Never Heard Of'/><author><name>BlogicBlogger</name><uri>http://www.blogger.com/profile/02931775813348618827</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8504592.post-112208349115448366</id><published>2005-07-22T21:32:00.000-04:00</published><updated>2005-07-22T21:52:28.470-04:00</updated><title type='text'>Link: Users hate apache server</title><content type='html'>Ok, so they don't. But there are some bits they do hate and Rich Bowen goes through &lt;a href="http://people.apache.org/~rbowen/presentations/apacheconEU2005/hate_apache.pdf"&gt;big issues present in apache's configuration file&lt;/a&gt;.  Warning, it is a PDF file.&lt;br /&gt;&lt;br /&gt;What I find interesting is that we see the full circle feedback in action here. Because the people supporting apache are mostly the same people who are developing (or documenting) it, they have credibility and strength of getting things done. &lt;a href="http://wooga.drbacchus.com/wordpress/?p=1002"&gt;Sometimes, within days&lt;/a&gt;....&lt;br /&gt;&lt;br /&gt;On the other hand, in a big company the support is done by a separate team, whose only channel of communication is via bug fix requests. From what I have seen, there are no easy channels for a support person to suggest a feature to the developer &lt;em&gt;just because it drives customers crazy&lt;/em&gt;. It has to come forth from the developer himself/herself, from customer surveys created by marketing, or through osmosis process where each layer from support upwards feel enough pain to finally pass it on unofficially.&lt;br /&gt;&lt;br /&gt;I would love to be proven wrong here. I really would. I have even tried checking all the &lt;a href="http://safari.oreilly.com/"&gt;Safari&lt;/a&gt; books on 'customer support practices' to see what they say about such suggestion channel. Big nothing. The support is at the end of the chain and their opinion is not worth listening to.&lt;br /&gt;&lt;br /&gt;In the best case, support people can create their own documentation and FAQs to help customers, but nobody would look at it and see whether there is a simple developer level fix to stop a lot of annoyance level issues.&lt;br /&gt;&lt;br /&gt;BlogicBlogger Over and Out&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8504592-112208349115448366?l=blogicblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blogicblog.blogspot.com/feeds/112208349115448366/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8504592&amp;postID=112208349115448366&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8504592/posts/default/112208349115448366'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8504592/posts/default/112208349115448366'/><link rel='alternate' type='text/html' href='http://blogicblog.blogspot.com/2005/07/link-users-hate-apache-server.html' title='Link: Users hate apache server'/><author><name>BlogicBlogger</name><uri>http://www.blogger.com/profile/02931775813348618827</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8504592.post-112199998659131588</id><published>2005-07-21T22:22:00.000-04:00</published><updated>2005-07-22T19:12:43.026-04:00</updated><title type='text'>Link: Socket + XML -&gt; hard to troubleshoot issue</title><content type='html'>Kohsuke Kawaguchi (Sun engineer working with XML) writes about &lt;a href="http://weblogs.java.net/blog/kohsuke/archive/2005/07/socket_xml_pitf.html"&gt;what happens when you try to read XML directly from a socket stream&lt;/a&gt; with expectations of actually writing back to that socket. Specifically, &lt;i&gt;a big nothing&lt;/i&gt;. The connection either hangs or dies without sending the response. &lt;br /&gt;&lt;br /&gt;Kohsuke gives a clear step by step explanation of why that happens and how to prevent it in the future. If you work with XML, read this article just in case you will run into this in the future. It will save you a lot of troubleshooting time.&lt;br /&gt;&lt;br /&gt;Now - after reading the article - the question is how would one figure this out without knowing the XML code backwards? &lt;br /&gt;&lt;br /&gt;Since the issue is network related, I would probably start with my favourite multi-tool &lt;a href="http://www.ethereal.com/"&gt;Ethereal&lt;/a&gt;. With the tool running, doing the test case should show that the connection is closed too early by the server. From that point, I would start tracing which bit of code is calling InputStream.close(). Or I would instrument/substitute/wrap the InputStream implementation and do a stack trace dump when its close() method is called.&lt;br /&gt;&lt;br /&gt;That's what I would do. I wonder though how Kohsuke did it himself.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Update:&lt;/strong&gt; I posted this as a question in the &lt;a href="http://weblogs.java.net/blog/kohsuke/archive/2005/07/socket_xml_pitf.html#9309"&gt;original article's comments&lt;/a&gt; and Kohsuke &lt;a href="http://weblogs.java.net/blog/kohsuke/archive/2005/07/how_did_i_write.html"&gt;answered it&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;BlogicBlogger Over and Out&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8504592-112199998659131588?l=blogicblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blogicblog.blogspot.com/feeds/112199998659131588/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8504592&amp;postID=112199998659131588&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8504592/posts/default/112199998659131588'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8504592/posts/default/112199998659131588'/><link rel='alternate' type='text/html' href='http://blogicblog.blogspot.com/2005/07/link-socket-xml-hard-to-troubleshoot.html' title='Link: Socket + XML -&gt; hard to troubleshoot issue'/><author><name>BlogicBlogger</name><uri>http://www.blogger.com/profile/02931775813348618827</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8504592.post-112139549989994396</id><published>2005-07-14T22:34:00.000-04:00</published><updated>2005-07-14T22:44:59.906-04:00</updated><title type='text'>Some java technical support patterns</title><content type='html'>I while ago &lt;a href="http://blogicblog.blogspot.com/2005/03/technical-support-patterns-where-are.html"&gt;I was asking&lt;/a&gt; whether there are any &lt;em&gt;technical support patterns&lt;/em&gt; out there. After all we have &lt;em&gt;architectural patterns&lt;/em&gt; and &lt;em&gt;design patterns&lt;/em&gt; already. &lt;br /&gt;&lt;br /&gt;Turned out that BEA - the company I used to work for - has put together a number of the  technical support patterns related to its products. But since BEA products use a great number of base technologies also used elsewhere, the patterns are useful to more than just BEA customers.&lt;br /&gt;&lt;br /&gt;Unfortunately, they had put it behind a really long and ugly URL (*cough* BEA Portal *cough*), so nobody knows about. If you ever have to troubleshoot complex java problems, &lt;a href="http://support.bea.com/application?namespace=main&amp;origin=esupport_portlet.jsp&amp;event=link.more.max_portlet&amp;portlet=SupportPatternsAndTutorials"&gt;check it out&lt;/a&gt; and you may well find it rewarding. There are even some viewlets, or as it is popular to call them now &lt;em&gt;screencasts&lt;/em&gt;. &lt;br /&gt;&lt;br /&gt;BlogicBlogger Over and Out&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8504592-112139549989994396?l=blogicblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://support.bea.com/application?namespace=main&amp;origin=esupport_portlet.jsp&amp;event=link.more.max_portlet&amp;portlet=SupportPatternsAndTutorials' title='Some java technical support patterns'/><link rel='replies' type='application/atom+xml' href='http://blogicblog.blogspot.com/feeds/112139549989994396/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8504592&amp;postID=112139549989994396&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8504592/posts/default/112139549989994396'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8504592/posts/default/112139549989994396'/><link rel='alternate' type='text/html' href='http://blogicblog.blogspot.com/2005/07/some-java-technical-support-patterns.html' title='Some java technical support patterns'/><author><name>BlogicBlogger</name><uri>http://www.blogger.com/profile/02931775813348618827</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8504592.post-112130857871904318</id><published>2005-07-13T22:16:00.000-04:00</published><updated>2005-07-13T22:36:18.726-04:00</updated><title type='text'>Link: To blog or not to blog, is there a danger?</title><content type='html'>&lt;em&gt;The Chronicle of Higher Education&lt;/em&gt; has published &lt;a href="http://chronicle.com/jobs/2005/07/2005070801c.htm"&gt;an article&lt;/a&gt; which argues that a blog is often a bad thing to put on your resume or even to have within a google reach of your name. As a proof, they show a lot of negative things they found out about interview-ready people whose lives turn out to be more complicated than expected.&lt;br /&gt;&lt;br /&gt;Perhaps when the person in question is an education professor with plenty of publishing opportunities and the blogs are only for personal aspect of their life, they should not have it listed (or searchable by their name). &lt;br /&gt;On the other hand, for technical people a blog is often the best way to show what we know, what we care about, the problems we solved that might be useful for other geeks to know. And we have enough strange people in our midst with or without blogs that even some &lt;a href="http://www.jroller.com/page/fate/"&gt;technical bile&lt;/a&gt; does not change our opinions of people.&lt;br /&gt;&lt;br /&gt;At the same time, the article has some strong points about political views, etc. Putting them into the name-identifiable blog is like tattooing your affiliation on a forehead, bound to cause issues. One's choice of course, but a much bigger choice than people seems to realise.&lt;br /&gt;&lt;br /&gt;I have my political views, but they are not in the blog. Nor are my food preferences or pet love/hates. On the other hand, if somebody decides to judge my English from the blog, I might be in trouble..... :-)&lt;br /&gt;&lt;br /&gt;BlogicBlogger Over and Out&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8504592-112130857871904318?l=blogicblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://chronicle.com/jobs/2005/07/2005070801c.htm' title='Link: To blog or not to blog, is there a danger?'/><link rel='replies' type='application/atom+xml' href='http://blogicblog.blogspot.com/feeds/112130857871904318/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8504592&amp;postID=112130857871904318&amp;isPopup=true' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8504592/posts/default/112130857871904318'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8504592/posts/default/112130857871904318'/><link rel='alternate' type='text/html' href='http://blogicblog.blogspot.com/2005/07/link-to-blog-or-not-to-blog-is-there.html' title='Link: To blog or not to blog, is there a danger?'/><author><name>BlogicBlogger</name><uri>http://www.blogger.com/profile/02931775813348618827</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8504592.post-112130666882176072</id><published>2005-07-13T21:19:00.000-04:00</published><updated>2005-07-13T22:04:28.840-04:00</updated><title type='text'>Disk Fragmentation is becoming a bigger threat than viruses? You must be joking!</title><content type='html'>In the latest &lt;a href="http://www.eweek.com/"&gt;eWEEK&lt;/a&gt; paper edition, there is an advertisement that starts with the following: &lt;em&gt;Why disk fragmentation is poised to outpace the virus as the biggest threat to productivity.&lt;/em&gt;&lt;br /&gt;&lt;br /&gt;And it tries to prove this point by saying that viruses make our computers slower and making users frustrated &lt;b&gt;and that so does the disk fragmentation&lt;/b&gt;. &lt;br /&gt;&lt;br /&gt;Furthermore manual defragmentation (as bundled in at least 3 versions of Windows) is not good enough because the &lt;em&gt;damage is already done&lt;/em&gt;. While can't link to the  eWeek's ad, I found &lt;a href="http://www.shi.com/Global/ECommerce/NewsArticleView.asp?SHIArticleID=6372"&gt;an online copy of it&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Now, I don't know about other people but I hate viruses because they&lt;ul&gt;&lt;br /&gt;&lt;li&gt;Slow down my computer (&lt;em&gt;ok, I may grant disk fragmentation that one&lt;/em&gt;)&lt;br /&gt;&lt;li&gt;Actively resist uninstall attempts (&lt;em&gt;hmm, defragmentation is never 100% complete either&lt;/em&gt;)&lt;br /&gt;&lt;li&gt;Can destroy my files or even entire hard drive (&lt;em&gt;disk fragmentation does not&lt;/em&gt;)&lt;br /&gt;&lt;li&gt;Try to attack other computers (&lt;em&gt;nope&lt;/em&gt;)&lt;br /&gt;&lt;li&gt;Can steal my data and pass it on to the virus creators (&lt;em&gt;nope, disk fragmentation does not cause this one either&lt;/em&gt;)&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;So basically, the Diskeeper Corporation/Executive Software (because that is who the ad is for) tries to scare people into buying full version of their software for something that is a minor annoyance. And with the ever-increasing hard drive sizes, the issue is becoming smaller and smaller.&lt;br /&gt;&lt;br /&gt;I wonder if their sales are falling so low that they are starting to get desperate enough to use these scare tactics. Or is this just a normal part of their &lt;a href="http://www.executive.com/aboutus/ceo/bio.asp"&gt;Scientology methodology&lt;/a&gt;?&lt;br /&gt;&lt;br /&gt;Oh yeah, and if you expect any support from the company for the product, you may just find an unexpected &lt;a href="http://www.skeptictank.org/gen1/gen00279.htm"&gt;complication&lt;/a&gt;. Worse than that, in the age of the automated web update, would you actually trust &lt;b&gt;them&lt;/b&gt;? After all &lt;a href="http://www.wired.com/news/business/0,1367,35054,00.html"&gt;Germany does not&lt;/a&gt;. &lt;br /&gt;&lt;br /&gt;BlogicBlogger Over and Out&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8504592-112130666882176072?l=blogicblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blogicblog.blogspot.com/feeds/112130666882176072/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8504592&amp;postID=112130666882176072&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8504592/posts/default/112130666882176072'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8504592/posts/default/112130666882176072'/><link rel='alternate' type='text/html' href='http://blogicblog.blogspot.com/2005/07/disk-fragmentation-is-becoming-bigger.html' title='Disk Fragmentation is becoming a bigger threat than viruses? You must be joking!'/><author><name>BlogicBlogger</name><uri>http://www.blogger.com/profile/02931775813348618827</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8504592.post-112053301852368909</id><published>2005-07-04T23:03:00.000-04:00</published><updated>2005-07-04T23:10:18.530-04:00</updated><title type='text'>Viva the solaris 10 supportability</title><content type='html'>It looks like Sun is really serious about making Solaris 10 well supported. I am talking about &lt;a href="http://www.sun.com/bigadmin/content/dtrace/"&gt;DTrace&lt;/a&gt; facility that allows scripting what previously had to be done with truss/strace and a lot of strategic greps.&lt;br /&gt;&lt;br /&gt;Better yet, DTrace can hook into Java and trace the function calls across Java and native code alike.&lt;br /&gt;&lt;br /&gt;Adam Leventhal &lt;a href="http://blogs.sun.com/roller/page/ahl/Weblog?catname=%2FDTrace"&gt;talks about this issue&lt;/a&gt; and has even &lt;a href="http://blogs.sun.com/roller/page/ahl?entry=dtrace_presentation_at_javaone"&gt;presented at JavaONE 2005&lt;/a&gt; with this information.&lt;br /&gt;&lt;br /&gt;I am really looking forward to this technology maturing and hope it will be adopted by the Java support teams everywhere.&lt;br /&gt;&lt;br /&gt;BlogicBlogger Over and Out&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8504592-112053301852368909?l=blogicblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blogicblog.blogspot.com/feeds/112053301852368909/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8504592&amp;postID=112053301852368909&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8504592/posts/default/112053301852368909'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8504592/posts/default/112053301852368909'/><link rel='alternate' type='text/html' href='http://blogicblog.blogspot.com/2005/07/viva-solaris-10-supportability.html' title='Viva the solaris 10 supportability'/><author><name>BlogicBlogger</name><uri>http://www.blogger.com/profile/02931775813348618827</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8504592.post-112041157072783939</id><published>2005-07-03T12:20:00.000-04:00</published><updated>2005-07-09T11:42:05.846-04:00</updated><title type='text'>Links: How to get good customer support</title><content type='html'>Couple of articles discussing the customer support and what both sides could do to make it better.&lt;br /&gt;&lt;ol&gt;&lt;li&gt; &lt;a href="http://www.mobilemagazine.com/archives/2005/06/death_by_tech_s.html"&gt;An article from the Mobile Magazine&lt;/a&gt; where they called a number of support lines and compared their processes and results from the user's point of view. What is good about this article is that the problems were known and the same for each call, so you could judge for yourself who went through a troubleshooting process and who only had a decision tree to rely on.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;a href="http://37signals.com/svn/archives2/tips_for_getting_good_customer_support.php"&gt;A blog entry from Jason Fried&lt;/a&gt;, who supports Basecamp, Backpack and Ta-da list. He writes how to &lt;em&gt;get&lt;/em&gt; a good customer support by being nice to the support person and providing them with the relevant explanation. The entry also has more than 50 replies elaborating on the issue and providing additional links.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;a href="http://bugs.mysql.com/how-to-report.php"&gt;MySQL support page&lt;/a&gt; for technical level examples and for additional couple of links to other detailed descriptions.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Finally, if you want to make your own mark, &lt;a href="http://en.wikibooks.org/wiki/Dealing_with_calling_tech_support"&gt;there is a Wikipedia page &lt;/a&gt;with the basic information that is crying out to be fleshed out.&lt;/li&gt;&lt;br /&gt;&lt;/ol&gt;&lt;br /&gt;For myself, I am starting to wonder if the only people who really &lt;em&gt;get&lt;/em&gt; what the suggestions mean are those who had to do some customer/technical support themselves. Until then, it is often hard to understand why you are being asked for the configuration file every time, even if you believe that nothing was changed. (Answer: Often people will change something to try fixing a problem and then change it back but not completely. Everything looks like before to them, but is not anymore.)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;BlogicBlogger Over and Out&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8504592-112041157072783939?l=blogicblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blogicblog.blogspot.com/feeds/112041157072783939/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8504592&amp;postID=112041157072783939&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8504592/posts/default/112041157072783939'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8504592/posts/default/112041157072783939'/><link rel='alternate' type='text/html' href='http://blogicblog.blogspot.com/2005/07/links-how-to-get-good-customer-support.html' title='Links: How to get good customer support'/><author><name>BlogicBlogger</name><uri>http://www.blogger.com/profile/02931775813348618827</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8504592.post-112028109115126656</id><published>2005-07-02T01:00:00.000-04:00</published><updated>2005-07-02T01:11:31.156-04:00</updated><title type='text'>Discussion: How should an application's log work</title><content type='html'>An oldie but goodie &lt;a href="http://developers.slashdot.org/article.pl?sid=05/05/09/0039238&amp;threshold=4&amp;tid=156&amp;tid=4&amp;tid=218"&gt;discussion on slashdot&lt;/a&gt; about what needs to be done to make sure that application logs are useful to actually troubleshoot problems.&lt;br /&gt;&lt;br /&gt;At reading level 4 (as linked), the suggestions actually make sense.&lt;br /&gt;&lt;br /&gt;Try a quick test. If you are developing a software which produces a log file, or better yet many log files, how long would it take to extract all events produced by user X between 2pm and 3pm of July 30th? &lt;br /&gt;&lt;br /&gt;You need to quickly locate files (where is the location encoded?), extract a regexp defined subset of time (do your log messages split over multiple lines and therefore not greppable?), and narrow it down to a specific user (do you even record that in the logs?).&lt;br /&gt;&lt;br /&gt;And that's a basic task. With Java, you also have to deal with multiple threads, which most applications don't bother identifying. If you don't log it, even the most clear event sequences under single thread condition start looking very confusing when multiple threads are running similar tasks at the same time.&lt;br /&gt;&lt;br /&gt;BlogicBlogger Over and Out&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8504592-112028109115126656?l=blogicblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://developers.slashdot.org/article.pl?sid=05/05/09/0039238&amp;threshold=4&amp;tid=156&amp;tid=4&amp;tid=218' title='Discussion: How should an application&apos;s log work'/><link rel='replies' type='application/atom+xml' href='http://blogicblog.blogspot.com/feeds/112028109115126656/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8504592&amp;postID=112028109115126656&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8504592/posts/default/112028109115126656'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8504592/posts/default/112028109115126656'/><link rel='alternate' type='text/html' href='http://blogicblog.blogspot.com/2005/07/discussion-how-should-applications-log.html' title='Discussion: How should an application&apos;s log work'/><author><name>BlogicBlogger</name><uri>http://www.blogger.com/profile/02931775813348618827</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8504592.post-112001461519391480</id><published>2005-06-28T22:59:00.000-04:00</published><updated>2005-06-28T23:10:15.196-04:00</updated><title type='text'>Do you mind closing that support case?</title><content type='html'>Andrew Wulf &lt;a href="http://codist.typepad.com/the_codist/2005/06/why_does_workin.html"&gt;writes &lt;/a&gt;- with feeling - about the clueless operations group in his company and how they manage to damage anything they touch.&lt;br /&gt;&lt;br /&gt;Great reading, but I have to take an exception with the following passage:&lt;br /&gt;&lt;blockquote&gt;As usual they initially blamed the programmers, then blamed the Java VM, BEA Weblogic, and the LDAP classes from Sun. They even called BEA to open a ticket on why Java could delete people from LDAP even though no delete function was even being called. I bet the yucks on that one hasn't stopped yet.&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;So, you know it is not BEA's fault, and yet you allow the support case to drag on. I had my share of the &lt;em&gt;prove the ldap code &lt;b&gt;does not&lt;/b&gt; do that&lt;/em&gt; cases and they are painfull.&lt;br /&gt;&lt;br /&gt;Would you be so kind as to make sure BEA knows that the case had been resolved. You don't even have to say that it was your fault. They would really appreciate it. &lt;b&gt;Please!&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;BlogicBlogger Over and Out&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8504592-112001461519391480?l=blogicblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blogicblog.blogspot.com/feeds/112001461519391480/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8504592&amp;postID=112001461519391480&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8504592/posts/default/112001461519391480'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8504592/posts/default/112001461519391480'/><link rel='alternate' type='text/html' href='http://blogicblog.blogspot.com/2005/06/do-you-mind-closing-that-support-case.html' title='Do you mind closing that support case?'/><author><name>BlogicBlogger</name><uri>http://www.blogger.com/profile/02931775813348618827</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8504592.post-111558866714042482</id><published>2005-05-08T17:33:00.000-04:00</published><updated>2005-05-08T17:44:27.193-04:00</updated><title type='text'>Visualizing Weblogic's config.xml</title><content type='html'>config.xml is a central piece of Weblogic's configuration. And for the problems spanning multiple configuration elements, it is often easier to look at the whole configuration file at once.&lt;br /&gt;&lt;br /&gt;However easier does not mean easy. Reading and searching through XML files is hard, especially when element/attribute meanings need to be looked up.&lt;br /&gt;&lt;br /&gt;To make it easier, Eugene Kuleshov has come up with a XSLT transformation that will &lt;a href="http://dev2dev.bea.com/blog/euxx/archive/2005/04/visualize_weblo.html"&gt;lay out a config.xml  in a nice HTML format&lt;/a&gt; and will also provide reference document link within one click.&lt;br /&gt;&lt;br /&gt;The next step would be to allow elements to cross reference each other, as there is a lot of internal cross linking within config.xml. This would of course depend on meta-information about linking patterns which is different between different versions of Weblogic.&lt;br /&gt;&lt;br /&gt;The transformation as provided should work for Weblogic 6.1 through 8.1. Diablo/WLS9, as far as I know, has a different format of config.xml.&lt;br /&gt;&lt;br /&gt;BlogicBlogger Over and Out&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8504592-111558866714042482?l=blogicblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://dev2dev.bea.com/blog/euxx/archive/2005/04/visualize_weblo.html' title='Visualizing Weblogic&apos;s config.xml'/><link rel='replies' type='application/atom+xml' href='http://blogicblog.blogspot.com/feeds/111558866714042482/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8504592&amp;postID=111558866714042482&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8504592/posts/default/111558866714042482'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8504592/posts/default/111558866714042482'/><link rel='alternate' type='text/html' href='http://blogicblog.blogspot.com/2005/05/visualizing-weblogics-configxml.html' title='Visualizing Weblogic&apos;s config.xml'/><author><name>BlogicBlogger</name><uri>http://www.blogger.com/profile/02931775813348618827</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8504592.post-111300331897239097</id><published>2005-04-08T19:19:00.000-04:00</published><updated>2005-04-08T19:35:18.973-04:00</updated><title type='text'>Applying open source philosophy to the end of the world!</title><content type='html'>I was reading a SF book, where due to the &lt;span style="font-style: italic;"&gt;End of the World&lt;/span&gt;, shops were being looted to the extend where the shopkeeper decided to just give everything away. And that is where it hit me. He could still make money out of it.&lt;br /&gt;&lt;br /&gt;Nobody's house is big enough to have everything. The shop owner could give away the goods, but sell the advice on what one needs to survive the longest in relative comfort (toilet paper, can opener, large UPS battery for the computer, etc). He may not make as much, but it certainly better than just giving it away with nothing returned. He may even be able to advise on what to take from other shops.&lt;br /&gt;&lt;br /&gt;So, there we have it. People kept saying that the Open Source Philosophy of giving away the goods and selling the services would be applicable to many areas. I believe I have found an unexpected confirmation for it.&lt;br /&gt;&lt;br /&gt;Oh, and the book was &lt;span style="font-style:italic;"&gt;Messiah Node&lt;/span&gt; by Lyda Morehouse. It is 3rd in the series and &lt;a href="http://www.amazon.com/exec/obidos/search-handle-url/ref=pd_sim_b_1/104-1060203-3017568?%5Fencoding=UTF8&amp;search-type=ss&amp;amp;index=books&amp;field-author=Lyda%20Morehouse"&gt;the whole series&lt;/a&gt; is strongly recommended for a geek (only slightly less so for a strongly religious geek).&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;&lt;/span&gt;&lt;br /&gt;BlogicBlogger Over and Out&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8504592-111300331897239097?l=blogicblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blogicblog.blogspot.com/feeds/111300331897239097/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8504592&amp;postID=111300331897239097&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8504592/posts/default/111300331897239097'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8504592/posts/default/111300331897239097'/><link rel='alternate' type='text/html' href='http://blogicblog.blogspot.com/2005/04/applying-open-source-philosophy-to-end.html' title='Applying open source philosophy to the end of the world!'/><author><name>BlogicBlogger</name><uri>http://www.blogger.com/profile/02931775813348618827</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8504592.post-111162670738605324</id><published>2005-03-23T19:13:00.000-05:00</published><updated>2005-03-23T21:06:24.213-05:00</updated><title type='text'>Re: Put down that decompiler - part two</title><content type='html'>In &lt;a href="http://blogicblog.blogspot.com/2005/03/re-put-down-that-decompiler.html"&gt;my previous article on this topic&lt;/a&gt;, I had given an scenario which justified the use of the decompiler.  I have now remembered a much better example.&lt;br /&gt;&lt;br /&gt;A customer had problems after upgrading Weblogic 8.1sp2 to 8.1sp3. His JSP - which was rather large - suddenly stoped working with 'method exceeds 64K' messages. The JSP itself hasn't changed between the versions.&lt;br /&gt;&lt;br /&gt;The obvious suggestion here is that BEA's JSP compiler started to generate larger code. We had one issue matching that, but reverting to the old behaviour via flag switch didn't help.&lt;br /&gt;&lt;br /&gt;Unfortunately, due to the complex nature of the JSP, I could not replicate the issue in my lab (too many dependencies and propriatary taglibs). So, I get the customer to send me the class files generated by both versions of JVM (JRockit's equivalents of SUN's 1.4.1 and 1.4.2).&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;The class file sizes are different&lt;/span&gt;!&lt;br /&gt;&lt;br /&gt;So, given the same input JSP, but different resulting class sizes what would you suspect? I figured that the JSP compiler must have other, not yet identified, changes and get the customer to give me java sources generated by the JSP compilers.&lt;br /&gt;&lt;br /&gt;Now, reading the source generated by a JSP compiler in my eyes is just as much of a voodoo and 'under-the-covers' work as any other decompilation. But of course, it was our (BEA's) compiler, so I had to do it anyway. No way to shift the blame to the other vendor here.&lt;br /&gt;&lt;br /&gt;So I slog through the source versions trying to identify the differences that are NOT comments. Eventually, I find out &lt;span style="font-style: italic;"&gt;the sources are the same&lt;/span&gt;!&lt;br /&gt;&lt;br /&gt;So, same JSP produces the same Java source, yet the class sizes are different. This is where I had to pull out a decompiler or to be exact the disassembler (&lt;span style="font-weight: bold;"&gt;javap&lt;/span&gt;).&lt;br /&gt;&lt;br /&gt;Unfortunately, decompiling both classes produced so many differences on a bytecode level that I had to go back and try to create a replication.&lt;br /&gt;&lt;br /&gt;To cut the long story short, it turned out that the difference in file sizes only appeared when there was a &lt;span style="font-style: italic;"&gt;try/finally&lt;/span&gt; clause. From that point on, the simple test case showed that the content of the finally clause was duplicated into the try class. And - worse yet- with nested &lt;span style="font-style: italic;"&gt;try/finally&lt;/span&gt; clauses, the outermost &lt;span style="font-style: italic;"&gt;finally&lt;/span&gt; could get copied up to &lt;span style="font-weight: bold;"&gt;four&lt;/span&gt; times.&lt;br /&gt;&lt;br /&gt;As you can probably imagine, BEA's JSP compiler had a lot of nested &lt;span style="font-style: italic;"&gt;try/finally&lt;/span&gt; clauses in an attempt to recover from nearly any JSP failure possible. The resulting copies of large finally clauses were more than enough to blow the method limit out of the water.&lt;br /&gt;&lt;br /&gt;So, I had a replication and I had an explanation of what happened. But I still did not know why. As the problem was happening in JRockit JVM, I escalated it to the JRockit engineers.&lt;br /&gt;&lt;br /&gt;They came back and said that there was no JRockit change that could cause that. &lt;span style="font-weight: bold;"&gt;But&lt;/span&gt;, they spoke to their Sun counterparts and somebody mentioned an internal bug report that may have something to do with it. It took a while to find the internal partner's account number, not something they just give out to random support personnel.&lt;br /&gt;&lt;br /&gt;Eventually, I got to read the bug and, sure enough, Sun changed the behaviour or &lt;span style="font-style: italic;"&gt;javac&lt;/span&gt; to generate duplicate sections (Bug ID: 4494152). And the reason they did that was so trivial that there must have been other ways to fix it. In fact, the change causes some ugly cascading bugs (&lt;a href="http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=4381996"&gt;1&lt;/a&gt;, &lt;a href="http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=4712394"&gt;2&lt;/a&gt;).&lt;br /&gt;&lt;br /&gt;In summary, there would have been no way I were able to identify the problem without breaking out the &lt;span style="font-style: italic;"&gt;javap&lt;/span&gt;. And no way would anybody else be able to identify a non-public Sun change without having a clear cut replication case.&lt;br /&gt;&lt;br /&gt;Disassemblers, decompilers, tracers, etc are all effective tools of a developer. Refusing to ever use one due to &lt;span style="font-style: italic;"&gt;the vendor's responsibility concept &lt;/span&gt;is not really a supportable stance. Even book publishers think that way (&lt;a href="http://www.amazon.com/exec/obidos/tg/detail/-/1590592654/qid=1111628761/sr=8-1/ref=sr_8_xs_ap_i1_xgl14/104-4224376-1263913?v=glance&amp;s=books&amp;amp;n=507846"&gt;1&lt;/a&gt;, &lt;a href="http://www.amazon.com/exec/obidos/tg/detail/-/0672326388/qid=1111628761/sr=8-2/ref=sr_8_xs_ap_i2_xgl14/104-4224376-1263913?v=glance&amp;s=books&amp;amp;n=507846"&gt;2&lt;/a&gt;).&lt;br /&gt;&lt;br /&gt;BlogicBlogger Over and Out&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8504592-111162670738605324?l=blogicblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blogicblog.blogspot.com/feeds/111162670738605324/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8504592&amp;postID=111162670738605324&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8504592/posts/default/111162670738605324'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8504592/posts/default/111162670738605324'/><link rel='alternate' type='text/html' href='http://blogicblog.blogspot.com/2005/03/re-put-down-that-decompiler-part-two.html' title='Re: Put down that decompiler - part two'/><author><name>BlogicBlogger</name><uri>http://www.blogger.com/profile/02931775813348618827</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8504592.post-111154167146171139</id><published>2005-03-22T20:03:00.000-05:00</published><updated>2005-03-22T20:36:39.786-05:00</updated><title type='text'>Podcast: Fight, Fight: Doctorow vs. Scoble on AutoLink</title><content type='html'>You don't normally get to hear the near-famous people fighting. Usually, they have their responses polished or they agree to disagree. Not so in this recent &lt;a href="http://www.itconversations.com/shows/detail438.html"&gt;podcast on Google's AutoLink&lt;/a&gt; from the ITConversations.&lt;br /&gt;&lt;br /&gt;In this one, both &lt;a href="http://scoble.weblogs.com/"&gt;Robert Scobble&lt;/a&gt; and &lt;a href="http://www.craphound.com/bio.html"&gt;Cory Doctorow&lt;/a&gt; lose their cool and start really throwing words around without listening to each other. Which is a pity, because it would have been nice to see them actually give in a point or two to the other side.&lt;br /&gt;&lt;br /&gt;It would be interesting to see what the &lt;a href="http://cheerleader.yoz.com/archives/001927.html"&gt;Great AutoLink FlameWar&lt;/a&gt; will end up with, though I have to say I am on Cory's side.  I have just started using &lt;a href="http://dunck.us/collab/GreaseMonkeyUserScripts"&gt;GreaseMonkey&lt;/a&gt; for the Firefox and think it is &lt;span style="font-weight: bold;"&gt;Good&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;Either way, I strongly recommend &lt;a href="http://www.itconversations.com/shows/detail438.html"&gt;the podcast&lt;/a&gt; for all its noise to signal ratio.&lt;br /&gt;&lt;br /&gt;BlogicBlogger Over and Out&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8504592-111154167146171139?l=blogicblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blogicblog.blogspot.com/feeds/111154167146171139/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8504592&amp;postID=111154167146171139&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8504592/posts/default/111154167146171139'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8504592/posts/default/111154167146171139'/><link rel='alternate' type='text/html' href='http://blogicblog.blogspot.com/2005/03/podcast-fight-fight-doctorow-vs-scoble.html' title='Podcast: Fight, Fight: Doctorow vs. Scoble on AutoLink'/><author><name>BlogicBlogger</name><uri>http://www.blogger.com/profile/02931775813348618827</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8504592.post-111149972352684423</id><published>2005-03-22T08:29:00.000-05:00</published><updated>2005-03-22T08:55:23.526-05:00</updated><title type='text'>Re: Put down that decompiler</title><content type='html'>Andrew Savory(?) &lt;a href="http://www.andrewsavory.com/blog/archives/000624.html"&gt;writes&lt;/a&gt; that if you have to stoop to decompiling a product to figure out a problem, it is the vendor's fault because they &lt;span style="font-weight: bold;"&gt;chose&lt;/span&gt; not to supply you with the code and documentation. So, if the vendor does not provide the source and the particular functionality is not well explained, it is completely vendor's fault. I wish it were so simple.&lt;br /&gt;&lt;br /&gt;I do agree that in the ideal world, every feature would be documented and/or working 100% correct. In reallity, it may be somewhat different.&lt;br /&gt;&lt;br /&gt;To give an example, Weblogic server allows to add your own security providers by dropping a jar into a particular directory. So, one of BEA customers gets a patch for the security provider code and dutifully drops it into the directory as per detailed instructions.&lt;br /&gt;&lt;br /&gt;And the fix does not work. Couple of support rounds happen where frontline support checks and rechecks that the customer has the right version of the file (yes), that it was put in the right directory (yes), that the fix does match the problem (again yes). All is correct, but nothing changes.&lt;br /&gt;&lt;br /&gt;The case gets escalated and out of desperation, we (effectively) stop beliving the customer and ask to provide a listing of the security provider directory showing sizes and dates of all the files.&lt;br /&gt;&lt;br /&gt;And then we realize that instead of a single jar (patched providers bundle), there is also another file in there called something like providers.jar.bak, an original copy of the bundle. Removing that file makes the problem goes away. Looking at the source code, it turns out that &lt;span style="font-weight: bold;"&gt;every&lt;/span&gt; file in that directory is loaded up as a jar with a provider bundle. And so, the old bundle kept being picked up.&lt;br /&gt;&lt;br /&gt;Whoever wrote the documentation, asked the old provider to be &lt;span style="font-style: italic;"&gt;backed up&lt;/span&gt;. And so they were. But nobody expected the backed up file to be in the same directory. A bug was filled and issue was fixed.&lt;br /&gt;&lt;br /&gt;But all this took a while. Mostly because we did not have access to the customer's system and everything was being done from the arm's distance. If the customer was conversant with a decompiler, they could have reverse-engineered the code that loaded the jar and ether noticed the problem right away or put log statements in to print out when the jar was loaded (and see it ping twice, rather than expected once).&lt;br /&gt;&lt;br /&gt;The lesson here is that, yes this was dodgy and should have been fixed (and was). But there is a range of situations where the problem lies in shades of meanings and reverse-engineering will often give a better and faster answer than jumping up and down and screaming for the vendor to fix 'something, anything, whatever it is'.&lt;br /&gt;&lt;br /&gt;On a related note, it might have been possible to identify the same problem by running a &lt;a href="http://www.sysinternals.com/ntw2k/source/filemon.shtml"&gt;FileMon&lt;/a&gt; and noticing that backup file was actually read in where it should not have. But in my eyes, FileMon is just one of the tools in reverse-engineering/decompiling toolkit, so&lt;br /&gt;it would be out of Andrew's reach as well.&lt;br /&gt;&lt;br /&gt;BlogicBlogger Over and Out&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8504592-111149972352684423?l=blogicblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blogicblog.blogspot.com/feeds/111149972352684423/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8504592&amp;postID=111149972352684423&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8504592/posts/default/111149972352684423'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8504592/posts/default/111149972352684423'/><link rel='alternate' type='text/html' href='http://blogicblog.blogspot.com/2005/03/re-put-down-that-decompiler.html' title='Re: Put down that decompiler'/><author><name>BlogicBlogger</name><uri>http://www.blogger.com/profile/02931775813348618827</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8504592.post-111129834440890087</id><published>2005-03-20T00:14:00.000-05:00</published><updated>2005-03-20T01:10:47.840-05:00</updated><title type='text'>RE: MIke Clark's article on making software troubleshoot itself</title><content type='html'>Mike Clark is looking at automatic first-line support by building some auto-support functionality straight into the program. It is an &lt;a href="http://www.pragmaticautomation.com/cgi-bin/pragauto.cgi/Deploy/TellMeWhereItHurts.rdoc"&gt;article&lt;/a&gt; worth reading.&lt;br /&gt;&lt;br /&gt;One thing that the article does mention - in a somewhat negative way - is the 'secret' checklist the developer would go through to troubleshoot the application. He suggests that the 'secret' checklist can be automated by the tests. In my own experience (with BEA weblogic support), the checklist is usually more like a branching tree of decisions that would be fairly hard to encode as any simple set of JUnit tasks.&lt;br /&gt;&lt;br /&gt;I wonder how real Mike's examples were and what percentage of the checklist he managed to automate?&lt;br /&gt;&lt;br /&gt;To be perfectly clear, I do not think his article is wrong. Far from it, I think it is great direction to explore in further details. I just don't want people to accept the support checklists as 'secret' in general. I think the support &lt;span style="font-weight: bold;"&gt;techniques&lt;/span&gt; should be paid attention to and built into the great knowledge web that anybody can learn from without having to rely on an expensive specialist at the other end of the line.&lt;br /&gt;&lt;br /&gt;I know that there is a lot of FAQ style websites dealing with the specific problems and they are good. But we also need some &lt;span style="font-weight: bold;"&gt;meta&lt;/span&gt; level discussions on the open forums as well.&lt;br /&gt;&lt;br /&gt;Perhaps a support-wiki or &lt;a href="http://en.wikibooks.org/wiki/Wikiversity"&gt;Wikiversity&lt;/a&gt; course would be the way?&lt;br /&gt;&lt;br /&gt;BlogicBlogger Over and Out&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8504592-111129834440890087?l=blogicblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://www.pragmaticautomation.com/cgi-bin/pragauto.cgi/Deploy/TellMeWhereItHurts.rdoc' title='RE: MIke Clark&apos;s article on making software troubleshoot itself'/><link rel='replies' type='application/atom+xml' href='http://blogicblog.blogspot.com/feeds/111129834440890087/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8504592&amp;postID=111129834440890087&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8504592/posts/default/111129834440890087'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8504592/posts/default/111129834440890087'/><link rel='alternate' type='text/html' href='http://blogicblog.blogspot.com/2005/03/re-mike-clarks-article-on-making.html' title='RE: MIke Clark&apos;s article on making software troubleshoot itself'/><author><name>BlogicBlogger</name><uri>http://www.blogger.com/profile/02931775813348618827</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8504592.post-110964824492910872</id><published>2005-02-28T22:21:00.000-05:00</published><updated>2005-02-28T22:37:24.933-05:00</updated><title type='text'>Technical support patterns, where are you?</title><content type='html'>We have &lt;a href="http://en.wikipedia.org/wiki/Design_pattern_%28computer_science%29"&gt;Design patterns&lt;/a&gt;, &lt;a href="http://hillside.net/patterns/books/dparch-cat.htm"&gt;Analysis patterns&lt;/a&gt; and even &lt;a href="http://www.unity-software.com/html/about_us/articles/patterns.html"&gt;Maintenance patterns&lt;/a&gt;. But where are the &lt;span style="font-style: italic;"&gt;Technical support patterns&lt;/span&gt; ?&lt;br /&gt;&lt;br /&gt;Oh, we have plenty of &lt;a href="http://www.bebosh.com/techsupport/"&gt;horror stories&lt;/a&gt;, but nobody seems to be drawing lessons out of them.&lt;br /&gt;&lt;br /&gt;The nearest I found was the &lt;a href="http://hillside.net/Wiki/wiki.cgi?D4MMbD"&gt;Maintainability pattern language&lt;/a&gt;, which is worth a read. But even that document is too generic to be useful in the trenches.&lt;br /&gt;&lt;br /&gt;I am still looking. If I don't find anything, I will try to codify my own experience, but surely somebody else has done at least some of it already.&lt;br /&gt;&lt;br /&gt;BlogicBlogger Over and Out&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8504592-110964824492910872?l=blogicblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blogicblog.blogspot.com/feeds/110964824492910872/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8504592&amp;postID=110964824492910872&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8504592/posts/default/110964824492910872'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8504592/posts/default/110964824492910872'/><link rel='alternate' type='text/html' href='http://blogicblog.blogspot.com/2005/03/technical-support-patterns-where-are.html' title='Technical support patterns, where are you?'/><author><name>BlogicBlogger</name><uri>http://www.blogger.com/profile/02931775813348618827</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8504592.post-110878779500882277</id><published>2005-02-18T23:15:00.000-05:00</published><updated>2005-02-18T23:36:35.010-05:00</updated><title type='text'>Re: IBM's HeapAnalyzer</title><content type='html'>IBM has refreshed the &lt;a href="http://www.alphaworks.ibm.com/tech/heapanalyzer"&gt;HeapAnalyzer &lt;/a&gt;software. Goodness of their heart? Not so fast.&lt;br /&gt;&lt;br /&gt;Apparently, HeapAnalyzer used to be an internal IBM support tool.  Paid customers who had problems with IBM JVM would take the memory snapshots and IBM support would use the tool to do the analysis and recomendations.&lt;br /&gt;&lt;br /&gt;Now - with the tool available to the public - IBM support &lt;span style="font-style: italic;"&gt;will no longer analyse customers' memory leaks&lt;/span&gt;. Apparently the tool is so intuitive and produces so good results that the customer can figure out the answers themselves after playing with the tool for a short while.&lt;br /&gt;&lt;br /&gt;So, when a &lt;span style="font-style: italic;"&gt;big&lt;/span&gt; customer of both BEA and IBM products was having production memory leaks within IBM's JVM, we (BEA support) had to help them to troubleshoot it because &lt;span style="font-weight: bold;"&gt;IBM refused&lt;/span&gt;. Something not quite right here.&lt;br /&gt;&lt;br /&gt;Oh yeah, and even after spending more than an hour on it, the tool's output and interface was still confusing to me. And with &lt;a href="http://www.vim.org/"&gt;Vim&lt;/a&gt; as my primary editor, I should be fairly familiar to obscure interfaces.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;&lt;/span&gt;BlogicBlogger Over and Out&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8504592-110878779500882277?l=blogicblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://www.alphaworks.ibm.com/tech/heapanalyzer' title='Re: IBM&apos;s HeapAnalyzer'/><link rel='replies' type='application/atom+xml' href='http://blogicblog.blogspot.com/feeds/110878779500882277/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8504592&amp;postID=110878779500882277&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8504592/posts/default/110878779500882277'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8504592/posts/default/110878779500882277'/><link rel='alternate' type='text/html' href='http://blogicblog.blogspot.com/2005/02/re-ibms-heapanalyzer.html' title='Re: IBM&apos;s HeapAnalyzer'/><author><name>BlogicBlogger</name><uri>http://www.blogger.com/profile/02931775813348618827</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8504592.post-110678202984538620</id><published>2005-01-26T18:00:00.000-05:00</published><updated>2005-01-26T18:27:09.846-05:00</updated><title type='text'>Thoughts on: Google Video Search</title><content type='html'>So, now Google can search TV programs based on the subtitles. While there is still a lot of improvements, I can see one interesting use of it straight away (well, within reach anyway).&lt;br /&gt;&lt;br /&gt;Connect &lt;a href="http://video.google.com/"&gt;Google Video Search&lt;/a&gt;, &lt;a href="http://www.google.com/alerts"&gt;Google alerts&lt;/a&gt; and &lt;a href="http://www.tivo.com/"&gt;Tivo&lt;/a&gt; (or more probably a custom coded &lt;a href="http://www.byopvr.com/"&gt;PVR&lt;/a&gt;) and you can chose shows to record in slack time based on how often those shows mention your favourite keywords. Make the interface real-time (probably not very likely) and you might be able to trigger PVR to start recording a program when a keyword is mentioned.&lt;br /&gt;&lt;br /&gt;It might be possible to do this now in PVR software by making it watch the captions keywords, but from what I understand you need to actively monitor specific channel for that. The Google method would allow to collect the statistical information and fine-tune the results over time. &lt;br /&gt;&lt;br /&gt;Actually, there is a business idea here for a paid service. Somebody could setup several capture cards in parallel and have subscribed keyword watches with real time ping triggering user's PVR. Let me know if you make a business out of this idea or want more details on how that could work. It is quite possibly &lt;a href="http://forums.sage.tv/forums/archive/index.php?t-451.html"&gt;not a new idea&lt;/a&gt; in its basic form, but with more people building PVRs it might be the time to reexamine it.&lt;br /&gt;&lt;br /&gt;If you have any feedback on the Google's new feature, you can always comment on &lt;a href="http://groups-beta.google.com/group/Google-Labs-Google-Video"&gt;Google's discussion group&lt;/a&gt; that is setup specifically for this.&lt;br /&gt;&lt;br /&gt;BlogicBlogger Over and Out&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8504592-110678202984538620?l=blogicblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://video.google.com/' title='Thoughts on: Google Video Search'/><link rel='replies' type='application/atom+xml' href='http://blogicblog.blogspot.com/feeds/110678202984538620/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8504592&amp;postID=110678202984538620&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8504592/posts/default/110678202984538620'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8504592/posts/default/110678202984538620'/><link rel='alternate' type='text/html' href='http://blogicblog.blogspot.com/2005/01/thoughts-on-google-video-search.html' title='Thoughts on: Google Video Search'/><author><name>BlogicBlogger</name><uri>http://www.blogger.com/profile/02931775813348618827</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8504592.post-110239171500590865</id><published>2004-12-06T22:45:00.000-05:00</published><updated>2004-12-06T22:56:27.286-05:00</updated><title type='text'>Link: The BileBlog, without the Bile</title><content type='html'>I read Hani's &lt;a href="http://jroller.com/page/fate/"&gt;BileBlog &lt;/a&gt;incidentally. I used to have him in my RSS reader, but the language makes it hard to concentrate on the arguments (valid as they often are). I still get him through search or topic aggregators occasionally.&lt;br /&gt;&lt;br /&gt;So, when I saw &lt;a href="http://gregluck.com/blog/archives/2004/12/the_bileblog_wi.html"&gt;Greg Luck's deBilefication and further discussion of the Hani's entries&lt;/a&gt;, I read them very carefully and empathised much more with the topic than when I read the  original articles.&lt;br /&gt;&lt;br /&gt;Perhaps Graig could setup translating service for those of us who do not require our content covered with a colourful language gravy.&lt;br /&gt;&lt;br /&gt;I would also love to know where did the &lt;em&gt;100 types of tests&lt;/em&gt; chart came from. I wouldn't mind having one myself. Was it from the linked book?&lt;br /&gt;&lt;br /&gt;BlogicBlogger Over and Out&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8504592-110239171500590865?l=blogicblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://gregluck.com/blog/archives/2004/12/the_bileblog_wi.html' title='Link: The BileBlog, without the Bile'/><link rel='replies' type='application/atom+xml' href='http://blogicblog.blogspot.com/feeds/110239171500590865/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8504592&amp;postID=110239171500590865&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8504592/posts/default/110239171500590865'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8504592/posts/default/110239171500590865'/><link rel='alternate' type='text/html' href='http://blogicblog.blogspot.com/2004/12/link-bileblog-without-bile.html' title='Link: The BileBlog, without the Bile'/><author><name>BlogicBlogger</name><uri>http://www.blogger.com/profile/02931775813348618827</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8504592.post-110204327722442227</id><published>2004-12-02T21:53:00.000-05:00</published><updated>2004-12-02T22:07:57.223-05:00</updated><title type='text'>Link: A revenge Zombie is still a Zombie</title><content type='html'>&lt;span class="heading"&gt;&lt;a href="http://radio.javaranch.com/channel/frank/2004/12/02/1102017472000.html"&gt;Frank Carver is not impressed with anti-spam screensaver.&lt;/a&gt; I think there is an additional danger beyond just handling the control over to the corporation. &lt;br /&gt;And that is a danger of somebody hacking the communication/update protocol and substituting the list of hosts. And since the screensaver was installed on purpose, user will ensure that all the firewalls are cleared and will ignore any warnings regarding the program.&lt;br /&gt;&lt;br /&gt;On the other hand, the download website already seems down. Did someone perhaps repointed their program back at them? Or was it the &lt;a href="http://it.slashdot.org/article.pl?sid=04/12/02/2221253&amp;threshold=4"&gt;Slashdot Effect&lt;/a&gt;? &lt;br /&gt;&lt;br /&gt;&lt;/span&gt;BlogicBlogger Over and Out&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8504592-110204327722442227?l=blogicblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://radio.javaranch.com/channel/frank/2004/12/02/1102017472000.html' title='Link: A revenge Zombie is still a Zombie'/><link rel='replies' type='application/atom+xml' href='http://blogicblog.blogspot.com/feeds/110204327722442227/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8504592&amp;postID=110204327722442227&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8504592/posts/default/110204327722442227'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8504592/posts/default/110204327722442227'/><link rel='alternate' type='text/html' href='http://blogicblog.blogspot.com/2004/12/link-revenge-zombie-is-still-zombie.html' title='Link: A revenge Zombie is still a Zombie'/><author><name>BlogicBlogger</name><uri>http://www.blogger.com/profile/02931775813348618827</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8504592.post-110190596992212341</id><published>2004-12-01T07:25:00.000-05:00</published><updated>2004-12-01T15:06:28.783-05:00</updated><title type='text'>ReRe: support's view on customers</title><content type='html'>The  internet could be a very small place. One of my clued-up customers is aparently also my subscriber (and vice-versa).&lt;br /&gt;&lt;br /&gt;He was wondering &lt;a href="http://dim.colebatch.com/blog/archives/2004/12/listening_to_th.html"&gt;why questions from 'intelligent customers' do not go straight to Backline (tier-3) support&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;There are several reasons.&lt;br /&gt;&lt;br /&gt;First one is that Backline (BL) and Frontline (FL) support (as BEA names tier-3 and tier-1 correspondingly) actually have different strength.&lt;br /&gt;Frontline support is very good on collecting initial information, checking documentation and internal support databases. They may seem a bit information greedy, but often missing a configuration file at the start may lose a lot of time later. Essentially, FL DREs are very good at connecting the 'known' dots.&lt;br /&gt;&lt;br /&gt;Backline support engineers on the other hand are much better at the hard problems and at problems with hidden variables. We are also the ones familiar with non-BEA technologies and other developer land tricks.&lt;br /&gt;&lt;br /&gt;When I (a BL support) had to do a Frontline engineer's job, I sometimes find out that I miss basic information nugget that would have been collected by a FL support and matched against a known issue. I would get to the same information via replication or source code search which is more general technique, but may takes longer.&lt;br /&gt;&lt;br /&gt;In most of the cases, leaving the case to FL DREs until they are ready to escalate is really the best way. Especially, since FL will often bring in a BL engineer behind the scenes to just get a read of a case and confirm the direction taken. That way, the customer still deals with one person, but gets the expertise of two (or sometimes even three) engineers.&lt;br /&gt;&lt;br /&gt;The second reason is to do with a field of expertise. A JMS specialist may not know much about certificate signing; an EJB guru is fairly unused to the network issues cases by firewall for remote clients. Support engineers (FL and BL) are trained to be jacks of all trades and even FL engineer is more than enough support presence for a customer working out of his/her depth.&lt;br /&gt;&lt;br /&gt;The final reason is simply financial. Higher priced support offerings allow a faster access to senior DREs (FL or BL). Some offerings even have dedicated DREs (at least in their own timezone).  Also, the more money goes into the support. the more company is willing to hire additional people to do it.&lt;br /&gt;&lt;br /&gt;Finally, just to comment on the support question Dim was writing about, I looked it up. If I found the correct case (from mid 2003), it was actually resolved by me via replication and turned out to be the correct - if not obvious - behaviour with the given configuration.&lt;br /&gt;Customer was frustrated because it took a while to figure the problem out. Why did it take so long? Well, it turned out that I was missing customer's configuration file (config.xml). In absence of it, I followed written down configuration instructions, which turned out to be incorrect on one tiny, but crucial point of JMS file store configuration. A frontline support engineer would have ensured that the config.xml was collected as a compulsory first step.&lt;br /&gt;&lt;br /&gt;In conclusion, I am sure that there are good and bad cases. BEA's near future goal is to actually concentrate on making the support better, faster and more proactive. In fact, I have some visibility and influence into the process. If you are a BEA customer and have a real suggestion on how BEA support could be better, put it in the comments.&lt;br /&gt;&lt;br /&gt;BlogicBlogger Over and Out&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8504592-110190596992212341?l=blogicblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://dim.colebatch.com/blog/archives/2004/12/listening_to_th.html' title='ReRe: support&apos;s view on customers'/><link rel='replies' type='application/atom+xml' href='http://blogicblog.blogspot.com/feeds/110190596992212341/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8504592&amp;postID=110190596992212341&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8504592/posts/default/110190596992212341'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8504592/posts/default/110190596992212341'/><link rel='alternate' type='text/html' href='http://blogicblog.blogspot.com/2004/12/rere-supports-view-on-customers.html' title='ReRe: support&apos;s view on customers'/><author><name>BlogicBlogger</name><uri>http://www.blogger.com/profile/02931775813348618827</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8504592.post-110188398120956085</id><published>2004-12-01T01:38:00.000-05:00</published><updated>2004-12-01T01:53:01.210-05:00</updated><title type='text'>Link: What a difference .1 makes: HTTP 1.1 Persistent Connections</title><content type='html'>Subbu Allamaraju has written &lt;a href="http://www.subbu.org/weblogs/welcome/2004/11/persistent_conn.html"&gt;a very good description of the tricks HTTP 1.1 goes to utilise connections more efficiently&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Reading his article makes very clear that persistent connections are quite tricky and developing new code dealing with the topic requires careful thought.&lt;br /&gt;&lt;br /&gt;And, of course, troubleshooting persistent connections is quite hard. &lt;a href="http://www.ethereal.com/"&gt;Ethereal&lt;/a&gt; comes quite handy in here, but even that does not know how to extract individual parts of conversations. Does anybody know &lt;em&gt;free&lt;/em&gt; tools that work in a network sniffing mode (not proxy mode)?&lt;br /&gt;&lt;br /&gt;BlogicBlogger Over and Out&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8504592-110188398120956085?l=blogicblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://www.subbu.org/weblogs/welcome/2004/11/persistent_conn.html' title='Link: What a difference .1 makes: HTTP 1.1 Persistent Connections'/><link rel='replies' type='application/atom+xml' href='http://blogicblog.blogspot.com/feeds/110188398120956085/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8504592&amp;postID=110188398120956085&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8504592/posts/default/110188398120956085'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8504592/posts/default/110188398120956085'/><link rel='alternate' type='text/html' href='http://blogicblog.blogspot.com/2004/12/link-what-difference-1-makes-http-11.html' title='Link: What a difference .1 makes: HTTP 1.1 Persistent Connections'/><author><name>BlogicBlogger</name><uri>http://www.blogger.com/profile/02931775813348618827</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8504592.post-110179949326117380</id><published>2004-11-30T01:44:00.000-05:00</published><updated>2004-11-30T02:24:53.260-05:00</updated><title type='text'>Slashdot: Should vendors have root access to customer systems?</title><content type='html'>Interesting  - and at comments threshold 4, meaninful - discussion on slashdot &lt;a href="http://ask.slashdot.org/article.pl?sid=04/11/24/192210&amp;tid=185&amp;amp;threshold=4"&gt;whether vendors need root access to customer's equipment/OS&lt;/a&gt;. Eventually, it diverges into dumb vendors vs. dumb customers.&lt;br /&gt;&lt;br /&gt;At BEA, we don't actually need root access to the system. In fact, you have to go out of your way to run at port 80 or with other root related issues. Comes with a Java territory, I guess. In fact, we prefer &lt;strong&gt;not&lt;/strong&gt; to login into the customer system at all, but rather collect logs and analyse them on our own machines.&lt;br /&gt;&lt;br /&gt;On the other hand, I do feel the discussion of who is smarter to be close to my heart.&lt;br /&gt;&lt;br /&gt;I think that after years of working as Backline (Tier 3) support at BEA, I find myself liking two extremes of the customers.&lt;br /&gt;&lt;ul&gt;&lt;li&gt; I like the customers who know what they are doing, how their system or network is setup and where their logs go. I like the customers who I can ask to &lt;em&gt;run the software under nohup and redirect both stdout and stderr into the same file&lt;/em&gt;.&lt;br /&gt;&lt;/li&gt;&lt;li&gt; I also find that I don't mind customer with not much clue, but aware that they are out of their depth. There was a number of times when an engineer has to fix the system they weren't even aware of until that &lt;em&gt;evening&lt;/em&gt;. And it usually is evening and - lo and behold - they have a whole night to sort it out.&lt;br /&gt;These customers will follow my direction to the letter, they will tell me what they see, and they will read back the error messages with a precision. Yes, it takes a bit longer to go through the steps and the support engineer need to really think on their feet, but it is still ok. And when you fix their problems, these customers do know that you helped them.&lt;br /&gt;&lt;/li&gt; &lt;/ul&gt;&lt;br /&gt;The customers I find myself not enjoying are those in the middle. They think they know what the problem is, therefore they only send partial logs, snip out &lt;em&gt;unrelated&lt;/em&gt; error messages and think the problem is obvious from a terse general description. (try &lt;em&gt;Server crashed today. Please send patch.&lt;/em&gt;) For them, I find I have to explain every step in very clear written down details.&lt;br /&gt;&lt;br /&gt;As an example, we often request an access log and server log in parallel. A customer like this would send access log for last 3 months and a server log from the last 3 hour run for the problem that happened 2 day prior. I have to re-request the log and in process explain everything about log roll-overs, checking the log entires' timestamps and general log locations. Not something you would expect to need to do for a sysadmin of a large organisation.&lt;br /&gt;&lt;br /&gt;In terms of case types, the most hated situation around the office here is a customer that creates a new case (again, &lt;span style="font-style: italic;"&gt;Server crashed, please fix&lt;/span&gt;) and requests an engineer to join the bridge where 30 people have been discussing this issue for 8-30 hours already.&lt;br /&gt;&lt;br /&gt;Very often, we are not useful without seeing exact exception and/or log files in a context. Also, BEA product family is very large and - even though we support all of it - we have our own individual expertise areas. My &lt;span style="font-style: italic;"&gt;hanging server&lt;/span&gt; skills are much higher than my &lt;span style="font-style: italic;"&gt;JMS message lost&lt;/span&gt; skills (which my coworker excels in), so just asking somebody to join the bridge (and stay on it until resolution) will actually benefit less to the customer than spending extra 10 minutes on writing down the description.&lt;br /&gt;&lt;br /&gt;For myself, I find it survivable to land in one of those &lt;em&gt;bridge calls&lt;/em&gt; &lt;strong&gt;as long as the customer has a clue&lt;/strong&gt;.&lt;br /&gt;&lt;br /&gt;We have two very large USA telcos that like to do bridge calls. One has engineers with a very strong clue (even their CEO does),  another seems to provide no training OR resources to their so-called sysadmins. Guess which one I hate to work with? Guess which one I will NOT consider as my provider, as I can see how bad their problem-solving skills are.&lt;br /&gt;&lt;br /&gt;Anyway, enough rant. If anybody is interested in specific aspects of support life, ask in the comments.&lt;br /&gt;&lt;br /&gt;BlogicBlogger Over and Out&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8504592-110179949326117380?l=blogicblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://ask.slashdot.org/article.pl?sid=04/11/24/192210&amp;tid=185&amp;threshold=4' title='Slashdot: Should vendors have root access to customer systems?'/><link rel='replies' type='application/atom+xml' href='http://blogicblog.blogspot.com/feeds/110179949326117380/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8504592&amp;postID=110179949326117380&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8504592/posts/default/110179949326117380'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8504592/posts/default/110179949326117380'/><link rel='alternate' type='text/html' href='http://blogicblog.blogspot.com/2004/11/slashdot-should-vendors-have-root.html' title='Slashdot: Should vendors have root access to customer systems?'/><author><name>BlogicBlogger</name><uri>http://www.blogger.com/profile/02931775813348618827</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8504592.post-110177091021178057</id><published>2004-11-29T18:12:00.000-05:00</published><updated>2004-11-29T18:28:30.213-05:00</updated><title type='text'>Link: Weblogic and Active Directory Authentication</title><content type='html'>Luke Dewavrin is writing about &lt;a href="http://jroller.com/page/ldewavrin/20041129#plugging_weblogic_s_authentication_to"&gt;what it takes to get Weblogic use Microsoft Active Directory as an Authentication Provider&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;He also mentions couple of issues that people get burned by the first time they use WLS Security Providers architecture.&lt;br /&gt;&lt;br /&gt;Specifically, he talks about the need to set JAAS flags to "Sufficient" or "Optional". Let me reinforce that; the flag need to be changed &lt;strong&gt;before&lt;/strong&gt; the provider setup is saved. Otherwise, you most probably will not be able to restart WLS instance again.&lt;br /&gt;Fortunately, WLS 8.1 stores the information in the config.xml and it can be edited fairly easy. As a history note, WLS 7.0 stored the information in the binary form outside of config.xml and to edit it, one would have to follow recovery export/import procedures.&lt;br /&gt;&lt;br /&gt;For myself, I always found Active Directory hard to troubleshoot, mostly because of the inability to get good logs. As a comparison, iPlanet Directory Server has very detailed and helpful access logs that I have used many times to isolate issues like incorrect configuration, slow authentication and even firewall timeout. I tried to find an equivalent set of logs for AD, but could not. Maybe they call it something else entirely.&lt;br /&gt;&lt;br /&gt;BlogicBlogger Over and Out &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8504592-110177091021178057?l=blogicblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://jroller.com/page/ldewavrin/20041129#plugging_weblogic_s_authentication_to' title='Link: Weblogic and Active Directory Authentication'/><link rel='replies' type='application/atom+xml' href='http://blogicblog.blogspot.com/feeds/110177091021178057/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8504592&amp;postID=110177091021178057&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8504592/posts/default/110177091021178057'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8504592/posts/default/110177091021178057'/><link rel='alternate' type='text/html' href='http://blogicblog.blogspot.com/2004/11/link-weblogic-and-active-directory.html' title='Link: Weblogic and Active Directory Authentication'/><author><name>BlogicBlogger</name><uri>http://www.blogger.com/profile/02931775813348618827</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8504592.post-110169361469188144</id><published>2004-11-28T21:14:00.000-05:00</published><updated>2004-11-28T21:00:14.693-05:00</updated><title type='text'>Business model for ITConversations</title><content type='html'>Doug Kaye is &lt;a href="http://www.itconversations.com/wikis/itc/pmwiki.php/Main/BusinessModel"&gt;asking &lt;/a&gt;how to make his very reputable &lt;a href="http://www.itconversations.com/"&gt;ITConversations&lt;/a&gt; podcast website actually bring in money.&lt;br /&gt;&lt;br /&gt;For me, ITConversations is the only podcast that I listen to reliably as I listen for content, not entertainment. Pop!Tech series were absolutely riveting, especially &lt;a href="http://www.itconversations.com/shows/detail239.html"&gt;WorldChanging.com&lt;/a&gt; and &lt;a href="http://www.itconversations.com/shows/detail241.html"&gt;BioMimicry&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;So, following is my idea which I was thinking about for a while and can see having worth beyond one site's commercial success.&lt;br /&gt;&lt;br /&gt;The idea is based on having paid subscribers who then get to vote on the show they want to hear.&lt;br /&gt;Following is a sample use case:&lt;br /&gt;&lt;ol&gt;&lt;li&gt; I join ITConversations and pay $X deposit (say $20).&lt;br /&gt;&lt;/li&gt;&lt;li&gt; At some point later, I find that I really want to hear (for example) Tim O'Reilly's views on podcasting. Or maybe I listened to a Memory Lane and want a follow-up on specific issues. Or I may want an interview on the state of the art of &lt;a href="http://www.machinima.org/"&gt;Machinima&lt;/a&gt;, which is &lt;em&gt;just&lt;/em&gt; entering global consciousness.&lt;br /&gt;&lt;/li&gt;&lt;li&gt; I create a request item and commit $Y of my deposit to it.&lt;br /&gt;&lt;/li&gt;&lt;li&gt; The request goes to a vote with the other paid subscribers. They can discuss it and hopefully commit some of their own funds to it as a vote.&lt;br /&gt;&lt;/li&gt;&lt;li&gt; Once the total amount reaches the threshold,  site owner (Doug) accepts the request and effectively makes a sale for future podcast.&lt;br /&gt;&lt;/li&gt;&lt;li&gt; When the show is produced, it is available to the people who committed funds to it.&lt;br /&gt;&lt;/li&gt;&lt;li&gt; The sponsored show may also enter general availability some time later (or be available at nominal cost to the other subscribers)&lt;br /&gt;&lt;/li&gt;&lt;/ol&gt;&lt;br /&gt;There are several advantages to this model:&lt;br /&gt;&lt;ul&gt;&lt;li&gt; There is no need for micro-transactions for each vote, as they are pre-aggregated by the deposit and can be managed via top-ups mechanism&lt;br /&gt;&lt;/li&gt;&lt;li&gt; Since the money is already paid, the perceptual barrier of entry (for vote) is easier.&lt;br /&gt;&lt;/li&gt;&lt;li&gt; Voting means that the topics selected will be user-driven and more timely than trend spotting.&lt;br /&gt;&lt;/li&gt;&lt;li&gt; If the sponsored show is only available to subscribers (even for free), it makes it very enticing to join, which requires some deposit. And once the deposit is made, it is easier to vote. This creates a positive feedback loop with more cash throughput.&lt;br /&gt;&lt;/li&gt;&lt;li&gt; Community around voting and discussion (which could be made public) will keep people coming back over and over again.&lt;br /&gt;&lt;/li&gt;&lt;li&gt; Advertisers will &lt;strong&gt;love&lt;/strong&gt; seeing the vote results and perhaps target the ads at the specific subjects being discussed.&lt;br /&gt;&lt;/li&gt;&lt;li&gt; Money paid as deposit are transferred before being used up and therefore earn the percentage from early on.&lt;/li&gt;&lt;li&gt;Finally, once the system is implemented, it can be used for features requests and other website work that requires a confirmed commitment rather than bluesky ideas.&lt;br /&gt;  &lt;/li&gt; &lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;There are obviously some difficulties to resolve, such as amount thresholds, clear topic selection and satisfaction of paid content. But they are all solvable, at least in a long run.&lt;br /&gt;&lt;br /&gt;I would be happy to answer further questions on this idea, if anything is not clear.&lt;br /&gt;&lt;br /&gt;BlogicBlogger Over and Out&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8504592-110169361469188144?l=blogicblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://www.itconversations.com/wikis/itc/pmwiki.php/Main/BusinessModel' title='Business model for ITConversations'/><link rel='replies' type='application/atom+xml' href='http://blogicblog.blogspot.com/feeds/110169361469188144/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8504592&amp;postID=110169361469188144&amp;isPopup=true' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8504592/posts/default/110169361469188144'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8504592/posts/default/110169361469188144'/><link rel='alternate' type='text/html' href='http://blogicblog.blogspot.com/2004/11/business-model-for-itconversations.html' title='Business model for ITConversations'/><author><name>BlogicBlogger</name><uri>http://www.blogger.com/profile/02931775813348618827</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8504592.post-110143463383990811</id><published>2004-11-25T21:53:00.000-05:00</published><updated>2004-11-25T21:03:53.840-05:00</updated><title type='text'>Suport Story: A tale of twenty cookies</title><content type='html'>Very interesting story of what happens when built in defaults have silent limits. In this story, each ADF application modules (&lt;a href="http://helponline.oracle.com/jdeveloper/help?topic=bc_aam_html"&gt;whatever they are&lt;/a&gt;) needed a cookie with default configuration. This silently runs into spec limitations.&lt;br /&gt;&lt;br /&gt;Fortunately, Weblogic does not generate multiple cookies by default, though you could certainly assign one for each of the webapp.&lt;br /&gt;&lt;br /&gt;For me as a support person, it is fascinating to read how other support people solve customer's problems. I wish I could read the internal case log for that particular support case.&lt;br /&gt;&lt;br /&gt;If it were me, I would have asked customer to do the requests with &lt;a href="http://www.blunck.info/iehttpheaders.html"&gt;ieHttpHeaders&lt;/a&gt;, enabled &lt;a href="http://support.bea.com/support_news/product_troubleshooting/General_Diagnostic_Process_for_Problems_with_Proxy_Plug_in_Pattern.html"&gt;Webogic proxy debug log&lt;/a&gt; (if available) or put &lt;a href="http://www.ethereal.com/"&gt;Ethereal&lt;/a&gt; on the wire.&lt;br /&gt;&lt;br /&gt;BlogicBlogger Over and Out&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8504592-110143463383990811?l=blogicblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://radio.weblogs.com/0118231/2004/11/25.html#a446' title='Suport Story: A tale of twenty cookies'/><link rel='replies' type='application/atom+xml' href='http://blogicblog.blogspot.com/feeds/110143463383990811/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8504592&amp;postID=110143463383990811&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8504592/posts/default/110143463383990811'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8504592/posts/default/110143463383990811'/><link rel='alternate' type='text/html' href='http://blogicblog.blogspot.com/2004/11/suport-story-tale-of-twenty-cookies.html' title='Suport Story: A tale of twenty cookies'/><author><name>BlogicBlogger</name><uri>http://www.blogger.com/profile/02931775813348618827</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8504592.post-110143109980221045</id><published>2004-11-25T18:56:00.000-05:00</published><updated>2004-11-25T20:04:59.803-05:00</updated><title type='text'>Microrebooting paper's reasoning holes</title><content type='html'>&lt;a href="http://www.cio-today.com/story.xhtml?story_title=The-Micro-Reboot--A-Time-Saving--Inexpensive-Boot-in-the-Gear&amp;story_id=28606&amp;category=infrastr"&gt;&lt;br /&gt;&lt;em&gt;CIO Today&lt;/em&gt; noticed microrebooting research paper.&lt;/a&gt;  While I agree that the paper is very interesting, I think there are some holes in it that were not explored (or at least not explained).&lt;br /&gt;&lt;br /&gt;Specifically:&lt;br /&gt;&lt;ol&gt;&lt;br /&gt;&lt;li&gt;Early in the article, memory leak and resource leaks are named as the problems solved by rebooting. &lt;br /&gt;From what I can see, microrebooting will only solve the issues where those resources/objects are held by &lt;span style="font-style:italic;"&gt;instances&lt;/span&gt; that are cleared on microreboot. It will do nothing for pooled resources leaked because  close/release method was not called. It will also do nothing if the memory leak is through creating too many classses at runtime (e.g. Stubs) or if resources are held in the static parts of the classes. This is because the classloader is explicitly &lt;span style="font-style:italic;"&gt;not&lt;/span&gt; recreated.&lt;br /&gt;&lt;br /&gt;&lt;li&gt;Recommended rebooting sequence of the application server in the paper is as follows: &lt;ol&gt;&lt;br /&gt;&lt;li&gt; microreboot of the component transitive closure&lt;br /&gt;&lt;li&gt; then kill -9 the server&lt;br /&gt;&lt;li&gt; reboot the O/S. &lt;br /&gt;&lt;/ol&gt;&lt;br /&gt;It seems that something is missing between 1) and 2). Where is attempting to shut down the server via normal shutdown command? That would allow to synchronise the buffers, finish writing out logs, etc. Going straight to kill -9 is really an emergency exit and is highly not recommended. In the same vein, I am not sure how much good rebooting the O/S is going to do for Java AppServer. Of course, the proper shutdown takes time, but is faster reboot worth getting your transactions into the doubt state due to the corrupted JTA in-flight store?&lt;br /&gt;&lt;br /&gt;&lt;li&gt;Threads. The paper proposes killing all threads associated with the resources. I would be &lt;span style="font-weight:bold;"&gt;very&lt;/span&gt; interested in how they are proposing to do that well, given that Thread.stop is deprecated beyond belief and Thread.interrupt() does nothing for method synchronization deadlocks/bottlenecks.&lt;br /&gt;&lt;br /&gt;&lt;li&gt;Memory recovery via microreboot. The paper suggests microrebooting the components to free some space. A more effective suggestion in my thinking would be to have hooks into the component caches and to request to drop all cached content down to the working set or to the start counts. &lt;br /&gt;So, a typical production system will start with 5 JDBC pool connections, but may go up to 100. Asking it to drop back down to 5 (or working set, whichever is larger) will free up a lot of cached result sets. Same goes for cached Entity beans, etc.&lt;br /&gt;&lt;br /&gt;&lt;li&gt;Finally, the main requirement for all this to work is a component storing its state in external transacted storage. Have they calculated whether the cost of shifting to external storage instead of faster in-memory/in-place is worth the time benefits of microrebooting in the long run. I am not so sure, especially with the larger HttpSession data sets I have observed in a real world. &lt;br /&gt;The exact question here is: how often does one need to microreboot instead of full reboot to save the time lost on satisfying the additional constraints? My own sort-of answer here would be that perhaps extra half-second per response is acceptible replacement, but I would like to know what the researches themselves think.&lt;br /&gt;&lt;/ol&gt;&lt;br /&gt;&lt;br /&gt;Still, all the nitpicking aside, Weblogic does provide some things already that resonate with the idea if not the suggested implementation.&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt; &lt;a href="http://e-docs.bea.com/wls/docs81/deployment/tools.html#1001393"&gt;Component redeploy&lt;/a&gt; will try to remove all instances (and classes) on the EAR/EJB/WAR level and reload them in. In fact I am having troubles figuring out how the micro-reboot is better than this already available functionality.&lt;br /&gt;&lt;li&gt; Node managers will monitor your system and restart the node if any of the subsystems goes into the 'warning' state&lt;br /&gt;&lt;li&gt; JRockit allows to monitor memory usage and &lt;a href="http://e-docs.bea.com/wljrockit/docs81/userguide/mancons.html#1000320"&gt;fire code triggers&lt;/a&gt; on crossing the thresholds. You can do what you like at that point.&lt;br /&gt;&lt;li&gt; Weblogic 8.1sp3 monitors JDBC pool entries and can timeout inactive connection and consider it leaked. It also provides connection leak profiling where non-closed connection will scream when it's finilized method is hit. It also provides &lt;a href="http://e-docs.bea.com/wls/docs81/jdbc/programming.html#multipool_failover_enhancements"&gt;resource retry for JDBC&lt;/a&gt; similar in spirit to what the paper talked about.&lt;br /&gt;&lt;li&gt; JMX and SNMP also allow to define all sorts of threshold with notifications triggers.&lt;br /&gt;&lt;li&gt; Thread subsystem will monitor request processing time and will log a message when a single requests takes longer then a threshold value to process. In the next version of WLS, it will also print the stack trace of the stuck thread. Notice that it will &lt;span style="font-weight:bold;"&gt;not&lt;/span&gt; kill the thread.&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;But I do welcome any research that makes support job easier. Check out the other interesting papers at &lt;a href="http://crash.stanford.edu/"&gt;the Microrecovery and Microreboot center&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;BlogicBlogger Over and Out&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8504592-110143109980221045?l=blogicblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blogicblog.blogspot.com/feeds/110143109980221045/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8504592&amp;postID=110143109980221045&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8504592/posts/default/110143109980221045'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8504592/posts/default/110143109980221045'/><link rel='alternate' type='text/html' href='http://blogicblog.blogspot.com/2004/11/microrebooting-papers-reasoning-holes.html' title='Microrebooting paper&apos;s reasoning holes'/><author><name>BlogicBlogger</name><uri>http://www.blogger.com/profile/02931775813348618827</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8504592.post-110142625152191593</id><published>2004-11-25T18:25:00.000-05:00</published><updated>2004-11-25T18:44:11.520-05:00</updated><title type='text'>Link:  Do's and Don't's of Logging</title><content type='html'>Jeff Mesnil is a developer who had to play 'support' for a bit. Specifically, he had to read logs produced by others. He immediately discovers &lt;a href="http://www.jmesnil.net/weblog/2004/11/dos-and-donts-of-logging.html"&gt;a lot of lessons that are not obvious when you only read your own code&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;To his list I want to add a couple of things from my own support experience:&lt;br /&gt;&lt;ul&gt;&lt;li&gt; Make sure you have some way to identify which log entries belong together. Use TransactionId if you have one, thread name if you don't. Weblogic logs put  thread name for each message. If this is expensive, use thread ID number instead and correlate them later with Thread dumps.&lt;br /&gt;&lt;/li&gt;&lt;li&gt; Always put timestamps in. Again, if this is expensive, put System.currentTimeMillis() instead of (new Date()).toString() and put a log entry at the start (or periodically) that shows both (to clarify timezones and allow correlation to other dated logs)&lt;br /&gt;&lt;/li&gt;&lt;li&gt; If you have a long operation, try to put a log message at the start and end of it. That way, when you later want to discover what your real life processing time is, you can parse those entries. Again, this requires ID and timestamps. One of the frequent problem we have is customers running into default timeout values being too small, but not knowing what the real value should be for them either.&lt;br /&gt;&lt;/li&gt; &lt;li&gt; Remember that logging is expensive and (at least for log4j) is gated at the write method. So, if you have 100 threads all logging away into the same file, at some point they will all bottleneck on a write method. And if the write method needs to rollover the file or build a complex log string, they will all &lt;span style="font-style: italic;"&gt;just wait&lt;/span&gt;. I have support case scars to prove this point.&lt;br /&gt;&lt;/li&gt;&lt;li&gt; Try to grep your own logs instead of eyeballing them. If you have difficulty getting a good set of log entries, the person supporting your application will have even more problems.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;BlogicBlogger Over and Out&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8504592-110142625152191593?l=blogicblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://www.jmesnil.net/weblog/2004/11/dos-and-donts-of-logging.html' title='Link:  Do&apos;s and Don&apos;t&apos;s of Logging'/><link rel='replies' type='application/atom+xml' href='http://blogicblog.blogspot.com/feeds/110142625152191593/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8504592&amp;postID=110142625152191593&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8504592/posts/default/110142625152191593'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8504592/posts/default/110142625152191593'/><link rel='alternate' type='text/html' href='http://blogicblog.blogspot.com/2004/11/link-dos-and-donts-of-logging.html' title='Link:  Do&apos;s and Don&apos;t&apos;s of Logging'/><author><name>BlogicBlogger</name><uri>http://www.blogger.com/profile/02931775813348618827</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8504592.post-110142100794499524</id><published>2004-11-25T17:07:00.000-05:00</published><updated>2004-11-25T17:17:37.753-05:00</updated><title type='text'>EPIC is coming. Want  to become its editor?</title><content type='html'>A very strong (and quite dark) &lt;a href="http://www.letitblog.com/epic/"&gt;futuristic look at personalised news and media consolidation&lt;/a&gt; (8 minutes). Via &lt;a href="http://doc.weblogs.com/2004/11/25#biggerIsBadderPartN"&gt;Doc Searls&lt;/a&gt;. Really worth watching for anybody in the blogosphere.&lt;br /&gt;&lt;br /&gt;The idea as such has been covered in Science Fiction before, but the anonymous author of this piece has used the real names and very realistic sounding dates.&lt;br /&gt;&lt;br /&gt;After watching the piece come back here and think about this. If EPIC is coming, do you want to be its editor? I do! &lt;br /&gt;&lt;br /&gt;So, given 10 years, what skills do I need to cultivate to become one? Any suggestions?&lt;br /&gt;&lt;br /&gt;BlogicBlogger Over and Out&lt;br /&gt;P.s. I hope it will get put to archive.org or on P2P fast, otherwise it will kill the website very fast. &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8504592-110142100794499524?l=blogicblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://www.letitblog.com/epic/' title='EPIC is coming. Want  to become its editor?'/><link rel='replies' type='application/atom+xml' href='http://blogicblog.blogspot.com/feeds/110142100794499524/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8504592&amp;postID=110142100794499524&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8504592/posts/default/110142100794499524'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8504592/posts/default/110142100794499524'/><link rel='alternate' type='text/html' href='http://blogicblog.blogspot.com/2004/11/epic-is-coming-want-to-become-its.html' title='EPIC is coming. Want  to become its editor?'/><author><name>BlogicBlogger</name><uri>http://www.blogger.com/profile/02931775813348618827</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8504592.post-110136360761207711</id><published>2004-11-25T01:20:00.000-05:00</published><updated>2004-11-25T01:25:17.006-05:00</updated><title type='text'>Technorati response to the Bloggercon Overload Session</title><content type='html'>I wrote about &lt;a href="http://blogicblog.blogspot.com/2004/11/on-bloggercon-iii-overload-session.html"&gt;my impressions from Bloggercon's Overload session&lt;/a&gt; before.  Now, Tantek (who works for Technorati) &lt;a href="http://tantek.com/log/2004/11.html#d06t1400" rel="vote-for"&gt;details specific technologies&lt;/a&gt; that could help to implement the wish list items mentioned.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;BlogicBlogger Over and Out&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8504592-110136360761207711?l=blogicblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://tantek.com/log/2004/11.html#d06t1400' title='Technorati response to the Bloggercon Overload Session'/><link rel='replies' type='application/atom+xml' href='http://blogicblog.blogspot.com/feeds/110136360761207711/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8504592&amp;postID=110136360761207711&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8504592/posts/default/110136360761207711'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8504592/posts/default/110136360761207711'/><link rel='alternate' type='text/html' href='http://blogicblog.blogspot.com/2004/11/technorati-response-to-bloggercon.html' title='Technorati response to the Bloggercon Overload Session'/><author><name>BlogicBlogger</name><uri>http://www.blogger.com/profile/02931775813348618827</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8504592.post-110117523342427247</id><published>2004-11-22T21:57:00.000-05:00</published><updated>2004-11-22T21:00:33.423-05:00</updated><title type='text'>Please don't make me support this WSDL 2 spec</title><content type='html'>&lt;span style="font-family:verdana,arial,helvetica;"&gt;&lt;span style="font-size:78%;"&gt;Rich Salz &lt;a href="http://www.xml.com/lpt/a/2004/11/17/salz.html"&gt;writes about major problem with WSDL 2&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;.I really hope it gets fixed before BEA decides to implement it. Otherwise, it will be completely unsupportable.&lt;br /&gt;&lt;br /&gt;We already have problems with handling the customers bitten by vague specs, but this looks nightmarish.&lt;br /&gt;&lt;br /&gt;BlogicBlogger Over and Out&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8504592-110117523342427247?l=blogicblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://www.xml.com/lpt/a/2004/11/17/salz.html' title='Please don&apos;t make me support this WSDL 2 spec'/><link rel='replies' type='application/atom+xml' href='http://blogicblog.blogspot.com/feeds/110117523342427247/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8504592&amp;postID=110117523342427247&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8504592/posts/default/110117523342427247'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8504592/posts/default/110117523342427247'/><link rel='alternate' type='text/html' href='http://blogicblog.blogspot.com/2004/11/please-dont-make-me-support-this-wsdl.html' title='Please don&apos;t make me support this WSDL 2 spec'/><author><name>BlogicBlogger</name><uri>http://www.blogger.com/profile/02931775813348618827</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8504592.post-110085812902664153</id><published>2004-11-19T04:41:00.000-05:00</published><updated>2004-11-22T15:17:33.256-05:00</updated><title type='text'>On Bloggercon III Overload session</title><content type='html'>It was very interesting listening to the &lt;a href="http://www.itconversations.com/shows/detail278.html"&gt;Overload session recording&lt;/a&gt; from ITConversations.&lt;br /&gt;&lt;br /&gt;Unfortunately, there are no transcripts of the recording available. Having to listen to the record second time just to pick up points worth of commenting on is somewhat annoying.&lt;br /&gt;&lt;br /&gt;One thing however I do want to say. &lt;a href="http://scoble.weblogs.com/"&gt;Robert Scoble&lt;/a&gt; was the moderator, due to his 1000-blogs-a-day reading routine. Unfortunately, he did not contribute enough of his own methods to provide &lt;span style="font-style: italic;"&gt;the enlightment&lt;/span&gt;. If anything, it was the opposite. He does not like categories, he does not spend much time thinking what goes into linkblog, nor did he seem to care for metadata.&lt;br /&gt;&lt;br /&gt;However,  I am sure he does have some techniques that would be very valuable to know.&lt;br /&gt;&lt;br /&gt;So Robert, if you are reading this, how difficult would it be for you to video yourself &lt;span style="font-weight: bold;"&gt;while&lt;/span&gt; you are doing the scanning and reading process. The way your eyes move, the pauses, the hands will surely tell us what is hard to describe in words. And if we could see what the screen actually shows at the same time (in a side by side view with a camera), it would be yet better (&lt;span style="font-weight: bold;"&gt;more &lt;/span&gt;than twice as good actually).&lt;br /&gt;&lt;br /&gt;Perhaps one of the HCI labs equipment could do something like this.&lt;br /&gt;&lt;br /&gt;I enjoy your videos of other people. I would enjoy one of you doing what we can only hope one day to achieve.&lt;br /&gt;&lt;br /&gt;BlogicBlogger Over and Out&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8504592-110085812902664153?l=blogicblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://www.itconversations.com/shows/detail278.html' title='On Bloggercon III Overload session'/><link rel='replies' type='application/atom+xml' href='http://blogicblog.blogspot.com/feeds/110085812902664153/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8504592&amp;postID=110085812902664153&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8504592/posts/default/110085812902664153'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8504592/posts/default/110085812902664153'/><link rel='alternate' type='text/html' href='http://blogicblog.blogspot.com/2004/11/on-bloggercon-iii-overload-session.html' title='On Bloggercon III Overload session'/><author><name>BlogicBlogger</name><uri>http://www.blogger.com/profile/02931775813348618827</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8504592.post-110058138636844122</id><published>2004-11-15T23:26:00.000-05:00</published><updated>2004-11-16T00:03:06.370-05:00</updated><title type='text'>Re: Code Generation: good or bad?</title><content type='html'>David Rupp writes - eloquently - that &lt;a href="http://weblogs.java.net/blog/davidrupp/archive/2004/11/code_generation_1.html"&gt;he does not understand why people are reluctant to use software that auto-generates code&lt;/a&gt; (e.g. Hibernate and AOP/AspectJ).&lt;br /&gt;&lt;br /&gt;He is of course right. Code generation on the fly is in exactly the same league as JSPs, EJBs and dynamic proxies in terms of how the code one writes &lt;em&gt;does not&lt;/em&gt; corresponds to the code that actually runs.&lt;br /&gt;&lt;br /&gt;But he is also wrong. What we have here is not a Good/Bad breakdown, but rather a spectrum. And the measure of that spectrum is how easy it is to trace the problem with the generated/compiled class back to something one can change.&lt;br /&gt;&lt;br /&gt;In the case of JSPs, it is fairly easy to trace back as most of the application servers allow to keep the generated java file and - at least Weblogic - will put JSPs original line numbers as comments in the generated Java code.&lt;br /&gt;&lt;br /&gt;The same applies to any offline precompiler. However complex they are, there is always a class file produced in the end that can be used as a reference.&lt;br /&gt;&lt;br /&gt;Finally, a third party library can - in desperate situation - be decompiled and the decompiled source will include the line numbers (unless the class had been stripped or obfuscated).&lt;br /&gt;&lt;br /&gt;On the other hand, AFAIK code generators do not usually bother with putting in source line numbers, nor do they save anywhere the code blocks that become classes.&lt;br /&gt;&lt;br /&gt;I have a case to the point. A week ago, I had a support case which had a ClassCast exception in the dynamically generated wrapper class that Weblogic puts around Oracle driver's proprietary methods. The top of the exception stack was:         &lt;br /&gt;&lt;code&gt;at weblogic.jdbc.wrapper.Blob_oracle_sql_BLOB.getBinaryStream(Unknown Source)&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Of course, I did not know at first that it was a generated class. I could have searched through the whole WLS source code base forever without finding it. The only hint was the class name. Seeing &lt;code&gt;wrapper&lt;/code&gt; has triggered the memories of other parts of Weblogic where we use similar tecniques (RMI, EJB, etc). &lt;br /&gt;&lt;br /&gt;Eventually, I traced this to the part of code which generated the class on the fly. And when I did, I found - as expected - that the class is just generated in memory and is loaded from bytearray without any export or debug functionality. &lt;br /&gt;&lt;br /&gt;Basically, we were generating a weblogic class at the runtime that will implement all Oracle's proprietary methods, but will add pre and post processing to them. A not-so-dynamic proxy, in other words. &lt;br /&gt;&lt;br /&gt;I had to build a custom patch to dump the file out and then replicate the basic logic to trigger the class generation. Once that was done, I finally had class file to decompile and analyse.&lt;br /&gt;&lt;br /&gt;However, this was comparatively simple problem in that it was easy to reproduce and the code generated was conditional on classpath (Oracle drivers), but not on any runtime conditions. Were it not the case, there would have been no way for me to reliably confirm the code behaviour.&lt;br /&gt;&lt;br /&gt;The same issue will apply to woven-in Aspects once they become very popular. &lt;strong&gt;What is a boon for a developer is often a woe for the support engineer.&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;I think the lesson here is that any code generation framework must ensure that there is an easy way to get class bytecodes, whether through debug flags, explorable ClassLoaders or any other option.&lt;br /&gt;&lt;br /&gt;BlogicBlogger Over and Out&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8504592-110058138636844122?l=blogicblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://weblogs.java.net/blog/davidrupp/archive/2004/11/code_generation_1.html' title='Re: Code Generation: good or bad?'/><link rel='replies' type='application/atom+xml' href='http://blogicblog.blogspot.com/feeds/110058138636844122/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8504592&amp;postID=110058138636844122&amp;isPopup=true' title='6 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8504592/posts/default/110058138636844122'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8504592/posts/default/110058138636844122'/><link rel='alternate' type='text/html' href='http://blogicblog.blogspot.com/2004/11/re-code-generation-good-or-bad.html' title='Re: Code Generation: good or bad?'/><author><name>BlogicBlogger</name><uri>http://www.blogger.com/profile/02931775813348618827</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>6</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8504592.post-109995242046259486</id><published>2004-11-08T16:32:00.000-05:00</published><updated>2004-11-08T17:20:20.463-05:00</updated><title type='text'>Koders: Another search mini-app</title><content type='html'>It looks like search is starting to gain momentum, both desktop and service based. In the last couple of weeks, we had:&lt;br /&gt;&lt;dl&gt;&lt;br /&gt;&lt;dt&gt; Desktop Search&lt;br /&gt;&lt;dd&gt;&lt;ul&gt;&lt;br /&gt;  &lt;li&gt; &lt;a href="http://desktop.google.com/"&gt;Google Desktop&lt;/a&gt;&lt;br /&gt;  &lt;li&gt; renewed interest in &lt;a href="http://www.lookoutsoft.com/Lookout/"&gt;Lookout&lt;/a&gt; (Lucene .Net based)&lt;br /&gt;  &lt;li&gt; nascent &lt;a href="http://www.peerfear.org/rss/permalink/2004/10/28/LotsOfInterestInLuceneDesktop/"&gt;Lucene Desktop&lt;/a&gt; is generating a lot of interest, though it is hard to say how it will deferentiate itself from &lt;a href="http://www.zilverline.org/zilverlineweb/space/home"&gt;Zilverline&lt;/a&gt;&lt;br /&gt;   &lt;li&gt; And many more. See comparison on &lt;a href="http://www.filehand.com/"&gt;FileHand's pages&lt;/a&gt;&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;&lt;dt&gt; Web based search miniapps&lt;br /&gt;&lt;dd&gt;&lt;ul&gt;&lt;br /&gt;   &lt;li&gt; &lt;a href="http://www.jarhoo.com/"&gt;JarHoo&lt;/a&gt; will help you to locate a Jar where a class is defined&lt;br /&gt;   &lt;li&gt; &lt;a href="http://www.koders.com/"&gt;Koders&lt;/a&gt; will allow you to find which open source project contains code you may need and will show some interesting stats about it (e.g. Projected reimplementation time). It may or may not be based on Lucene for the search component.&lt;br /&gt;I have to say though that I did not feel as a target audience for &lt;code&gt;Koders&lt;/code&gt;. I wanted to get in, type the class name , find the useful project that had it and go to that project's home. I could do all, but the last one. Instead, when I clicked on the project's name, I got drawn deeper into the Koders site and was offered to look at statistics and source code. Oh well, Google is always a click away.&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;&lt;/dl&gt;&lt;br /&gt;I think in the future we will see yet more of search miniapps, possibly very specialized. I can think of several that would be useful for my BEA support work. &lt;br /&gt;&lt;br /&gt;Just as an example, I would like a small application that would index all descriptors for both standard and Vendor specific deployment descriptors and then would allow me to search by name substring. That way, I could search for &lt;em&gt;timeout&lt;/em&gt; and get a general overview of what timeouts are configurable, in which file and exactly where in deployment descriptor's hierarchy. &lt;br /&gt;&lt;br /&gt;Any takers? &lt;br /&gt;&lt;br /&gt;The biggest problem of course is who will pay for traffic. JarHoo was running google ads, but it still needed to be sponsored by a hosting company. Such good will may not last long.&lt;br /&gt;&lt;br /&gt;BlogicBlogger Over and Out&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8504592-109995242046259486?l=blogicblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://www.koders.com/' title='Koders: Another search mini-app'/><link rel='replies' type='application/atom+xml' href='http://blogicblog.blogspot.com/feeds/109995242046259486/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8504592&amp;postID=109995242046259486&amp;isPopup=true' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8504592/posts/default/109995242046259486'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8504592/posts/default/109995242046259486'/><link rel='alternate' type='text/html' href='http://blogicblog.blogspot.com/2004/11/koders-another-search-mini-app.html' title='Koders: Another search mini-app'/><author><name>BlogicBlogger</name><uri>http://www.blogger.com/profile/02931775813348618827</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8504592.post-109988166038520037</id><published>2004-11-07T21:35:00.000-05:00</published><updated>2004-11-07T21:41:00.386-05:00</updated><title type='text'>I always was curious what writing for O'Reilly was like</title><content type='html'>Guillaume Laforge &lt;a href="http://glaforge.free.fr/weblog/index.php?itemid=92"&gt;writes about the 'New Author' treatment&lt;/a&gt;. &lt;br /&gt;I hope he will continue writing about &lt;em&gt;Life as an O'Reilly Author&lt;/em&gt;. &lt;br /&gt;&lt;br /&gt;I also wish somebody with a different publisher would write about their experiences.&lt;br /&gt;&lt;br /&gt;BlogicBlogger Over and Out&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8504592-109988166038520037?l=blogicblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://glaforge.free.fr/weblog/index.php?itemid=92' title='I always was curious what writing for O&apos;Reilly was like'/><link rel='replies' type='application/atom+xml' href='http://blogicblog.blogspot.com/feeds/109988166038520037/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8504592&amp;postID=109988166038520037&amp;isPopup=true' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8504592/posts/default/109988166038520037'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8504592/posts/default/109988166038520037'/><link rel='alternate' type='text/html' href='http://blogicblog.blogspot.com/2004/11/i-always-was-curious-what-writing-for.html' title='I always was curious what writing for O&apos;Reilly was like'/><author><name>BlogicBlogger</name><uri>http://www.blogger.com/profile/02931775813348618827</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8504592.post-109961393657009101</id><published>2004-11-04T19:17:00.000-05:00</published><updated>2004-11-04T19:18:56.570-05:00</updated><title type='text'>What type of a Framework Fashionista are you?</title><content type='html'>Lara D'Abreo decided to &lt;a href="http://jroller.com/page/laraDAB/20041104#framework_adoption"&gt;classify&lt;/a&gt; developers according to their attitude to Java Frameworks.&lt;br /&gt;&lt;br /&gt;I feel I can claim to be &lt;em&gt;Pragmatic&lt;/em&gt;, but the truth will most probably reveal at least some of &lt;em&gt;Oblivious&lt;/em&gt;. I also seem to remember &lt;em&gt;Dogmatic&lt;/em&gt; period of my career, but I have (hopefully) overgrown it a while ago.&lt;br /&gt;&lt;br /&gt;BlogicBlogger Over and Out&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8504592-109961393657009101?l=blogicblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://jroller.com/page/laraDAB/20041104#framework_adoption' title='What type of a Framework Fashionista are you?'/><link rel='replies' type='application/atom+xml' href='http://blogicblog.blogspot.com/feeds/109961393657009101/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8504592&amp;postID=109961393657009101&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8504592/posts/default/109961393657009101'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8504592/posts/default/109961393657009101'/><link rel='alternate' type='text/html' href='http://blogicblog.blogspot.com/2004/11/what-type-of-framework-fashionista-are.html' title='What type of a Framework Fashionista are you?'/><author><name>BlogicBlogger</name><uri>http://www.blogger.com/profile/02931775813348618827</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8504592.post-109943581470535470</id><published>2004-11-02T17:42:00.000-05:00</published><updated>2004-11-02T17:50:14.706-05:00</updated><title type='text'>Is gmail planning to introduce new domain names?</title><content type='html'>I have a gmail account. Today, when I signed in and then signed out, I suddenly noticed that in the 'username' field it is now showing my full email address. This is instead of just username. So, 'user@gmail.com' instead of just 'user'.&lt;br /&gt;&lt;br /&gt;If I am not imagining things and that was the change, then there is only one reason I can guess for that. Gmail is planning to introduce additional domains (as &lt;a href="http://www.mail.com/"&gt;mail.com&lt;/a&gt; did) and automatically substituting full address for login is a transition step.&lt;br /&gt;&lt;br /&gt;Any guesses on the additional names? Gbrowser anyone? &lt;br /&gt;BlogicBlogger Over and Out&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8504592-109943581470535470?l=blogicblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='https://gmail.google.com/' title='Is gmail planning to introduce new domain names?'/><link rel='replies' type='application/atom+xml' href='http://blogicblog.blogspot.com/feeds/109943581470535470/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8504592&amp;postID=109943581470535470&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8504592/posts/default/109943581470535470'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8504592/posts/default/109943581470535470'/><link rel='alternate' type='text/html' href='http://blogicblog.blogspot.com/2004/11/is-gmail-planning-to-introduce-new.html' title='Is gmail planning to introduce new domain names?'/><author><name>BlogicBlogger</name><uri>http://www.blogger.com/profile/02931775813348618827</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8504592.post-109939858558507476</id><published>2004-11-02T07:21:00.000-05:00</published><updated>2004-11-02T07:32:39.320-05:00</updated><title type='text'>Goodbye Dev2Dev, Hello CodeShare</title><content type='html'>A while ago BEA has introduced &lt;a href="http://dev2dev.bea.com/index.jsp"&gt;Dev2Dev&lt;/a&gt;, a way to reach out to the BEA community. The website has gone through at least 3 changes, but was still not overly popular. Finally, BEA has realised that a 3rd party will do a better job out of it.&lt;br /&gt;&lt;br /&gt;Meet &lt;a href="http://dev2dev.bea.com/homepage/CodeShare.jsp"&gt;CodeShare&lt;/a&gt;, a new project developed by BEA with great help from O'Reilly Media and CollabNet.&lt;br /&gt;&lt;br /&gt;The biggest problem with Dev2Dev in my opinion was that you could publish something to it, but it was hard to update. Some of the older sections (like utilities)were also hard to find after a website redesign.&lt;br /&gt;&lt;br /&gt;Hopefully, CodeShare - which in many ways seems modelled after SourceForge - will fix that. I, for one, am looking forward to using the new site.&lt;br /&gt;&lt;br /&gt;BlogicBlogger Over and Out&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8504592-109939858558507476?l=blogicblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://www.projects.dev2dev.bea.com/' title='Goodbye Dev2Dev, Hello CodeShare'/><link rel='replies' type='application/atom+xml' href='http://blogicblog.blogspot.com/feeds/109939858558507476/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8504592&amp;postID=109939858558507476&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8504592/posts/default/109939858558507476'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8504592/posts/default/109939858558507476'/><link rel='alternate' type='text/html' href='http://blogicblog.blogspot.com/2004/11/goodbye-dev2dev-hello-codeshare.html' title='Goodbye Dev2Dev, Hello CodeShare'/><author><name>BlogicBlogger</name><uri>http://www.blogger.com/profile/02931775813348618827</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8504592.post-109935445535424032</id><published>2004-11-01T19:02:00.000-05:00</published><updated>2004-11-01T19:14:15.353-05:00</updated><title type='text'>Standalone XSLT/XQuery tools from Altova</title><content type='html'>Altova, the maker of XMLSpy has &lt;a href="http://www.altova.com/resources_freetools.html"&gt;released&lt;/a&gt; several standalone engines that previously were only available as part of the editor itself. They have XSLT 1.0, XSLT 2.0 and XQuery engines. XSLT 1.0 implementation looks very complete, XSLT 2.0 is less so.&lt;br /&gt;&lt;br /&gt;Of course, my own preference is &lt;a href="http://xmlstar.sourceforge.net/"&gt;XMLStarlet&lt;/a&gt;. I call it &lt;em&gt;The &lt;code&gt;find&lt;/code&gt; of XML world&lt;/em&gt; because I like to do a lot of ad-hoc queries on XML files. Also XMLStarlet is available on multiple platforms (Altova is for Windows world only).&lt;br /&gt;&lt;br /&gt;Still, the more engines are out there, the better it is. We can always do a consolidation later, once the needed feature set is fully understood.&lt;br /&gt;&lt;br /&gt;BlogicBlogger Over and Out&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8504592-109935445535424032?l=blogicblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://www.altova.com/resources_freetools.html' title='Standalone XSLT/XQuery tools from Altova'/><link rel='replies' type='application/atom+xml' href='http://blogicblog.blogspot.com/feeds/109935445535424032/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8504592&amp;postID=109935445535424032&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8504592/posts/default/109935445535424032'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8504592/posts/default/109935445535424032'/><link rel='alternate' type='text/html' href='http://blogicblog.blogspot.com/2004/11/standalone-xsltxquery-tools-from.html' title='Standalone XSLT/XQuery tools from Altova'/><author><name>BlogicBlogger</name><uri>http://www.blogger.com/profile/02931775813348618827</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8504592.post-109928754496530891</id><published>2004-11-01T00:12:00.000-05:00</published><updated>2004-11-01T00:39:04.966-05:00</updated><title type='text'>Jarhoo is a good step in a right direction</title><content type='html'>If you often wonder which jar a particular class comes from, &lt;a href="http://www.jarhoo.com/"&gt;Jarhoo&lt;/a&gt; has indexed a number of common distributions of java applications and libraries and allows to do a quick lookup by a name substring or a jar file substring.&lt;br /&gt;&lt;br /&gt;Among other applications, it includes BEA Weblogic, so it is sometimes useful for me in troubleshooting classpath issues.&lt;br /&gt;&lt;br /&gt;There are some growing pains still:&lt;br /&gt;&lt;ul&gt;   &lt;li&gt;It does not indicate which Service Pack of the product is uses. One assumes the latest&lt;/li&gt;   &lt;li&gt;It does not allow to add or remove product from a search list. It would have been useful to speed up the search by adding - for example - +product:WLS81&lt;/li&gt;   &lt;li&gt;There seem to be some sort of double escape of &amp;lt; sign in Jar File Locations entries&lt;br /&gt; &lt;/li&gt; &lt;/ul&gt; An interesting thing is that just from looking at the interface, I can tell it is running &lt;a href="http://jakarta.apache.org/lucene/docs/index.html"&gt;Lucene&lt;/a&gt; under the hood. The '2 seconds' response time especially is a telling sign.&lt;br /&gt;&lt;br /&gt;I wish the project well and I hope that, based on its success, many more mini apps will appear. It is certainly the right direction.&lt;br /&gt;&lt;br /&gt;BlogicBlogger Over and Out&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8504592-109928754496530891?l=blogicblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://www.jarhoo.com/' title='Jarhoo is a good step in a right direction'/><link rel='replies' type='application/atom+xml' href='http://blogicblog.blogspot.com/feeds/109928754496530891/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8504592&amp;postID=109928754496530891&amp;isPopup=true' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8504592/posts/default/109928754496530891'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8504592/posts/default/109928754496530891'/><link rel='alternate' type='text/html' href='http://blogicblog.blogspot.com/2004/11/jarhoo-is-good-step-in-right-direction.html' title='Jarhoo is a good step in a right direction'/><author><name>BlogicBlogger</name><uri>http://www.blogger.com/profile/02931775813348618827</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8504592.post-109902618496084793</id><published>2004-10-29T01:00:00.000-04:00</published><updated>2004-10-29T01:03:04.960-04:00</updated><title type='text'>Can't afford Weblogic AppServer. Check out the discussion of the free ones.</title><content type='html'>A &lt;a href="http://www.javalobby.org/thread.jspa?forumID=61&amp;amp;threadID=15194"&gt;discussion&lt;/a&gt; on JavaLobby is trying to compare the AppServer features and ease of development. Only free AppServers need to apply.&lt;br /&gt;&lt;br /&gt;BlogicBlogger Over and Out&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8504592-109902618496084793?l=blogicblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://www.javalobby.org/thread.jspa?forumID=61&amp;threadID=15194' title='Can&apos;t afford Weblogic AppServer. Check out the discussion of the free ones.'/><link rel='replies' type='application/atom+xml' href='http://blogicblog.blogspot.com/feeds/109902618496084793/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8504592&amp;postID=109902618496084793&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8504592/posts/default/109902618496084793'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8504592/posts/default/109902618496084793'/><link rel='alternate' type='text/html' href='http://blogicblog.blogspot.com/2004/10/cant-afford-weblogic-appserver-check.html' title='Can&apos;t afford Weblogic AppServer. Check out the discussion of the free ones.'/><author><name>BlogicBlogger</name><uri>http://www.blogger.com/profile/02931775813348618827</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8504592.post-109892796415220859</id><published>2004-10-27T21:41:00.000-04:00</published><updated>2004-10-27T21:46:04.153-04:00</updated><title type='text'>Using rsync to synchronize with remote Weblogic</title><content type='html'>TheLastBlogger &lt;a href="http://jonteponte.blog-city.com/read/882987.htm"&gt;showed us&lt;/a&gt; that not every vendor limitation need to be solved by the vendor's fix.&lt;br /&gt;&lt;br /&gt;Hurray for flexible utilities and solutions! I hope TheLastBlogger will keep recording the interesting solutions discovered during development/migration.&lt;br /&gt;&lt;br /&gt;BlogicBlogger Over and Out&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8504592-109892796415220859?l=blogicblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://jonteponte.blog-city.com/read/882987.htm' title='Using rsync to synchronize with remote Weblogic'/><link rel='replies' type='application/atom+xml' href='http://blogicblog.blogspot.com/feeds/109892796415220859/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8504592&amp;postID=109892796415220859&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8504592/posts/default/109892796415220859'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8504592/posts/default/109892796415220859'/><link rel='alternate' type='text/html' href='http://blogicblog.blogspot.com/2004/10/using-rsync-to-synchronize-with-remote.html' title='Using rsync to synchronize with remote Weblogic'/><author><name>BlogicBlogger</name><uri>http://www.blogger.com/profile/02931775813348618827</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8504592.post-109836669448757631</id><published>2004-10-21T09:51:00.000-04:00</published><updated>2004-10-21T09:53:55.606-04:00</updated><title type='text'>Perfect multicast storm</title><content type='html'>This is a story of a well meaning default causing more problems than a randomly picked value. Read it if you are running BEA Weblogic cluster on a switched network, especially with a CISCO switch. Read it even if you do not run WLS cluster, but are interested in TCP voodoo.&lt;br /&gt;&lt;br /&gt;Weblogic server is a combination of many technologies. Quite a number of these technologies used to require a dedicated professional to configure and maintain. I am talking about such subsystems as SSL, transactional JDBC and - case to the point - multicast. Back then, the user interfaces and procedures were arcane and nobody was surprised that a specialist was required to make sure things were working.&lt;br /&gt;&lt;br /&gt;Nowadays, people seem to believe that the default settings for a sub-system they are not familiar with will fullfil their need - whatever that need may be. And most of the time, the defaults do seem to work, especially when tested in an environment that does not match production setup in throughput, domain, or network layout (e.g. cluster). However, when the code is promoted to production, unexpected happens.&lt;br /&gt;&lt;br /&gt;For this example, let's talk about multicasting. By itself, multicasting is a fairly heavy voodoo and applications that require multicast are usually setup and configured by gurus/vendors who ensure that all the i's are dotted and t's are crossed.&lt;br /&gt;&lt;br /&gt;But BEA Weblogic ships with and uses multicast implementation as part of its clustering technology. As it is used in a limited scenario (single network, no switch cross-over, etc), multicast administration is suddenly simplified to a simple set of properties: primarily multicast address/port (others are Send Delay, TTL and buffer size). Look at the configuration page, all values are preset to defaults. In fact, you don't even need to see that page when you create your cluster; you have to manually choose it if anything needs to be changed. One way or another, the values are usually left at the defaults even for very large deployments.&lt;br /&gt;&lt;br /&gt;Now, Weblogic's default multicast address is 237.0.0.1. If you cringed at this point, do not continue reading. You know way too much about TCP, MAC address and multicast special cases. You are a guru.&lt;br /&gt;&lt;br /&gt;For the rest of us, following is an explanation why this default is a bad one.&lt;br /&gt;&lt;br /&gt;If you read multicast RFCs - which are many in number (&lt;a href="http://www.faqs.org/rfcs/rfc3170.html" target="_blank"&gt;3170&lt;/a&gt;, &lt;a href="http://www.faqs.org/rfcs/rfc2236.html" target="_blank"&gt;2236 &lt;/a&gt;, &lt;a href="http://www.faqs.org/rfcs/rfc1112.html" target="_blank"&gt;1112&lt;/a&gt;, &lt;a href="http://www.faqs.org/rfcs/rfc2365.html" target="_blank"&gt;2365&lt;/a&gt;, etc) you will find that not all multicast addresses are equal. There is a magic address 224.0.0.1 on which &lt;strong&gt;all&lt;/strong&gt; IP hosts will listen and this includes gateways (which covers CISCO routers and switches).&lt;br /&gt;&lt;br /&gt;Now, 224.0.0.1 is NOT 237.0.0.1, so there should be no issue. And on TCP layer, there is none. The problem happens bellow TCP layer. OSI Layer 2 switches (of which CISCO switch is an example), do not actually listen to TCP directly. Instead they listen for the multicast MAC address. There is a direct mapping between multicast IP address and multicast MAC address, but it is not unique. In fact, there can be 32 different IP addresses corresponding to the same MAC address (as described in &lt;a href="http://www.awprofessional.com/articles/article.asp?p=29244&amp;amp;seqNum=6" target="_blank"&gt;this book excerpt&lt;/a&gt;, section 1.6.3).&lt;br /&gt;&lt;br /&gt;So, to follow the specification, CISCO switch has to listen for the multicast address 224.0.0.1, which is MAC address 01-00-5e-00-00-01. But that is the MAC address for 237.0.0.1 as well. Therefore, every time a packet passes by for 237.0.0.1, CISCO switch firmware triggers a match.&lt;br /&gt;&lt;br /&gt;Once the match is triggered, software part of the switch examines packet's full IP address and figures out that it was not a 224.0.0.1, but just one of the other 31 co-sharing IPs. The packet is discarded and nobody is hurt.&lt;br /&gt;&lt;br /&gt;Or so it seems. Turns out that these interrupts are relatively expensive. When a packet &lt;em&gt;is&lt;/em&gt; supposed to be sent to a different network, this cost is part of a business. But when it happens every time for a fairly frequent internal cross-server chit-chat (e.g. JNDI tree updates), the switch gets interrupted too often. And a switch that is interrupted unexpectedly often, may be sluggish to respond to legitimate requests.&lt;br /&gt;&lt;br /&gt;This, under high enough load, can cause unexpected network timeouts that are nearly impossible to detect. After all, how often do you check your switch's CPU utilisation, when your DNS misbehaves?&lt;br /&gt;&lt;br /&gt;So, what's the solution. Easy! Switch to a different multicast address that does not map to the same MAC as the 224.0.0.1. Weblogic will do exactly that for the next release.&lt;br /&gt;&lt;br /&gt;The proposed new address is 239.192.0.0. If this makes you cringe, please let BEA know NOW! :-)&lt;br /&gt;&lt;br /&gt;BlogicBlogger Over and Out&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8504592-109836669448757631?l=blogicblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blogicblog.blogspot.com/feeds/109836669448757631/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8504592&amp;postID=109836669448757631&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8504592/posts/default/109836669448757631'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8504592/posts/default/109836669448757631'/><link rel='alternate' type='text/html' href='http://blogicblog.blogspot.com/2004/10/perfect-multicast-storm.html' title='Perfect multicast storm'/><author><name>BlogicBlogger</name><uri>http://www.blogger.com/profile/02931775813348618827</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8504592.post-109790195770782598</id><published>2004-10-16T00:37:00.000-04:00</published><updated>2004-10-16T00:45:57.706-04:00</updated><title type='text'>I want my Scopo</title><content type='html'>&lt;a href="http://www.gizmo.com.au/public/News/news.asp?articleid=3298"&gt;Scopo&lt;/a&gt; - a wearable display from Mitsubishi - is not going to be here until at least next year. I am really looking forward to it being available for public. It would go long way towards making wearable computing a reality.&lt;br /&gt;&lt;br /&gt;They do not say what resolution it is, but the projection is equivalent to 10-inch screen. I wonder if it is good enough to actually write programs. Surely, I could fit a VI session into it, even if it is at 24x80 screen size.&lt;br /&gt;&lt;br /&gt;I can barely wait.&lt;br /&gt;BlogicBlogger Over and Out&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8504592-109790195770782598?l=blogicblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://www.gizmo.com.au/public/News/news.asp?articleid=3298' title='I want my Scopo'/><link rel='replies' type='application/atom+xml' href='http://blogicblog.blogspot.com/feeds/109790195770782598/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8504592&amp;postID=109790195770782598&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8504592/posts/default/109790195770782598'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8504592/posts/default/109790195770782598'/><link rel='alternate' type='text/html' href='http://blogicblog.blogspot.com/2004/10/i-want-my-scopo.html' title='I want my Scopo'/><author><name>BlogicBlogger</name><uri>http://www.blogger.com/profile/02931775813348618827</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8504592.post-109788046290981239</id><published>2004-10-15T18:30:00.000-04:00</published><updated>2004-10-16T00:36:45.320-04:00</updated><title type='text'>Vegetable or Mineral: support's point of view</title><content type='html'>The &lt;a href="http://www.hacknot.info/hacknot/action/showEntry?eid=68"&gt;article on Hacknot&lt;/a&gt; talks about testers and the grief developers face from them due to incorrect problem reporting practices. Of course developers do exactly the same things when they are the ones reporting problems.&lt;br /&gt;&lt;br /&gt;I am talking about Technical Support requests. When a developer (or an operations personnel, or - worse yet - an operations manager) calls with a support case, they do exactly the same things that Hacknot described for the testers.&lt;br /&gt;&lt;br /&gt;As a very common example, the support case description will read &lt;em&gt;Weblogic crashed without reason&lt;/em&gt;. After extensive probing, following things emerge:&lt;br /&gt;   &lt;ul&gt;&lt;li&gt; The Weblogic process hasn't actualy exited, but is still around. It just stopped responding. This means Weblogic hanged, rather than crashed. Equally annoying, yet caused by completely different set of problems.&lt;br /&gt;   &lt;/li&gt;&lt;li&gt; &lt;em&gt;No reason&lt;/em&gt; turns out to be a new code drop that, in their opinion, &lt;em&gt;changed nothing important&lt;/em&gt; and therefore was not worth mentioning.&lt;br /&gt;  &lt;/li&gt;&lt;li&gt; Doing &lt;a href="http://dev2dev.bea.com/products/wlplatform81/articles/thread_dumps.jsp"&gt;thread dumps&lt;/a&gt; and log/config analysis often shows a bottle neck and/or incorrect configuration. At this point, it usually emerges that the server load at the hang time was higher than ever before and no, it was not load tested in the same configuration (e.g. cluster with proxy) anywhere else.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;And of course, if it is not an overly general description, it is 'Diagnosing Instead of Reporting' exactly as described in the article.&lt;br /&gt;&lt;br /&gt;I have to admit that when I was a developer, I commited all those mistakes and more myself. I feel that work in BEA support has opened my eyes and makes the code I produce  now more user friendly with better reporting.&lt;br /&gt;&lt;br /&gt;As a result, my thought on the QA/Dev separation is to actually fold developers into the testing team for short rotational periods.&lt;br /&gt;&lt;br /&gt;The developer will then discover whether there are real causes to reporting problems (insufficient logs, misleading dialogs or just unclear logic) that will only be acknowledged as problems when a developer walks a mile in a tester's shoes.&lt;br /&gt;&lt;br /&gt;The final benefit is that developers and testers have different ways to do similar things and exchange of techniques is always beneficial.&lt;br /&gt;&lt;br /&gt;BlogicBlogger Over and Out&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8504592-109788046290981239?l=blogicblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://www.hacknot.info/hacknot/action/showEntry?eid=68' title='Vegetable or Mineral: support&apos;s point of view'/><link rel='replies' type='application/atom+xml' href='http://blogicblog.blogspot.com/feeds/109788046290981239/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8504592&amp;postID=109788046290981239&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8504592/posts/default/109788046290981239'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8504592/posts/default/109788046290981239'/><link rel='alternate' type='text/html' href='http://blogicblog.blogspot.com/2004/10/vegetable-or-mineral-supports-point-of.html' title='Vegetable or Mineral: support&apos;s point of view'/><author><name>BlogicBlogger</name><uri>http://www.blogger.com/profile/02931775813348618827</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8504592.post-109758801386481774</id><published>2004-10-12T09:12:00.000-04:00</published><updated>2004-10-12T09:33:33.866-04:00</updated><title type='text'>Thinking of WebSphere 6 supportability features</title><content type='html'>The &lt;a href="http://www.internetnews.com/ent-news/article.php/3296741"&gt;news&lt;/a&gt; of IBM releasing the next version of WebSphere &lt;em&gt;real soon now&lt;/em&gt; are propagating through the websites. As a Weblogic support person, it was interesting for me to see what new supportability features were included by IBM. Unfortunately, the details are very vague.&lt;br /&gt;&lt;br /&gt;From the general description (failover, failure detection and recovery, etc), it sounded like the features we already had in Weblogic for a while. Some we even had for a &lt;strong&gt;very&lt;/strong&gt; long while (e.g. WLS 6.1 proxy plugin that supports smart failover).&lt;br /&gt;&lt;br /&gt;However, I did find one article that &lt;a href="http://www.websphere-world.com/modules.php?name=News&amp;file=article&amp;sid=1323"&gt;provided&lt;/a&gt; more serious details.&lt;br /&gt;&lt;br /&gt;Specifically, &lt;br /&gt;&lt;ul&gt;&lt;br /&gt;    &lt;li&gt; ClassLoaderViewer&lt;br /&gt;    &lt;li&gt; Hang Detection code in 5.03, 5.1.1 and 6.0&lt;br /&gt;    &lt;li&gt; LeakBot for memory leak detection&lt;br /&gt;    &lt;li&gt; Session Data Crossover detecton facility in 5.03, 5.1.1 and 6.0&lt;br /&gt;    &lt;li&gt; Connection Leak detection&lt;br /&gt;    &lt;li&gt; ThreadAnalyzer for deadlock debugging&lt;br /&gt;    &lt;li&gt; Event Alerter for notification&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;Some of the items above Weblogic already has.  JDBC leak detection was there for a long time; deadlock detector of sorts is built into latest JRockit and there are several free standing tools; event alerter is possible via JMX, SNMP or custom loggers, etc.&lt;br /&gt;Others, we probably should look into.&lt;br /&gt;&lt;br /&gt;I will not open any secrets by saying that BEA has recently started to pay serious attention to supportability of its products with &lt;a href="http://dev2dev.bea.com/resourcelibrary/utilitiestools/index.jsp"&gt;Dev2Dev utils&lt;/a&gt;, &lt;a href="http://support.bea.com/support_news/product_troubleshooting/product_troubleshooting.jsp"&gt;support patterns&lt;/a&gt; and new support seminars. Even more interesting announcements in this area should come out soon.&lt;br /&gt;&lt;br /&gt;However, seeing IBM to put some real effort into supportability area may spur  yet more effort from BEA side and will not do any harm to either companies The real benefits will of course be reaped by system administrators and operations staff.&lt;br /&gt;&lt;br /&gt;Long live the healthy competition. As long as we win. :-)&lt;br /&gt;&lt;br /&gt;BlogicBlogger Over and Out&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8504592-109758801386481774?l=blogicblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blogicblog.blogspot.com/feeds/109758801386481774/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8504592&amp;postID=109758801386481774&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8504592/posts/default/109758801386481774'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8504592/posts/default/109758801386481774'/><link rel='alternate' type='text/html' href='http://blogicblog.blogspot.com/2004/10/thinking-of-websphere-6-supportability.html' title='Thinking of WebSphere 6 supportability features'/><author><name>BlogicBlogger</name><uri>http://www.blogger.com/profile/02931775813348618827</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8504592.post-109737624871524246</id><published>2004-10-09T23:26:00.000-04:00</published><updated>2004-10-09T22:45:38.633-04:00</updated><title type='text'>Podcasting loop: evolution continues</title><content type='html'>Sometimes the only good outcome of a post is to provoke somebody else to do one better. Seemed that I had caused exactly that.&lt;br /&gt;&lt;br /&gt;About a week ago, I &lt;a href="http://blogicblog.blogspot.com/2004/10/extending-podcasting-loop.html"&gt;wrote&lt;/a&gt; about extending podcasting loop using Windows Scripting Host and IPod's COM interface. In a comment, &lt;a href="http://www.blogger.com/profile/4813888"&gt;Scyro&lt;/a&gt; had written about disliking my approach and &lt;a href="http://scyro.blogspot.com/2004/10/using-of-smart-playlists-for.html"&gt;explained&lt;/a&gt; how to achieve the same effect using the smart playlists instead.&lt;br /&gt;&lt;br /&gt;I have read his article and actually like his approach more than my own. It is more automatic, does not require to run any scripts and is cross-platform. I still prefer explicit rating system as a feedback rather than playcount, because I switch away from some tracks before the end or come back after the finish. It is easy to modify the solution either way.&lt;br /&gt;&lt;br /&gt;Of course without my post, he may not have been motivated to write his. Between us, I believe, we explain how to make iPodding easier.&lt;br /&gt;&lt;br /&gt;So, is my script still useful? Probably not for its original purpose. But if you want to delete the old tracks or do any other complex processing, you may still find it helpful as a base.&lt;br /&gt;&lt;br /&gt;BlogicBlogger Over and Out&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8504592-109737624871524246?l=blogicblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://scyro.blogspot.com/2004/10/using-of-smart-playlists-for.html' title='Podcasting loop: evolution continues'/><link rel='replies' type='application/atom+xml' href='http://blogicblog.blogspot.com/feeds/109737624871524246/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8504592&amp;postID=109737624871524246&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8504592/posts/default/109737624871524246'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8504592/posts/default/109737624871524246'/><link rel='alternate' type='text/html' href='http://blogicblog.blogspot.com/2004/10/podcasting-loop-evolution-continues.html' title='Podcasting loop: evolution continues'/><author><name>BlogicBlogger</name><uri>http://www.blogger.com/profile/02931775813348618827</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8504592.post-109689286809791286</id><published>2004-10-04T08:06:00.000-04:00</published><updated>2004-10-04T08:53:38.876-04:00</updated><title type='text'>Who is blogging about Weblogic</title><content type='html'>There are some people out there blogging about Weblogic. Here is the short list in hopes this article will make them a bit more noticeable:&lt;br /&gt;&lt;ul&gt;&lt;li&gt; &lt;a href="http://www.mysupportblog.com/"&gt;Cid Danis&lt;/a&gt;. Weblogic Senior support engineer&lt;br /&gt; &lt;/li&gt;&lt;li&gt; &lt;a href="http://jroller.com/page/yife/"&gt;Unknown&lt;/a&gt;, but thorough in documenting test problems&lt;br /&gt; &lt;/li&gt;&lt;li&gt; &lt;a href="http://www.j2eegeek.com/blog/"&gt;Vinny Carpenter&lt;/a&gt;, who is using Weblogic and blogs good links and articles&lt;br /&gt; &lt;/li&gt;&lt;li&gt; &lt;a href="http://dev2dev.blogs.com/dev2dev_blogs/"&gt;News from BEA Dev2Dev&lt;/a&gt;. From the horse's mouth so to speak&lt;/li&gt;&lt;li&gt;&lt;a href="http://blogs.sun.com/roller/page/moazam/"&gt;Moazam Rajas&lt;/a&gt;. He is actually SUN Senior support engineer, but if you run Weblogic - or any other J2EE servers - you will do well to read his articles&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;All of the blogs above have RSS feeds.&lt;br /&gt;&lt;br /&gt;There is also a couple of interesting individual links:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://www.viewtier.com/newsgroups/category.jspa?categoryID=2"&gt;Unofficial WebLogic FAQ&lt;/a&gt;&lt;/li&gt;   &lt;li&gt;&lt;a href="http://www.findarticles.com/p/articles/mi_m0MLW/"&gt;Cached copies&lt;/a&gt; of Weblogic Developer's Journal&lt;/li&gt; &lt;/ul&gt;&lt;br /&gt;If you use Weblogic, check these out.&lt;br /&gt;BlogicBlogger Over and Out&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8504592-109689286809791286?l=blogicblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blogicblog.blogspot.com/feeds/109689286809791286/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8504592&amp;postID=109689286809791286&amp;isPopup=true' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8504592/posts/default/109689286809791286'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8504592/posts/default/109689286809791286'/><link rel='alternate' type='text/html' href='http://blogicblog.blogspot.com/2004/10/who-is-blogging-about-weblogic.html' title='Who is blogging about Weblogic'/><author><name>BlogicBlogger</name><uri>http://www.blogger.com/profile/02931775813348618827</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8504592.post-109680367653236910</id><published>2004-10-03T07:40:00.000-04:00</published><updated>2004-10-03T08:20:14.336-04:00</updated><title type='text'>The power of GraphViz</title><content type='html'>Ever felt the need to extract some relations from the configuration or data and present it in a visual form nicely layed out. Ever given that up as too hard due to the hard problem of laying out the elements? If you did, then check out &lt;a href="http://www.research.att.com/sw/tools/graphviz/"&gt;GraphViz.&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;While GraphViz by itself is not Java, it is cross-platform and is fairly easy to setup and invoke from Java. It is also open-source, if that is important to you.&lt;br /&gt;&lt;br /&gt;So, what does GraphViz do? Well, it does fancy graph layouts. Sounds boring until you realize that graphs - or data that could become graphs - are actually all over the Java world.&lt;br /&gt;&lt;br /&gt;Let me give you a few examples:&lt;br /&gt;&lt;ul&gt;&lt;li&gt; Ant task dependancies are graphs. If your ant file is rather large, check out &lt;a href="http://ant2dot.sourceforge.net/"&gt;ant2dot&lt;/a&gt;, &lt;a href="http://vizant.sourceforge.net/"&gt;Vizant&lt;/a&gt; or &lt;a href="http://www.ericburke.com/downloads/antgraph/index.html"&gt;AntGraph&lt;/a&gt;.&lt;br /&gt;&lt;/li&gt;&lt;li&gt; Spring dependencies are graphs. If your Spring project is getting complex, get an overview of it with &lt;a href="http://www.samoht.com/wiki/wiki.pl?SpringViz"&gt;SpringViz&lt;/a&gt;.&lt;br /&gt;&lt;/li&gt;&lt;li&gt; If your code is already deployed, but you experience hangs or slowdowns, Graphviz will help to &lt;a href="http://dev2dev.bea.com/products/wlplatform81/articles/thread_dumps.jsp"&gt;visualize the thread dumps&lt;/a&gt;.&lt;/li&gt;&lt;li&gt;If you are not happy with GIF/SVG/PNG/PS output that Graphviz is capable of generating, you could always try a more interactive approach with &lt;a href="http://zvtm.sourceforge.net/zgrviewer.html"&gt;ZGRViewer&lt;/a&gt; (a bit raw, but very promising project)&lt;br /&gt;  &lt;/li&gt; &lt;li&gt; Many other uses exist, some of which are described at the &lt;a href="http://www.graphviz.org/Resources.html"&gt;GraphViz resource page&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt; Finally, if you are able to generate text file that says &lt;span style="font-style: italic;"&gt;a-&gt;c; b-&gt;c; c-&gt;d&lt;/span&gt;, you can generate GraphViz input (dot file) and let the program itself do the magic of layout. And once you master a simple dot file, you can start adding such bells and whistles as colors, clusters and structures.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;If you have an itch to scratch, let GraphViz help you with it.&lt;br /&gt;&lt;br /&gt;BlogicBlogger Over and Out&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8504592-109680367653236910?l=blogicblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blogicblog.blogspot.com/feeds/109680367653236910/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8504592&amp;postID=109680367653236910&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8504592/posts/default/109680367653236910'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8504592/posts/default/109680367653236910'/><link rel='alternate' type='text/html' href='http://blogicblog.blogspot.com/2004/10/power-of-graphviz.html' title='The power of GraphViz'/><author><name>BlogicBlogger</name><uri>http://www.blogger.com/profile/02931775813348618827</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8504592.post-109670283358355635</id><published>2004-10-02T03:24:00.000-04:00</published><updated>2004-10-02T03:40:33.583-04:00</updated><title type='text'>Extending the podcasting loop</title><content type='html'>So, you already use &lt;a href="http://ipodder.org/"&gt;iPodder&lt;/a&gt; to listen to your &lt;a href="http://www.itconversations.com/"&gt;ITConversations&lt;/a&gt; on the iPod with a &lt;span style="font-style: italic;"&gt;1-click&lt;/span&gt; ease.&lt;br /&gt;&lt;br /&gt;All is well, except that it is starting to get difficult to remember which shows you already listened to and which ones are still new. You can of course go to iTunes, find the &lt;span style="font-style: italic;"&gt;already-listened-to&lt;/span&gt; track and manually delete it or move it to the 'archived' section. But that is very much against &lt;span style="font-style: italic;"&gt;1-click&lt;/span&gt;spirit.&lt;br /&gt;&lt;br /&gt;It would be very nice to be able to mark from inside the iPod which tracks you are no longer interested in. Except that iPod is a read-only device.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Except that it is not!&lt;/span&gt; You can rate a track with 0-5 stars and that information will get synchronized to the iTunes on the next connection.&lt;br /&gt;&lt;br /&gt;Introducing ArchiveTrack. Inspired by &lt;a href="http://www.ipportunities.nl/wordpress/index.php?p=31"&gt;one of the iPodder impementations&lt;/a&gt;, it uses Windows Scripting Host to archive the tracks (in a given genre) using rating value as a trigger.&lt;br /&gt;&lt;br /&gt;The script is given here in all entirety. Feel free to modify it or incorporate it into other setups as long as this article is attributed.&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;/*&lt;br /&gt;    Run this with  'cscript ArchiveTracks.js'&lt;br /&gt;&lt;br /&gt;    The script goes through the songs in sourceGenre and&lt;br /&gt;        moves/archives the ones that have ratings under the threshold&lt;br /&gt;        into targetGenre.&lt;br /&gt;&lt;br /&gt;    Usage scenario:&lt;br /&gt;        1) Download podcasting content using iPodder (1 - click)&lt;br /&gt;        2) Listen to it on your iPod&lt;br /&gt;        3) While you are listening, rate the track 1/2 stars (default script threshold)&lt;br /&gt;        4) After the next synchronization, run this script with iPod still connected&lt;br /&gt;&lt;br /&gt;    Version: 1.0b1 (Oct 2, 2004)&lt;br /&gt;    Author: Blogic Blogger&lt;br /&gt;    License: Use in any way desired, but mention the source and author&lt;br /&gt;*/&lt;br /&gt;&lt;br /&gt;try&lt;br /&gt;{&lt;br /&gt;    var sourceGenre = 'Speech'; // The genre used by ITConversations&lt;br /&gt;    var targetGenre = 'Speech-Archive'; //The genre to collect all the listened content in&lt;br /&gt;    var archiveThreshold = 50; // 1 or 2 stars&lt;br /&gt;    var progressNoticeRepeatCount = 250;&lt;br /&gt;&lt;br /&gt;    WScript.Echo('Connecting to iTunes');&lt;br /&gt;    var    iTunesApp = WScript.CreateObject("iTunes.Application");&lt;br /&gt;    var    mainLibrary = iTunesApp.LibraryPlaylist;&lt;br /&gt;&lt;br /&gt;    var tracks = mainLibrary.Tracks;&lt;br /&gt;    var songCount = tracks.count;&lt;br /&gt;    WScript.Echo('Total Song Count: ' + songCount);&lt;br /&gt;&lt;br /&gt;    for (i=1; i&lt;=songCount; i++)&lt;br /&gt;    {&lt;br /&gt;        if ((i%progressNoticeRepeatCount) == 0)&lt;br /&gt;        {&lt;br /&gt;            WScript.Echo('Checked ' + i + ' items');&lt;br /&gt;        };&lt;br /&gt;&lt;br /&gt;        var aTrack = tracks.Item(i);&lt;br /&gt;        if (aTrack.Genre==sourceGenre)&lt;br /&gt;        {&lt;br /&gt;            if ((aTrack.Rating &gt; 0) &amp;&amp;amp; (aTrack.Rating &lt; archiveThreshold))&lt;br /&gt;            {&lt;br /&gt;                WScript.Echo();&lt;br /&gt;                WScript.Echo('    Archiving: ' + aTrack.Name + ' by ' + aTrack.Artist + ' based on rating ' + aTrack.Rating);&lt;br /&gt;                WScript.Echo();&lt;br /&gt;                aTrack.Genre = targetGenre; //use 'aTrack.Delete();' to delete instead of archiving&lt;br /&gt;            }&lt;br /&gt;            else&lt;br /&gt;            {&lt;br /&gt;                WScript.Echo('    Keeping: ' + aTrack.Name + ' by ' + aTrack.Artist + ' based on rating ' + aTrack.Rating);&lt;br /&gt;            }&lt;br /&gt;        }&lt;br /&gt;    };&lt;br /&gt;}&lt;br /&gt;catch (e)&lt;br /&gt;{&lt;br /&gt;    WScript.Echo('Problem archiving: ' + e);&lt;br /&gt;};&lt;br /&gt;&lt;br /&gt;try&lt;br /&gt;{&lt;br /&gt;    WScript.Echo('Requesting iPod update');&lt;br /&gt;    iTunesApp.updateIPod();&lt;br /&gt;    WScript.Echo('Successful iPod update request');&lt;br /&gt;}&lt;br /&gt;catch (e)&lt;br /&gt;{&lt;br /&gt;    WScript.Echo('Problem updating iPod ' + e);&lt;br /&gt;}&lt;br /&gt;WScript.Echo('Done!');&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;BlogicBlogger Over and Out&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8504592-109670283358355635?l=blogicblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blogicblog.blogspot.com/feeds/109670283358355635/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8504592&amp;postID=109670283358355635&amp;isPopup=true' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8504592/posts/default/109670283358355635'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8504592/posts/default/109670283358355635'/><link rel='alternate' type='text/html' href='http://blogicblog.blogspot.com/2004/10/extending-podcasting-loop.html' title='Extending the podcasting loop'/><author><name>BlogicBlogger</name><uri>http://www.blogger.com/profile/02931775813348618827</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8504592.post-109669608909048453</id><published>2004-10-02T01:25:00.000-04:00</published><updated>2004-10-02T01:48:09.090-04:00</updated><title type='text'>Connecting the Microsoft Dots</title><content type='html'>When Win98 uptime was &lt;a href="http://support.microsoft.com/?kbid=216641"&gt;revealed&lt;/a&gt; to be never more than 49.7 days, Slashdot laughed. They could not imagine anybody actually wanting - or managing - to keep their Windows machine up for that long. I wonder if they would laugh &lt;a href="http://www.techworld.com/opsys/news/index.cfm?NewsID=2275"&gt;now&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;I wonder what other &lt;a href="http://jill.jazzkeyboard.com/qarticles.html"&gt;funny&lt;/a&gt; Microsoft problems are going to bite us well after their discovery.&lt;br /&gt;&lt;br /&gt;BlogicBlogger Over and Out&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8504592-109669608909048453?l=blogicblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blogicblog.blogspot.com/feeds/109669608909048453/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8504592&amp;postID=109669608909048453&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8504592/posts/default/109669608909048453'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8504592/posts/default/109669608909048453'/><link rel='alternate' type='text/html' href='http://blogicblog.blogspot.com/2004/10/connecting-microsoft-dots.html' title='Connecting the Microsoft Dots'/><author><name>BlogicBlogger</name><uri>http://www.blogger.com/profile/02931775813348618827</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8504592.post-109654513576204305</id><published>2004-09-30T07:49:00.000-04:00</published><updated>2004-09-30T08:05:39.663-04:00</updated><title type='text'>Troubleshooting ClassNotFoundException with Filemon (on Windows)</title><content type='html'>Have you ever run into classpath issues where you could have sworn the class was in a jar, the jar was on a classpath, yet you still got NoClassDefFoundError or ClassNotFoundException. Or perhaps you define several Classloaders in your application each with its own classpath and are not quite sure which one gets the priority in a specific situation.&lt;br /&gt;&lt;br /&gt;On Windows, &lt;a href="http://www.sysinternals.com/ntw2k/source/filemon.shtml"&gt;FileMon&lt;/a&gt;  from SysInternals is a great free tool to resolve exactly those kind of questions.&lt;br /&gt;&lt;br /&gt;Imagine you have a very simple java class:&lt;br /&gt;&lt;code&gt;&lt;br /&gt;public class Test&lt;br /&gt;{&lt;br /&gt;   public static void main(String[] args)  throws Exception&lt;br /&gt;   {&lt;br /&gt;              Class c = Class.forName("somepackage.SomeClass");&lt;br /&gt;   }&lt;br /&gt;}&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;Basically, we are trying to load somepackage.SomeClass into the system. For our test purposes that class does not exist.&lt;br /&gt;&lt;br /&gt;Compile this class and run. It comes back with &lt;code&gt;java.lang.ClassNotFoundException: somepackage.SomeClass&lt;/code&gt;. As it should.&lt;br /&gt;&lt;br /&gt;The question however is what Classpath the JVM was looking for the class on. If your application is a J2EE deployment or anything with custom classloaders, this question may become a hard one to answer.&lt;br /&gt;&lt;br /&gt;This is where the FileMon shines. FileMon will show you every file operation on the machine performed by any - or all - of the processes.&lt;br /&gt;&lt;br /&gt;Start it up and set the filter to java.exe . If that causes problems you can reset filter to * and check what name your JVM is generating the log entries under.&lt;br /&gt;&lt;br /&gt;With FileMon capture enabled, rerun your test or scenario. After you see the ClassNotFoundException, stop the capture. Now search from the capture start for the classname you got in the exception, in this case &lt;code&gt;SomeClass&lt;/code&gt;. You should see a sequence of the lines similar to the following (some columns had been cut):&lt;br /&gt;&lt;br /&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;C:\temp\filemontest&lt;/td&gt;&lt;td&gt;SUCCESS&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;C:\&lt;/strong&gt;somepackage\SomeClass.class&lt;/td&gt;&lt;td&gt;PATH  NOT FOUND&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;C:\temp\filemontest&lt;/td&gt;&lt;td&gt;SUCCESS&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;C:\Utils\&lt;/strong&gt;somepackage\SomeClass.class&lt;/td&gt;&lt;td&gt;PATH  NOT FOUND&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;C:\temp\filemontest&lt;/td&gt;&lt;td&gt;SUCCESS&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;C:\temp\&lt;/strong&gt;somepackage\SomeClass.class&lt;/td&gt;&lt;td&gt;PATH NOT FOUND&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;C:\temp\filemontest&lt;/td&gt;&lt;td&gt;SUCCESS&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;C:\temp\filemontest\&lt;/strong&gt;somepackage\SomeClass.class&lt;/td&gt;&lt;td&gt;PATH NOT FOUND&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;br /&gt;From here, we can figure out that the classpath checked was: &lt;code&gt;C:\;C:\Utils;C:\temp;C:\temp\filemontest&lt;/code&gt;.&lt;br /&gt;Now, you can check that against your expectations and figure out how to fix the discrepancy.&lt;br /&gt;&lt;br /&gt;If you are on Solaris/Linux machine instead, look into truss/strace for a way to achieve very similar results.&lt;br /&gt;&lt;br /&gt;BlogicBlogger Over and Out&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8504592-109654513576204305?l=blogicblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://www.sysinternals.com/ntw2k/source/filemon.shtml' title='Troubleshooting ClassNotFoundException with Filemon (on Windows)'/><link rel='replies' type='application/atom+xml' href='http://blogicblog.blogspot.com/feeds/109654513576204305/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8504592&amp;postID=109654513576204305&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8504592/posts/default/109654513576204305'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8504592/posts/default/109654513576204305'/><link rel='alternate' type='text/html' href='http://blogicblog.blogspot.com/2004/09/troubleshooting-classnotfoundexception.html' title='Troubleshooting ClassNotFoundException with Filemon (on Windows)'/><author><name>BlogicBlogger</name><uri>http://www.blogger.com/profile/02931775813348618827</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8504592.post-109649479417066231</id><published>2004-09-29T17:21:00.000-04:00</published><updated>2004-09-29T18:32:44.386-04:00</updated><title type='text'>XMLStarlet: A gentle introduction into XSLT</title><content type='html'>In my work as a BEA Tech Support engineer, I have to spend a lot of time dealing with XML content. In the past I tried to &lt;span style="font-style: italic;"&gt;grep&lt;/span&gt; through the files, but had found that element order and random newlines make it quite hard. I have since found a solution.&lt;br /&gt;&lt;br /&gt;Everybody who works with XML probably knows that XSLT/XPATH is supposed to be a good way to manipulate XML files. Unfortunately, XSLT is very verbose and sometimes quite obscure, especially when it comes to plain text output. I have tried using it a couple of times and never got beyond a simple HelloWorld.&lt;br /&gt;&lt;br /&gt;Then I discovered &lt;a href="http://xmlstar.sourceforge.net/"&gt;XMLStarlet&lt;/a&gt;. It is built on libxml2 and libxslt and is provided for several platforms as a all-in-one executable.&lt;br /&gt;&lt;br /&gt;XMLStarlet has a number of options; among them are transformation, edit, canonicalization and many others. The one I find most useful is &lt;code&gt;select&lt;/code&gt;. With select, XMLStarlet works something like an in-file unix find. You provide command line switches which describe what you are searching for and what you want to display.&lt;br /&gt;&lt;br /&gt;And the best part of all is that the proprietary syntax translates into 100% correct XSLT, so when you have outgrown the tool or need more specific tweaking, you take the generated XSLT and start editing that directly.&lt;br /&gt;&lt;br /&gt;Let me give you an example. I often have to work with Weblogic's config.xml file which defines the configuration for a whole domain. It describes servers, clusters, JMSQueues, SecurityRealms and many more aspects. And, as config.xml was designed for the software's convinience rather than support engineer's, it groups elements together in a less than intuitive fashion.&lt;br /&gt;&lt;br /&gt;Following, is a very small part of config.xml structure (derived  from a sample config.xml file using XMLStartlet's &lt;code&gt;xml el -a config.xml&lt;/code&gt; command.&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;Domain&lt;br /&gt;Domain/@Name&lt;br /&gt;....&lt;br /&gt;Domain/Server&lt;br /&gt;Domain/Server/@ListenAddress&lt;br /&gt;Domain/Server/@ListenPort&lt;br /&gt;Domain/Server/@Name&lt;br /&gt;Domain/Server/@Cluster&lt;br /&gt;...&lt;br /&gt;Domain/Server/WebServer&lt;br /&gt;...&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;A task I need to do often is to check how many servers a client's config.xml has, what their names are and how are they distributed between clusters. Manually, it means searching for &amp;lt;Server tag and then eyeballing for Name attribute.&lt;br /&gt;&lt;br /&gt;With XMLStarlet it becomes:&lt;br /&gt;&lt;code&gt;xml sel -t -m //Server -v @Name -n config.xml&lt;/code&gt;&lt;br /&gt;with the output of&lt;br /&gt;&lt;code&gt;&lt;br /&gt;nhgprdadmin&lt;br /&gt;nhgapp03a&lt;br /&gt;nhgapp03b&lt;br /&gt;nhgapp01a&lt;br /&gt;nhgapp04a&lt;br /&gt;nhgapp01b&lt;br /&gt;nhgapp04b&lt;br /&gt;nhgapp02a&lt;br /&gt;nhgapp02b&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;In here, &lt;span style="font-weight: bold;"&gt;-m&lt;/span&gt; is match and &lt;span style="font-weight: bold;"&gt;-v&lt;/span&gt; is display. &lt;span style="font-weight: bold;"&gt;-n&lt;/span&gt; is a newline, not something that is obvious in XSLT  itself. The parameters are XPATH values.&lt;br /&gt;&lt;br /&gt;Do this 5 times and it pays back the  time investment involved in learning the command syntax.&lt;br /&gt;&lt;br /&gt;Now, let's try to do something more complex. Specifically, I want to check which cluster each server belongs to. And to cut this post short(er), let's say I want it sorted by the cluster.&lt;br /&gt;&lt;br /&gt;The command would be:&lt;br /&gt;&lt;code&gt;xml sel -t -m //Server -s ATL @Cluster -v @Cluster -o " - " -v @Name -n config.xml&lt;/code&gt;&lt;br /&gt;with the output of&lt;br /&gt;&lt;code&gt;&lt;br /&gt;- nhgprdadmin&lt;br /&gt;cehs - nhgapp03a&lt;br /&gt;cehs - nhgapp03b&lt;br /&gt;cehs - nhgapp04a&lt;br /&gt;cehs - nhgapp04b&lt;br /&gt;his1 - nhgapp01a&lt;br /&gt;his1 - nhgapp02a&lt;br /&gt;his2 - nhgapp01b&lt;br /&gt;his2 - nhgapp02b&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;We can immediately see that there is one non-clustered (admin) server, 4 servers in one cluster and 2 servers each in the other two clusters. In the command above, &lt;span style="font-weight: bold;"&gt;-s&lt;/span&gt; is sort by Cluster attribute and &lt;span style="font-weight: bold;"&gt;-o&lt;/span&gt; is verbose output used for spacing. Instead  of -v -o -v,  I could  use &lt;code&gt; -v "concat(XXX,yyy,ZZZ)"&lt;/code&gt;, but that required a greater knowledge of XSLT than I had the first time I used the tool.&lt;br /&gt;&lt;br /&gt;And just to show you  the XSLT that the above command really corresponds to, it is (after removing long header and footer):&lt;br /&gt;&lt;pre&gt;&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;&lt;/span&gt;&amp;lt;xsl:template match="/"&amp;gt;&lt;br /&gt; &amp;lt;xsl:call-template name="t1"/&amp;gt;&lt;br /&gt;&amp;lt;/xsl:template&amp;gt;&lt;br /&gt;&amp;lt;xsl:template name="t1"&amp;gt;&lt;br /&gt; &amp;lt;xsl:for-each select="//Server"&amp;gt;&lt;br /&gt;   &amp;lt;xsl:sort order="ascending" data-type="text" case-order="upper-first" select="@Cluster"/&amp;gt;&lt;br /&gt;   &amp;lt;xsl:value-of select="@Cluster"/&amp;gt;&lt;br /&gt;   &amp;lt;xsl:value-of select="' - '"/&amp;gt;&lt;br /&gt;   &amp;lt;xsl:value-of select="@Name"/&amp;gt;&lt;br /&gt;   &amp;lt;xsl:value-of select="'&amp;amp;#10;'"/&amp;gt;&lt;br /&gt; &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;&amp;lt;/xsl:template&amp;gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;As you  probably can imagine, it takes quite a bit longer for an XSLT beginner to write the code above from scratch.&lt;br /&gt;&lt;br /&gt;I hope this was useful and will convince you to have a look at the XMLStarlet.&lt;br /&gt;&lt;br /&gt;BloggicBlogger Over and Out&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8504592-109649479417066231?l=blogicblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://xmlstar.sourceforge.net/' title='XMLStarlet: A gentle introduction into XSLT'/><link rel='replies' type='application/atom+xml' href='http://blogicblog.blogspot.com/feeds/109649479417066231/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8504592&amp;postID=109649479417066231&amp;isPopup=true' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8504592/posts/default/109649479417066231'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8504592/posts/default/109649479417066231'/><link rel='alternate' type='text/html' href='http://blogicblog.blogspot.com/2004/09/xmlstarlet-gentle-introduction-into.html' title='XMLStarlet: A gentle introduction into XSLT'/><author><name>BlogicBlogger</name><uri>http://www.blogger.com/profile/02931775813348618827</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8504592.post-109635468077937179</id><published>2004-09-28T02:18:00.000-04:00</published><updated>2004-09-28T02:58:00.780-04:00</updated><title type='text'>A fitting first post: I love Vim</title><content type='html'>One's first post should be interesting. And what could make a &lt;span style="font-style: italic;"&gt;techie&lt;/span&gt;'s post more interesting then the Vi vs. Emacs battle. So in my very first post allow me to declare my allegiance to Vi. Or to be more specific &lt;a href="http://www.vim.org/"&gt;Vim&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;But it would not be interesting to just announce my preferences and be done with that. Let me instead explain a little &lt;span style="font-weight: bold;"&gt;what&lt;/span&gt; I like in Vim and what I have done to it in making it useful for me.&lt;br /&gt;&lt;br /&gt;Following are the basic plugins I have added to my setup:&lt;br /&gt;&lt;dl&gt;&lt;br /&gt;&lt;dt&gt;  &lt;a href="http://vim.sourceforge.net/scripts/script.php?script_id=634"&gt;OTF&lt;/a&gt;:  &lt;span class="txth1"&gt;On-The-Fly coloring of patterns&lt;br /&gt;&lt;/span&gt;&lt;/dt&gt;&lt;dd&gt; This plugin is indispensable if you are trying to track several items happening in a file at once. For example, if you are trying to read a piece of java code and need to keep track of all log messages, just highlight the specific calls with one of OTF's colours and you are done. You can of course do it using search pattern, but then you java lost the search ability. And OTF allows you to do multiple colours, so you can keep track of multiple patterns at the same time.&lt;br /&gt;&lt;br /&gt;&lt;/dd&gt;&lt;dt&gt; &lt;a href="http://www.vim.org/scripts/script.php?script_id=318"&gt;F&lt;/a&gt;: An unfortunately named Find plugin&lt;br /&gt;&lt;/dt&gt;&lt;dd&gt; You may not use it too often, but if you have to look at something that has a line of useful data, couple of lines of junk, another line of useful data, this tool allows you to hide away the junk by &lt;span style="font-style: italic;"&gt;folding&lt;/span&gt; it away. In some instances, it is better than doing :v/pattern/d because you may actually want to examine the particular context in details. With &lt;span style="font-weight: bold;"&gt;F&lt;/span&gt;, you just open the fold above/bellow.&lt;br /&gt;&lt;br /&gt;&lt;/dd&gt;&lt;dt&gt; &lt;a href="http://www.vim.org/scripts/script.php?script_id=446"&gt;JavaDecompiler&lt;/a&gt;: A Vim frontend for JAD&lt;br /&gt;&lt;/dt&gt;&lt;dd&gt; If you decompile class files for research purposes, you might be annoyed with having to run class file through decompiler, save the result into a second file, open that file in the favourite java editor and then - when you are finished - still having to delete the decompiled file. If Vim is your favourite editor, this instead becomes a true one-click exercise. Find the file, open it and voila. No manual conversion, no deletion. This plugin will do it all for you. Just make sure your .class files are associated with Vim.&lt;br /&gt;&lt;/dd&gt;&lt;/dl&gt;&lt;br /&gt;&lt;br /&gt;And this is my basic setup. I have additional configuration settings and may blog about them another time if there is any interest.&lt;br /&gt;&lt;br /&gt;And just as a disclamer, you can do most of those things with Emacs and I have done so in the past.  But Vim is the one I  kept coming back to and don't think I will change away from it any time soon.&lt;br /&gt;&lt;br /&gt;BlogicBlogger Over and Out&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8504592-109635468077937179?l=blogicblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blogicblog.blogspot.com/feeds/109635468077937179/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8504592&amp;postID=109635468077937179&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8504592/posts/default/109635468077937179'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8504592/posts/default/109635468077937179'/><link rel='alternate' type='text/html' href='http://blogicblog.blogspot.com/2004/09/fitting-first-post-i-love-vim.html' title='A fitting first post: I love Vim'/><author><name>BlogicBlogger</name><uri>http://www.blogger.com/profile/02931775813348618827</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry></feed>
