<?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-602769459329747644</id><updated>2011-11-28T05:17:55.847+09:00</updated><category term='Marketing'/><title type='text'>Miscellaneous notes from BM</title><subtitle type='html'>Everything popular is wrong. (Oscar Wilde)</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://maryniuk.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/602769459329747644/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://maryniuk.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><link rel='next' type='application/atom+xml' href='http://www.blogger.com/feeds/602769459329747644/posts/default?start-index=101&amp;max-results=100'/><author><name>BM</name><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>112</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-602769459329747644.post-7667323713024058107</id><published>2010-11-06T01:09:00.003+09:00</published><updated>2010-11-06T01:14:07.725+09:00</updated><title type='text'>Finally we've got Base64 in Java...</title><content type='html'>It was always a pain and we used those strange Sun packages (crossing fingers, of course). But now Java 6 has a little thing, that is a standard package and won't collide, at least:&lt;br /&gt;&lt;code&gt;&lt;br /&gt; public static byte[] decodeFromBase64(String encoded) {&lt;br /&gt;    return javax.xml.bind.DatatypeConverter&lt;/code&gt;&lt;div&gt;&lt;code&gt;              .parseBase64Binary(encoded);&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt;public static String encodeToBase64(byte[] binary) {&lt;br /&gt;    return javax.xml.bind.DatatypeConverter&lt;/code&gt;&lt;/div&gt;&lt;div&gt;&lt;code&gt;              .printBase64Binary(binary);&lt;br /&gt; }&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;Nothing special. Just nice to know. :-)&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/602769459329747644-7667323713024058107?l=maryniuk.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://maryniuk.blogspot.com/feeds/7667323713024058107/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=602769459329747644&amp;postID=7667323713024058107' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/602769459329747644/posts/default/7667323713024058107'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/602769459329747644/posts/default/7667323713024058107'/><link rel='alternate' type='text/html' href='http://maryniuk.blogspot.com/2010/11/finally-weve-got-base64-in-java.html' title='Finally we&apos;ve got Base64 in Java...'/><author><name>BM</name><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-602769459329747644.post-2281424996937445793</id><published>2010-10-28T10:10:00.006+09:00</published><updated>2010-10-29T09:26:31.762+09:00</updated><title type='text'>VMWare and Spring</title><content type='html'>VMWare &lt;a href="http://goo.gl/9hsx"&gt;bangs their bells for Spring framework&lt;/a&gt;, trying to tell it is best choice. Lots of people excited etc.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Now &lt;i&gt;(*cracks my fingers*)&lt;/i&gt; questions and doubts:&lt;/div&gt;&lt;div&gt;&lt;ol&gt;&lt;li&gt;Spring's arguments are valid. Yes, they are. With one little note: they are valid on EJB2 and JEE5, where first one has incredibly bad design, another is bulky and not really convenient. Wait a second... but we are not talking for &lt;b&gt;old&lt;/b&gt; projects future, but for &lt;b&gt;new&lt;/b&gt;! So, when you going to choose framework &lt;b&gt;for plain new&lt;/b&gt; project, the we &lt;b&gt;do&lt;/b&gt; have EJB3 and JEE6 today.&lt;/li&gt;&lt;li&gt;RedHat &lt;i&gt;(also known as a leader at Enterprises in Linux world, by the way)&lt;/i&gt; and Snorcle &lt;i&gt;(also know as Oracle, also known as benevolent dictator, also known as Sun Microsystems eater)&lt;/i&gt; — both of them completely don't really like Spring. In fact, they think it is a bullshit and they think JEE6 would fit to your datacenter much better.&lt;/li&gt;&lt;li&gt;Do you &lt;i&gt;really&lt;/i&gt; like that &lt;a href="http://uncyclopedia.wikia.com/wiki/XML"&gt;XML thing&lt;/a&gt;? I think this is all like back to a stone-age, instead have just everything minimalistic and cute (means: modern).&lt;/li&gt;&lt;li&gt;Template classes as intrusive as it turns your code to a bullshit. Yes, you can have a &lt;b&gt;workaround&lt;/b&gt; for this, but the keywords here are still stays to &lt;i&gt;"bad"&lt;/i&gt; and &lt;i&gt;"design"&lt;/i&gt;.&lt;/li&gt;&lt;li&gt;Tell me, you configuring or you coding?.. In Spring you will code^H^H^H^Hconfigure your project in XML. Well, no, you're literally &lt;b&gt;coding&lt;/b&gt;. You are freakin' &lt;b&gt;coding&lt;/b&gt; in XML, don't get fooled and mislead.&lt;br /&gt;&lt;br /&gt;Let me explain here a bit: a configuration file is something like you can find in Unix &lt;i&gt;/etc&lt;/i&gt; directory. It is a small, simple ASCII text file, you can put comments in there and you can parse it with your Perl/Python/Ruby or just AWK/Sed. This is what is called: &lt;i&gt;configuration file&lt;/i&gt; and was more than 30 years around. Now what Spring brings you into? A pile of XML, that are actually built into your WAR file. They do believe you have to change XML, so no need to change source code of Java.&lt;br /&gt;&lt;br /&gt;But this is utterly misleading: &lt;i&gt;you intrude to a deployed application&lt;/i&gt; anyway (sane companies will put it through a "Change Request" procedure that involves also testing and quality assurance sometimes), while &lt;i&gt;configuring application&lt;/i&gt; means you change only that little cute file in &lt;i&gt;/etc&lt;/i&gt; directory (or click few checkboxes in admin UI) and thus your buddy sysadmin can do that with a cigarette in his teeth with a little effort (change request still required, but a consequences are significantly smaller).&lt;/li&gt;&lt;li&gt;&lt;b&gt;Spring adds complexity&lt;/b&gt;, it does &lt;i&gt;not&lt;/i&gt; removes it. Don't be fooled: you will need to have a serious and difficult learning curve as well as you will need to spend weeks to configure your XML (see above).&lt;/li&gt;&lt;li&gt;Bugs in framework itself &lt;b&gt;will cost you&lt;/b&gt; a lot. So make sure your framework is extensively supported, reviewed and updated. Who you will trust more: giants like Oracle and RedHat that has tons of very fat customers, or just a little VMWare — yet another player in virtual world with not the best business model? You choose.&lt;/li&gt;&lt;li&gt;OK, you can dismiss my XML rants by changing from XML to annotations. Great point! Because here is another problem:&lt;b&gt; different ways to do the same thing&lt;/b&gt;. Java coders chronically away from Unix, but we already been there and we know it is called as "Tim Toady" or TMTOWTDI or "There's More Than One Way To Do It" or, simply &lt;b&gt;Perl&lt;/b&gt;. It results to things &lt;a href="http://www.perlmonks.org/?node_id=296552"&gt;like this&lt;/a&gt; or &lt;a href="http://www.perlmonks.org/?node_id=496245"&gt;like this&lt;/a&gt;. In contrast, the beauty of Python language lays in its great philosophy: &lt;i&gt;"There should be only one — and preferably only one — obvious way to do it"&lt;/i&gt;.&lt;br /&gt;Little note to above: I was &lt;b&gt;not&lt;/b&gt; talking about code obfuscation.&lt;/li&gt;&lt;li&gt;We already learned that &lt;b&gt;doing often casting is a bad idea&lt;/b&gt;. So that's why we do have Generics for this and why we are trying to go away from casting operations as much as far as possible. However, Spring is pushing you back to a mesozoic era to fight &lt;i&gt;java.lang.ClassCastException&lt;/i&gt; dinosaurs each next step. Stupid.&lt;/li&gt;&lt;li&gt;&lt;b&gt;\u3042\u306a\u305f\u306f\u99ac\u9e7f\u3067\u3059&lt;/b&gt; — this is how to say "Good morning" to your boss in Japanese &lt;i&gt;(anata ha baka desu)&lt;/i&gt;, or exactly what you will get, once you open your ResourceBundle in VIM editor.&lt;/li&gt;&lt;li&gt;It is going up to eleven... You normally should keep &lt;a href="http://www.javapractices.com/topic/TopicAction.do?Id=105"&gt;SQL separate from the code&lt;/a&gt;. Try it with Spring and see how it works (or not) for you.&lt;/li&gt;&lt;/ol&gt;&lt;div&gt;Of course, the main question still around: &lt;b&gt;Why bother with Spring&lt;/b&gt;, if JEE6:&lt;/div&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;Is getting to be more and more lightweight than Spring 3&lt;/li&gt;&lt;li&gt;Is less complicated (recently) than Spring 3&lt;/li&gt;&lt;li&gt;Is well designed&lt;/li&gt;&lt;li&gt;Is well documented&lt;/li&gt;&lt;li&gt;Is well supported&lt;/li&gt;&lt;li&gt;Is an industry standard and chosen by industry leaders (sure).&lt;/li&gt;&lt;li&gt;Has &lt;i&gt;more&lt;/i&gt; features&lt;/li&gt;&lt;li&gt;Is easier to learn (because it is less complicated)&lt;/li&gt;&lt;li&gt;Is not proprietary, versus Spring which &lt;i&gt;&lt;b&gt;is&lt;/b&gt; proprietary&lt;/i&gt; container.&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;I certainly don't have an answer on above. Maybe you have?&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Feel free to explain. :-)&lt;/div&gt;&lt;div&gt;&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/602769459329747644-2281424996937445793?l=maryniuk.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://maryniuk.blogspot.com/feeds/2281424996937445793/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=602769459329747644&amp;postID=2281424996937445793' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/602769459329747644/posts/default/2281424996937445793'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/602769459329747644/posts/default/2281424996937445793'/><link rel='alternate' type='text/html' href='http://maryniuk.blogspot.com/2010/10/vmware-and-spring.html' title='VMWare and Spring'/><author><name>BM</name><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-602769459329747644.post-4518899821382957948</id><published>2010-10-19T13:18:00.004+09:00</published><updated>2010-10-19T13:38:16.042+09:00</updated><title type='text'>JSR 286 and crying developers</title><content type='html'>JSR 286 is probably a primary way of how any web-related stuff should be done. Definitely. However, it has some nasty limitations, that would lead novice to hit the wall, step on rake, step on rake again etc. One of such limitations (well, not really, but still) is to return a file. Normally, JSR286 wants you to return HTML. But what if you want to click on some button and get a PDF file or TIFF or DOC or MP3 and so on? Usually, developers are setting content type, putting some content disposition to define filename etc, put some headers to flush cache, write to the output stream, recompile and deploy.&lt;div&gt;&lt;br /&gt;&lt;div&gt;Problem solved.&lt;/div&gt;&lt;div&gt;No, not really: once they call their portlet, entire application disappears and log is filled with devil's 666 lines of Java traceback from Hell. So, random desperate rants over forums begins usually with "me too!" or "pass me some code!" messages.&lt;/div&gt;&lt;div&gt;The real thing is: you need to read JSR286 &lt;i&gt;properly&lt;/i&gt;. See, the JSR 168 does not allows us to use something else than just HTML. Pretty much silly. But JSR 286 allows. How? Easy: serve it as a resource. Hence the recipe:&lt;/div&gt;&lt;div&gt;&lt;ol&gt;&lt;li&gt;Implement/override method in GenericPortlet:&lt;br /&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;serveResource(ResourceRequest request, ResourceResponse response)&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;In your JSP (or whatever you use) refer to it with Resource URL. In JSP you do it like this (use it on your own way):&lt;br /&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;renderResponse.createResourceURL().toString()&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;In that "serveResource" thing check your request parameters and then return your content into an InputStream.&lt;/li&gt;&lt;/ol&gt;&lt;div&gt;Keep in mind, that normally you're dealing with &lt;i&gt;ResourceResponse&lt;/i&gt;, which is different than HTTP response in a servlet. So after you've put content type in usual way, "setHeader" method is actually not available. But you can always use "setProperty" instead.&lt;/div&gt;&lt;div&gt;Now, if you are smart enough and using Liferay :-) instead of something else, then you simply could use one-liner &lt;i&gt;PortletResponseUtil&lt;/i&gt; class, wher you can find a bunch of "sendFile" or "write" methods. They are just for your convenience: get from byte array, InputStream etc. As an example how it works, watch:&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;PortletResponseUtil.sendFile(response,&lt;br /&gt;&lt;/span&gt;&lt;span class="Apple-style-span"  style=" ;font-family:'courier new';"&gt;   "test.pdf",&lt;br /&gt; new FileInputStream(new File("/tmp/test.pdf")),&lt;br /&gt;&lt;/span&gt;&lt;span class="Apple-style-span"  style=" ;font-family:'courier new';"&gt;   "application/pdf");&lt;/span&gt;&lt;/div&gt;&lt;div&gt;Now use your own imagination how to make it actually right (by replacing &lt;i&gt;FileInputStream&lt;/i&gt; with something more valuable, as a starter). &lt;/div&gt;&lt;div&gt;This is it. Enjoy. :-)&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/602769459329747644-4518899821382957948?l=maryniuk.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://maryniuk.blogspot.com/feeds/4518899821382957948/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=602769459329747644&amp;postID=4518899821382957948' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/602769459329747644/posts/default/4518899821382957948'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/602769459329747644/posts/default/4518899821382957948'/><link rel='alternate' type='text/html' href='http://maryniuk.blogspot.com/2010/10/jsr-286-and-crying-developers.html' title='JSR 286 and crying developers'/><author><name>BM</name><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-602769459329747644.post-7431476094116575257</id><published>2010-10-12T10:31:00.003+09:00</published><updated>2010-10-12T10:32:50.417+09:00</updated><title type='text'>Webrick or "We Brick"</title><content type='html'>&lt;div&gt;Yup. "&lt;i&gt;We Brick&lt;/i&gt;" ©:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_cl8InCNq5jI/TLO6h2qSBoI/AAAAAAAAAQI/834Lsj6vntM/s1600/Screen+shot+2010-10-12+at+10.30.46+AM.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 302px;" src="http://3.bp.blogspot.com/_cl8InCNq5jI/TLO6h2qSBoI/AAAAAAAAAQI/834Lsj6vntM/s400/Screen+shot+2010-10-12+at+10.30.46+AM.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5526966258485036674" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/602769459329747644-7431476094116575257?l=maryniuk.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://maryniuk.blogspot.com/feeds/7431476094116575257/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=602769459329747644&amp;postID=7431476094116575257' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/602769459329747644/posts/default/7431476094116575257'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/602769459329747644/posts/default/7431476094116575257'/><link rel='alternate' type='text/html' href='http://maryniuk.blogspot.com/2010/10/webrick-or-we-brick.html' title='Webrick or &quot;We Brick&quot;'/><author><name>BM</name><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><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_cl8InCNq5jI/TLO6h2qSBoI/AAAAAAAAAQI/834Lsj6vntM/s72-c/Screen+shot+2010-10-12+at+10.30.46+AM.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-602769459329747644.post-2844609424270430816</id><published>2010-10-07T22:24:00.006+09:00</published><updated>2010-10-07T22:47:27.317+09:00</updated><title type='text'>Jasper Reports: gone!</title><content type='html'>OK, this is it. I fed up fighting &lt;a href="http://jasperforge.org/plugins/project/project_home.php?projectname=jasperreports"&gt;Jasper Reports&lt;/a&gt; and simply ditched it. &lt;a href="http://www.eclipse.org/birt/phoenix/"&gt;BIRT&lt;/a&gt; (or "dirt" — you call it) although has interesting things, still is even worse than the &lt;a href="http://jasperforge.org/plugins/project/project_home.php?projectname=jasperreports"&gt;Jasper Reports&lt;/a&gt;. There is also &lt;a href="http://reporting.pentaho.com/"&gt;Pentaho Reports&lt;/a&gt; available. They are actually nice, but buggy as hell, crashes and has no much features. Embedding is odd.&lt;div&gt;At first, I don't need that fancy GUI editor. I simply don't. Do you need? No, you don't either. Here is why: it &lt;i&gt;requires&lt;/i&gt; programming &lt;b&gt;anyway&lt;/b&gt;. So if you think you will get this sexy full-screen editor with mousedraggable objects and will pass you your girls at operations department — you're wrong, wrong and once again wrong. They won't use that. Because if boss will ask you to make &lt;span class="Apple-style-span"  style="color:#FF0000;"&gt;&lt;b&gt;red color&lt;/b&gt;&lt;/span&gt; some figures that are greater than 1000 — what you will do? It is not anymore mousedraggable and clicketyclickdroppable.&lt;/div&gt;&lt;div&gt;At second, I had a trouble with Japanese, but that's font package installation. Why do they do it this way — their problem. I don't like their (Jasper Report's) way to distribute fonts either.&lt;/div&gt;&lt;div&gt;Therefore I decided to make my own parser of my own markup, that is very similar to &lt;a href="http://www.reportlab.com/docs/rml2pdf-ds.pdf"&gt;RML&lt;/a&gt;, but is more looks like just a regular HTML. Basically a 50/50 mix of them.&lt;/div&gt;&lt;div&gt;So far, I achieved (in compare to Jasper Reports):&lt;/div&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;Something like 40 times faster PDF compilation. Yes, up to forty times.&lt;/li&gt;&lt;li&gt;A very simple way to embed it to your servlet. The keyword here: "very". It is mostly a re-entrant one-liner, something like this:&lt;br /&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;new PDFRender(OutputStream, InputStream);&lt;/span&gt;&lt;/li&gt;&lt;li&gt;Very small footprint.&lt;/li&gt;&lt;li&gt;Resulting PDF simply crashes my Preview.app ... BWAHAHAHAHAHAHA!&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;It renders still bit ugly sometimes and I still working on styles, but I have fully controlled by styles headers, footers, pagination, page layout, text body, paragraphs, True Type fonts, embedded images and a simple grid-like tables.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Soon table spanning and styling is still coming (probably right tomorrow). Later I will add SVG support for native charts (still don't know how what way to do it is the best), barcodes and lovely Japanese &lt;a href="http://en.wikipedia.org/wiki/QR_Code"&gt;QRCode&lt;/a&gt; that is required just everywhere through.&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/602769459329747644-2844609424270430816?l=maryniuk.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://maryniuk.blogspot.com/feeds/2844609424270430816/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=602769459329747644&amp;postID=2844609424270430816' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/602769459329747644/posts/default/2844609424270430816'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/602769459329747644/posts/default/2844609424270430816'/><link rel='alternate' type='text/html' href='http://maryniuk.blogspot.com/2010/10/jasper-reports-gone.html' title='Jasper Reports: gone!'/><author><name>BM</name><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-602769459329747644.post-4184575294353309086</id><published>2010-09-17T12:47:00.008+09:00</published><updated>2010-09-17T14:24:51.780+09:00</updated><title type='text'>Custom TTF Fonts in JasperReports</title><content type='html'>You hit this wall too, aren't ya? At first I was truly pissed off by the overall design of Jasper Reports (entire suite in general). At second, I am even more pissed off how fonts are handled in PDFs.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;First what you do, is you're trying to install some TTF fonts into your JVM, somewhere in $JRE/lib/fonts, map them and hope things will fly. Then you probably specify that your new font in Jasper Report XML file, something like:&lt;/div&gt;&lt;pre&gt;&amp;lt;font fontName="Great Font" /&gt;&lt;/pre&gt;&lt;div&gt;...and you finding it not working: in your PDF you see Helvetica. If you expect some Asian support (Japanese, e.g.), then you will find blank space there. Familiar, eh? Of course, you go around the XML Schema and finding that Jasper Reports actually has some more arguments to the "font" aggregate, so you adding it:&lt;/div&gt;&lt;pre&gt;&amp;lt;font fontName="Great Font" ispdfembedded="true"/&gt;&lt;/pre&gt;&lt;div&gt;...and you finding it not working: in your PDF you see Helvetica. Then you, puzzled, finding out that there is also some more attributes (although they are quite odd anyway), so you use them too:&lt;/div&gt;&lt;pre&gt;&amp;lt;font fontName="Great Font" ispdfembedded="true"&lt;br /&gt;pdffontname="/madly/hardcoded/path/on/the/system/to/your/greatfont.ttf"/&gt;&lt;/pre&gt;&lt;div&gt;...and you still finding it not working: in your PDF you see Helvetica. Then you, angry, yelling "WTF!!!", googling around and you finding a lots of people, suffering from the same problem.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;The key to solve this puzzle is to deal with completely stupid implementation of Jasper Reports engine: you have to &lt;i&gt;package&lt;/i&gt; these fonts into JAR file and &lt;i&gt;embed&lt;/i&gt; into your application. They (developers) think that since it is Java, so "run everywhere", therefore you take your .WAR or .JAR or .EAR file and put on any possible container and it will just work, so no need to setup the environment. In reality, however, when you deploy 1000 applications like this, you also have 1000 duplications of the same stuff. It results to a horrible mess and very very VERY angry sysadmins that literally hates all the guts of Java. Moral: &lt;b&gt;keep it simple, stupid&lt;/b&gt;.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;So anyways, how to use own TTFs or at least find Japanese visible? JaperReport's answer is: put this stuff into JAR and toss in into the classpath. Here is how to do it:&lt;/div&gt;&lt;div&gt;&lt;ol&gt;&lt;li&gt;In the default, root package, create a property file with a magic name: &lt;i&gt;jasperreports_extension.properties&lt;br /&gt;&lt;span class="Apple-style-span" style="font-style: normal;"&gt;Developers could not name it more elegant, like fonts.properties or, perfectly elegant, having none of it at all.&lt;/span&gt;&lt;/i&gt;&lt;/li&gt;&lt;li&gt;&lt;i&gt;Create a package for your fonts. Let's say it is foo.bar.fonts&lt;/i&gt;&lt;/li&gt;&lt;li&gt;In this strange properties file we've made above, you have to put two things at least. One is very magical static property that normally can be hardcoded once and forever somewhere deep in the guts of JasperReports and never ever remembered anymore:&lt;br /&gt;&lt;i&gt;net.sf.jasperreports.extension.registry.factory.simple.font.families&lt;br /&gt;=net.sf.jasperreports.engine.fonts.SimpleFontExtensionsRegistryFactory&lt;br /&gt;&lt;span class="Apple-style-span" style="font-style: normal;"&gt;Can you read that wide?&lt;/span&gt;&lt;/i&gt;&lt;/li&gt;&lt;li&gt;Another property is to reference the reference to the reference of the actual files, embedded into the JAR:&lt;br /&gt;&lt;i&gt;net.sf.jasperreports.extension.simple.font.families.&lt;b&gt;somebullshit&lt;/b&gt;&lt;br /&gt;=foo/bar/fonts/fonts.xml&lt;br /&gt;&lt;/i&gt;That's how to let finally Jasper find the &lt;i&gt;fonts.xml&lt;/i&gt; file. Please not one very nasty and ugly thing: there is no leading slash prior to "foo". Noticed? If you put it &lt;i&gt;(as it should be)&lt;/i&gt;, then forget it working.&lt;/li&gt;&lt;li&gt;Now, in the &lt;i&gt;foo.bar.fonts&lt;/i&gt; package create "&lt;i&gt;fonts.xml&lt;/i&gt;". You can change its name in step #4.&lt;/li&gt;&lt;li&gt;Map your fonts there as it is in examples of JasperReports (demo/fonts).&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Compile all this assembly into a JAR file and toss in somewhere in your app $CLASSPATH. Now your PDF should pick up the font finally.&lt;/li&gt;&lt;li&gt;Phew!&lt;/li&gt;&lt;/ol&gt;&lt;/div&gt;&lt;div&gt;If you still find this idiotic (like I do), you'd better try Dynamic Jasper &lt;a href="http://http//dynamicjasper.sourceforge.net/"&gt;http://http://dynamicjasper.sourceforge.net/&lt;/a&gt; and it suppose to help you.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;You might ask: how it should be better implemented? OK, you ever heard about X11 and how fonts are mapped there? In the same fashion. Why not use just &lt;i&gt;fontmap.properties&lt;/i&gt; file in the JAR and just simply drop fonts there and have zero XML? Yes, it is magic name, but it is the only magic name. And then stick to something like one line per font, e.g.:&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;family=weight,encoding,embedded,file.ttf&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;Said that, it might look this way:&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;greatfamily=n,UTF-8,t,greatfont-nnormal.ttf&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;greatfamily=i,UTF-8,t,greatfont-italic.ttf&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;greatfamily=b,UTF-8,t,greatfont-bold.ttf&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;greatfamily=bi,UTF-8,t,greatfont-bold-italic.ttf&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;Then, you run something like $JASPER_REPORTS/bin/fontpack ...and it would create such a JAR right away for you. How that sounds? That sounds just greatly simplified yet idiotism. What it actually should be: you specify font name "Great Font" (not path to actual TTF!) in the XML and it picks up automatically from the JVM right away. If font is not installed, then it has to fall-back to the default (Helvetica, in this case) by warning the user to the log file (instead of crashing, by the way). &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Still, I suffer from its &lt;i&gt;performance&lt;/i&gt;, if this is the word. Generating PDFs are still hell very slow for my requirements. My next step will be ditching JasperReports and go OpenOffice.org as template editor and renderer iText based engine. Well, if company will pay for that. :-)&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/602769459329747644-4184575294353309086?l=maryniuk.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://maryniuk.blogspot.com/feeds/4184575294353309086/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=602769459329747644&amp;postID=4184575294353309086' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/602769459329747644/posts/default/4184575294353309086'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/602769459329747644/posts/default/4184575294353309086'/><link rel='alternate' type='text/html' href='http://maryniuk.blogspot.com/2010/09/custom-ttf-fonts-in-jasperreports.html' title='Custom TTF Fonts in JasperReports'/><author><name>BM</name><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-602769459329747644.post-2131659033734665326</id><published>2010-09-01T14:23:00.004+09:00</published><updated>2010-09-01T14:56:32.602+09:00</updated><title type='text'>Nexenta 3.0 Zones: Fixing Broken Bones</title><content type='html'>As a rule of thumbs, when things installs very smoothly, I always suspect something wrong, because there is an old Ukrainian saying: &lt;span style="font-style: italic;"&gt;"Devil lives in a silent lake"&lt;/span&gt;. This time same thing happened to newly installed Nexenta Core 3.0 Release. Installation went just as sweet and smooth.&lt;br /&gt;&lt;br /&gt;But when it comes to zones... :-(&lt;br /&gt;&lt;br /&gt;Long story short: Zones are just totally broken in Nexenta Core 3.0 Release, end of story. SSH won't work, you won't login, no passwords asked, nothing. And I am quite surprised it was never fixed (probably nobody took a chance to test it). Now is the way how I fixed, grepping over bugs database:&lt;br /&gt;&lt;br /&gt;First, before you install a zone, you have to fix broken &lt;span style="font-weight: bold;"&gt;/usr/bin/createzone&lt;/span&gt; Perl script. This should be done in two steps:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Replace &lt;span style="font-weight: bold;"&gt;elatte-unstable&lt;/span&gt; with &lt;span style="font-weight: bold;"&gt;hardy-unstable&lt;/span&gt; on a line #41.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Throw away &lt;span style="font-weight: bold;"&gt;@source_files&lt;/span&gt; with all its guts and replace with the following:&lt;br /&gt;&lt;pre&gt;my @source_files = qw(&lt;br /&gt;/lib/svc/method/nexenta-sysidtool-system&lt;br /&gt;/var/svc/manifest/system/nexenta-sysidtool.xml&lt;br /&gt;/lib/svc/method/nexenta-sysidtool-net&lt;br /&gt;);&lt;br /&gt;&lt;span style="font-family:Georgia,serif;"&gt;&lt;/span&gt;&lt;/pre&gt;&lt;/li&gt;&lt;/ol&gt;Second, fix broken &lt;span style="font-weight: bold;"&gt;/lib/svc/method/svc-syseventd&lt;/span&gt; script. This is done in quite dirty way, but at least works fine:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;In the &lt;span style="font-style: italic;"&gt;global&lt;/span&gt; zone edit the script above. Find this line (below the CDDL header):&lt;br /&gt;&lt;pre&gt;. /lib/svc/share/smf_include.sh&lt;/pre&gt;...and add this:&lt;br /&gt;&lt;pre&gt;[ `zonename` = global ] || sleep 3600 &amp;amp; exit 0&lt;br /&gt;&lt;/pre&gt;...so in result you will get this:&lt;br /&gt;&lt;pre&gt;. /lib/svc/share/smf_include.sh&lt;br /&gt;[ `zonename` = global ] || sleep 3600 &amp;amp; exit 0&lt;br /&gt;&lt;/pre&gt;&lt;/li&gt;&lt;/ol&gt;&lt;p&gt;This will allow required services finally start.&lt;/p&gt;&lt;p&gt;Now you can install your zone (&lt;span style="font-weight: bold;"&gt;zoneadm -z yourzonename install&lt;/span&gt;).&lt;br /&gt;&lt;/p&gt;&lt;p&gt;Third, fix &lt;span style="font-style: italic;"&gt;shadow&lt;/span&gt; and &lt;span style="font-style: italic;"&gt;passwd&lt;/span&gt;. Boot your zone and &lt;span style="font-weight: bold;"&gt;zlogin&lt;/span&gt; to it in a single mode (-S), then issue &lt;span style="font-weight: bold;"&gt;pwconv&lt;/span&gt; command and exit.&lt;/p&gt;&lt;p&gt;Finally, after you anyhow login to that thing, reconfigure broken system service once again, like this:&lt;br /&gt;&lt;/p&gt;&lt;pre&gt;dpkg-reconfigure sunwcsd&lt;br /&gt;svccfg import /var/svc/manifest/system/sysevent.xml&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;And yes, this is Unix. You should &lt;span style="font-style: italic;"&gt;reboot&lt;/span&gt; your zone in order it getting working right. :-)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/602769459329747644-2131659033734665326?l=maryniuk.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://maryniuk.blogspot.com/feeds/2131659033734665326/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=602769459329747644&amp;postID=2131659033734665326' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/602769459329747644/posts/default/2131659033734665326'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/602769459329747644/posts/default/2131659033734665326'/><link rel='alternate' type='text/html' href='http://maryniuk.blogspot.com/2010/09/nexenta-30-zones-fixing-broken-bones.html' title='Nexenta 3.0 Zones: Fixing Broken Bones'/><author><name>BM</name><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-602769459329747644.post-7561597296410026836</id><published>2010-08-30T11:18:00.003+09:00</published><updated>2010-08-30T12:46:25.241+09:00</updated><title type='text'>GlassFish v3 on OpenSolaris</title><content type='html'>OpenSolaris is dead as a distro, but it is still around, unless it's content moved/migrated to Nexenta or, later, IllumOS. Today I've got weird error from GlassFish v3 after installation. Apparently that's because OpenSolaris has chronically screwed up locales (one never grows up). Here is the way how the thing looks like in all its glory:&lt;br /&gt;&lt;pre&gt;Waiting for DAS to start ..Error starting domain: domain1.&lt;br /&gt;The server exited prematurely with exit code 6.&lt;br /&gt;Before it died, it produced the following output:&lt;br /&gt;&lt;br /&gt;UTF ERROR ["../../../src/solaris/instrument/EncodingSupport_md.c":66]: Failed to complete&lt;br /&gt;iconv_open() setup&lt;br /&gt;&lt;/pre&gt;So the cure is quite simple: fix that broken locale (in fact, broken locale breaks other things anyway). To do so, install &lt;code&gt;SUNWlang-enUS&lt;/code&gt; from the IPS and add &lt;code&gt;export LANG=en_US.UTF-8&lt;/code&gt; in your &lt;code&gt;.profile&lt;/code&gt; to make it default. Maybe also good idea to add it to the skeleton... :)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/602769459329747644-7561597296410026836?l=maryniuk.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://maryniuk.blogspot.com/feeds/7561597296410026836/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=602769459329747644&amp;postID=7561597296410026836' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/602769459329747644/posts/default/7561597296410026836'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/602769459329747644/posts/default/7561597296410026836'/><link rel='alternate' type='text/html' href='http://maryniuk.blogspot.com/2010/08/glassfish-v3-on-opensolaris.html' title='GlassFish v3 on OpenSolaris'/><author><name>BM</name><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-602769459329747644.post-6763191634807909508</id><published>2010-08-17T17:26:00.004+09:00</published><updated>2010-08-17T17:50:38.620+09:00</updated><title type='text'>Mirroring ZFS rpool</title><content type='html'>OK, time to mirror my rpool. Apparently, it rendered for that works with FreeBSD, but does not with Solaris. &lt;i&gt;(WTF!?)&lt;/i&gt;&lt;br /&gt;&lt;pre&gt;# zpool attach rpool c0t0d0 c0t1d0&lt;br /&gt;cannot label 'c0t1d0': EFI labeled devices are not supported on root pools.&lt;/pre&gt;Ewww... :-(&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Here is the steps to cure this illness:&lt;/div&gt;&lt;div&gt;&lt;ol&gt;&lt;li&gt;&lt;b&gt;format -e&lt;/b&gt; will give you all the drives available.&lt;/li&gt;&lt;li&gt;If you found one it needs to be formatted, use &lt;b&gt;fdisk&lt;/b&gt; and create 100% &lt;b&gt;Solaris2&lt;/b&gt; partition.&lt;/li&gt;&lt;li&gt;Your drive supposed to be in &lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;/dev/&lt;b&gt;rdsk&lt;/b&gt;/&lt;/span&gt; somewhere (don't forget to look in "rdsk", instead in "dsk"). In my case &lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;/dev/rdsk/c0t1d0&lt;/span&gt;&lt;/li&gt;&lt;li&gt;Fix broken bones for the Disk Format:&lt;br /&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;prtvtoc /dev/rdsk/c0t0d0 | fmthard -s - /dev/rdsk/c0t1d0&lt;/span&gt;&lt;br /&gt;Then &lt;b&gt;fmthard&lt;/b&gt; should tell you something like:&lt;i&gt; "New volume table of the contents now in place"&lt;/i&gt;. If it didn't — you're out of luck and try to figure out why. :-)&lt;/li&gt;&lt;li&gt;Try to attach a drive to &lt;i&gt;rpool&lt;/i&gt;, but it may scream, something like this:&lt;br /&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;zpool attach rpool c0t0d0 c0t1d0&lt;br /&gt;invalid vdev specification&lt;br /&gt;use '-f' to override the following errors:&lt;br /&gt;/dev/dsk/c0t0d0 overlaps with /dev/dsk/c0t1d0&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;Well, so be it. Use '-f' option to force it:&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;zpool attach -f rpool c0t0d0 c0t1d0&lt;br /&gt;&lt;br /&gt;Please be sure to invoke installgrub(1M) to make 'c0t1d0' bootable.&lt;br /&gt;Make sure to wait until resilver is done before rebooting.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;Normally, you're done: &lt;b&gt;zpool status&lt;/b&gt; should show you a mirrored &lt;i&gt;rpool&lt;/i&gt;. But you're &lt;u&gt;almost&lt;/u&gt; there: still you need to install GRUB.&lt;/li&gt;&lt;li&gt;Install GRUB this way:&lt;br /&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;installgrub -m /boot/grub/stage1 /boot/grub/stage2 /dev/rdsk/c0&lt;span class="Apple-style-span"  style="color:#FF0000;"&gt;&lt;b&gt;t1&lt;/b&gt;&lt;/span&gt;d0&lt;/span&gt;&lt;/li&gt;&lt;/ol&gt;&lt;div&gt;Basically this is it, now you might try to boot from another drive. But wait your rpool resilvered though... :-)&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/602769459329747644-6763191634807909508?l=maryniuk.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://maryniuk.blogspot.com/feeds/6763191634807909508/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=602769459329747644&amp;postID=6763191634807909508' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/602769459329747644/posts/default/6763191634807909508'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/602769459329747644/posts/default/6763191634807909508'/><link rel='alternate' type='text/html' href='http://maryniuk.blogspot.com/2010/08/mirroring-zfs-rpool.html' title='Mirroring ZFS rpool'/><author><name>BM</name><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-602769459329747644.post-5723700861593520331</id><published>2010-06-02T11:55:00.002+09:00</published><updated>2010-06-02T12:02:28.262+09:00</updated><title type='text'>Fight with OpenNMS on OpenSolaris</title><content type='html'>I've tried to install OpenNMS on OpenSolaris from standalone installer (shipped in one single JAR file that you suppose to run). Everything fine (mostly) as long as you follow the instructions, but some ugly things needs to be mentioned:&lt;div&gt;&lt;ul&gt;&lt;li&gt;Your JRE is not enough. See, OpenNMS will ask you to install full blown JDK. What for — I have no idea. But that's why we hate most Java developers: they are unable to make cute small things in most cases.&lt;/li&gt;&lt;li&gt;Your PostgreSQL will say something rude to the installer and latter will be upset, asking you personal questions. So make sure, in prior to running the installer, you did the following:&lt;br /&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;postgres=# create user opennms with password 'opennms';&lt;br /&gt;&lt;br /&gt;postgres=# alter user opennms with password 'opennms';&lt;br /&gt;ALTER ROLE&lt;br /&gt;&lt;br /&gt;postgres=# create database opennms owner opennms;&lt;br /&gt;CREATE DATABASE&lt;br /&gt;&lt;br /&gt;postgres=# grant all privileges on database opennms to opennms;&lt;br /&gt;GRANT&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;div&gt;You changed your passwords for "opennms" user in DB and also you fixed your trust store where password it "changeit".&lt;/div&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;Everything else should work, as long as your ports are opened properly. In order to know if something wrong (and it usually is), try to see what's running and what's not by issuing a command:&lt;div&gt;&lt;br /&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;$OPEN_NMS/bin/opennms -v status&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;This will list all the processes and will show you the status.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/602769459329747644-5723700861593520331?l=maryniuk.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://maryniuk.blogspot.com/feeds/5723700861593520331/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=602769459329747644&amp;postID=5723700861593520331' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/602769459329747644/posts/default/5723700861593520331'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/602769459329747644/posts/default/5723700861593520331'/><link rel='alternate' type='text/html' href='http://maryniuk.blogspot.com/2010/06/fight-with-opennms-on-opensolaris.html' title='Fight with OpenNMS on OpenSolaris'/><author><name>BM</name><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-602769459329747644.post-2764202257145064365</id><published>2010-05-13T09:42:00.002+09:00</published><updated>2010-05-13T09:52:11.528+09:00</updated><title type='text'>Cloud vs Grid computing</title><content type='html'>Folks, enough!&lt;div&gt;There is no such thing as "versus" and it is not anything that you don't know yet. Grid computing is an engine on a chassis, where cloud computing is a complete car that you drive on. Hence, &lt;b&gt;grid computing&lt;/b&gt; is how data is distributed in heterogeneous fashion skipping geographical constraints, while &lt;b&gt;cloud computing&lt;/b&gt; is how data is accessed. So the complete product is all these things working together. End of story.&lt;div&gt;And, yes, it has been around for last 20 years: "&lt;a href="http://www.thenetworkisthecomputer.com/"&gt;The Network Is The Computer&lt;/a&gt;", if you still didn't noticed...&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/602769459329747644-2764202257145064365?l=maryniuk.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://maryniuk.blogspot.com/feeds/2764202257145064365/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=602769459329747644&amp;postID=2764202257145064365' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/602769459329747644/posts/default/2764202257145064365'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/602769459329747644/posts/default/2764202257145064365'/><link rel='alternate' type='text/html' href='http://maryniuk.blogspot.com/2010/05/cloud-vs-grid-computing.html' title='Cloud vs Grid computing'/><author><name>BM</name><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-602769459329747644.post-572497481203451893</id><published>2010-03-29T10:58:00.001+09:00</published><updated>2010-03-29T10:58:33.035+09:00</updated><title type='text'>DTrace. Quick start.</title><content type='html'>&lt;a href="http://www.opensolaris.org/os/community/edu/nocost_resources/DTRACEGSG.pdf"&gt;Here&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/602769459329747644-572497481203451893?l=maryniuk.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://maryniuk.blogspot.com/feeds/572497481203451893/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=602769459329747644&amp;postID=572497481203451893' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/602769459329747644/posts/default/572497481203451893'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/602769459329747644/posts/default/572497481203451893'/><link rel='alternate' type='text/html' href='http://maryniuk.blogspot.com/2010/03/dtrace-quick-start.html' title='DTrace. Quick start.'/><author><name>BM</name><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-602769459329747644.post-216589541511947672</id><published>2010-03-29T10:15:00.003+09:00</published><updated>2010-03-29T10:54:31.804+09:00</updated><title type='text'>OpenSolaris and ISO images</title><content type='html'>You have an OpenSolaris box and you also want to archive some things on DVD (well, just in case). Here the things everyone on Solaris should know (in case you don't):&lt;div&gt;&lt;ol&gt;&lt;li&gt;First, make an ISO out of the directory that allows full 31 character filenames, instead to truncate them 8.3 format which is compatible with MS-DOS. You also might consider &lt;b&gt;"joliet-long"&lt;/b&gt; option in order to allow Joliet filenames to be up to 103 Unicode characters. This breaks the Joliet specs, but appears to work. The following example is just a straight-forward:&lt;br /&gt;&lt;b&gt;mkisofs -J -l -o foobar.iso /path/to/the/folder&lt;/b&gt;&lt;/li&gt;&lt;li&gt;Second, you want to test and verify it. In Solaris, prior to mounting, you should make a block device from the file, first. In this case, &lt;b&gt;lofiadm&lt;/b&gt; is your friend in this way:&lt;br /&gt;&lt;b&gt;pfexec lofiadm -a foobar.iso&lt;/b&gt;&lt;br /&gt;Please note that you will need to escalate a privileges, because it will create a new device in &lt;b&gt;/dev/lofi&lt;/b&gt; directory. To know all the list, simply run &lt;b&gt;lofiadm&lt;/b&gt; as is. In this example it appears as &lt;b&gt;"/dev/lofi/1"&lt;/b&gt; device.&lt;/li&gt;&lt;li&gt;Now is a time to mount the device. Create some directory (e.g. &lt;b&gt;/tmp/foobar&lt;/b&gt;) and mount the device (not the .iso file):&lt;br /&gt;&lt;b&gt;pfexec mount -F hsfs /dev/lofi/1 /tmp/foobar/&lt;br /&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;Things looks OK? :)&lt;/span&gt;&lt;/b&gt;&lt;/li&gt;&lt;li&gt;Un-mount your filesystem and remove mount point to cleanup the mess behind you:&lt;br /&gt;&lt;b&gt;pfexec umount /tmp/foobar; rmdir /tmp/foobar&lt;/b&gt;&lt;/li&gt;&lt;li&gt;Remove block device (same mess):&lt;br /&gt;&lt;b&gt;pfexec lofiadm -d /dev/lofi/1&lt;/b&gt;&lt;/li&gt;&lt;li&gt;I usually don't burn CD/DVD's on a server remotely due to a number of issues with that, but if you like, you can do it. Normally, you want to use "&lt;b&gt;cdrw&lt;/b&gt;" on Solaris (&lt;b&gt;SUNWcdrw&lt;/b&gt; package in IPS, in case you haven't it installed) like this:&lt;br /&gt;&lt;b&gt;cdrw -C -i /path/to/your/foobar.iso&lt;/b&gt;&lt;br /&gt;This will also detect automatically you're burning DVD or CD, will check the size and so on.&lt;/li&gt;&lt;li&gt;Probably remove your .iso image as well. :-)&lt;/li&gt;&lt;/ol&gt;&lt;div&gt;That's was a Solaris way and is slightly different that on a typical Linux box.&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/602769459329747644-216589541511947672?l=maryniuk.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://maryniuk.blogspot.com/feeds/216589541511947672/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=602769459329747644&amp;postID=216589541511947672' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/602769459329747644/posts/default/216589541511947672'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/602769459329747644/posts/default/216589541511947672'/><link rel='alternate' type='text/html' href='http://maryniuk.blogspot.com/2010/03/opensolaris-and-iso-images.html' title='OpenSolaris and ISO images'/><author><name>BM</name><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-602769459329747644.post-8036060288341389359</id><published>2010-03-26T09:25:00.003+09:00</published><updated>2010-03-29T10:53:35.053+09:00</updated><title type='text'>Mail.app, show me a plain text!</title><content type='html'>I hate HTML messages. Especially, when you ask your mates &lt;b&gt;not&lt;/b&gt; to send HTML for simple text. They do. You won't shoot em, because you will have to do their job as well (this leads to lack of sleep). So there is other way: force Mail.app display a plain text. Normally, there is no checkbox in Preferences, but Mail.app still "eats" this preference in plist, like this:&lt;pre&gt;&amp;lt;key&gt;PreferPlainText&amp;lt;/key&gt;&lt;br /&gt;&amp;lt;true/&gt;&lt;br /&gt;&lt;/pre&gt;Cool. So we can do this:&lt;br /&gt;&lt;code&gt;defaults write com.apple.mail PreferPlainText -bool TRUE&lt;/code&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;Now restart Mail.app and you've done.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/602769459329747644-8036060288341389359?l=maryniuk.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://maryniuk.blogspot.com/feeds/8036060288341389359/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=602769459329747644&amp;postID=8036060288341389359' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/602769459329747644/posts/default/8036060288341389359'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/602769459329747644/posts/default/8036060288341389359'/><link rel='alternate' type='text/html' href='http://maryniuk.blogspot.com/2010/03/mailapp-show-me-plain-text.html' title='Mail.app, show me a plain text!'/><author><name>BM</name><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-602769459329747644.post-6914767607617528507</id><published>2010-02-01T10:52:00.003+09:00</published><updated>2010-02-01T10:59:30.510+09:00</updated><title type='text'>What 2010 is going to bring us?</title><content type='html'>&lt;div&gt;I am thinking: is 2010 is a year for epic failures? Project Kenai is going to be closed "for better user experience" which means "no more Kenai for the rest of us", only for those, who pays to the god Oracle goddamn money. And Jobs with his strange not-really-an-iPhone XXL, called iPad — next laptop will be 4x times bigger as well?&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;Now, recently new NetBeans 6.8 tutor came out — &lt;a href="http://netbeans.org/kb/docs/web/hibernate-webapp.html"&gt;http://netbeans.org/kb/docs/web/hibernate-webapp.html&lt;/a&gt; — with a multitude of the code, that results to a simple CRUD. Tendency is ridiculous again: now with embedding parts of query language right into your code. "Brilliant" design! — they welcomed things which they wanted go away from.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Wait, a president elections in my country now happening...&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/602769459329747644-6914767607617528507?l=maryniuk.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://maryniuk.blogspot.com/feeds/6914767607617528507/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=602769459329747644&amp;postID=6914767607617528507' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/602769459329747644/posts/default/6914767607617528507'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/602769459329747644/posts/default/6914767607617528507'/><link rel='alternate' type='text/html' href='http://maryniuk.blogspot.com/2010/02/what-2010-is-going-to-bring-us.html' title='What 2010 is going to bring us?'/><author><name>BM</name><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-602769459329747644.post-31027096215041821</id><published>2010-01-14T11:44:00.004+09:00</published><updated>2010-01-14T11:58:40.972+09:00</updated><title type='text'>Bye-bye, Postfix...</title><content type='html'>Times ago I've dumped Sendmail and replaced with a Postfix. Now, after a while, having a number of requirements that needs to be implemented with something more sophisticated, it is a time to replace Postfix for something better, easier and more flexible.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;My choice is now Apache James (&lt;a href="http://james.apache.org/"&gt;http://james.apache.org/&lt;/a&gt;).&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;div&gt;Tests went fine, things works as expected. Configuration is dull easy, like for those, who see an email server for the first time in their life. Apache James looks pretty good inside (source code), is extensible, has nice plugins and great API to make your own, if you like (that's exactly what I really need). Some folks reports it handles about 3K messages per a minute. I think, that's impressive number, but I don't need such anyways. :-)&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;The greatest thing of all this story: this particular mail server is a 100% pure Java.&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/602769459329747644-31027096215041821?l=maryniuk.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://maryniuk.blogspot.com/feeds/31027096215041821/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=602769459329747644&amp;postID=31027096215041821' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/602769459329747644/posts/default/31027096215041821'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/602769459329747644/posts/default/31027096215041821'/><link rel='alternate' type='text/html' href='http://maryniuk.blogspot.com/2010/01/bye-bye-postfix.html' title='Bye-bye, Postfix...'/><author><name>BM</name><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-602769459329747644.post-7079103361481401940</id><published>2010-01-13T23:29:00.002+09:00</published><updated>2010-01-13T23:35:37.259+09:00</updated><title type='text'>How to run background process in GWT</title><content type='html'>There is no such thing as "background process" in Google Web Toolkit client, because... it is a &lt;i&gt;client&lt;/i&gt; part. So you can not do threads, can not do daemons, since it supposed to be cross-compiled to JavaScript and run in a browser &lt;s&gt;pretty ugly way&lt;/s&gt;. However, you can repeatedly call the same function. In JavaScript it is timeout. But you want to avoid JSNI for this. Hence, do the following: use a &lt;code&gt;com.google.gwt.user.client.Timer&lt;/code&gt;. If you want call it periodically each 5 seconds, you can do something like this:&lt;br /&gt;&lt;pre&gt;private void updaterProcess() {&lt;br /&gt;  Timer timer = new Timer() {&lt;br /&gt;       @Override&lt;br /&gt;       public void run() {&lt;br /&gt;           // call stuff here&lt;br /&gt;       }&lt;br /&gt;  };&lt;br /&gt;&lt;br /&gt;  timer.scheduleRepeating(5000);&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/602769459329747644-7079103361481401940?l=maryniuk.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://maryniuk.blogspot.com/feeds/7079103361481401940/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=602769459329747644&amp;postID=7079103361481401940' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/602769459329747644/posts/default/7079103361481401940'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/602769459329747644/posts/default/7079103361481401940'/><link rel='alternate' type='text/html' href='http://maryniuk.blogspot.com/2010/01/how-to-run-background-process-in-gwt.html' title='How to run background process in GWT'/><author><name>BM</name><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-602769459329747644.post-826571795874034460</id><published>2010-01-13T09:36:00.002+09:00</published><updated>2010-01-13T09:38:36.184+09:00</updated><title type='text'>Shift happens...</title><content type='html'>&lt;p&gt;Google got pissed off:&lt;/p&gt;&lt;p&gt;&lt;i&gt;"We have decided we are no longer willing to continue censoring our results on Google.cn, and so over the next few weeks we will be discussing with the Chinese government the basis on which we could operate an unfiltered search engine within the law, if at all. We recognize that this may well mean having to shut down Google.cn, and potentially our offices in China."&lt;/i&gt;&lt;/p&gt;Complete story here: &lt;a href="http://googleblog.blogspot.com/2010/01/new-approach-to-china.html"&gt;http://googleblog.blogspot.com/2010/01/new-approach-to-china.html&lt;/a&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Well done, Google! Well done.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/602769459329747644-826571795874034460?l=maryniuk.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://maryniuk.blogspot.com/feeds/826571795874034460/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=602769459329747644&amp;postID=826571795874034460' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/602769459329747644/posts/default/826571795874034460'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/602769459329747644/posts/default/826571795874034460'/><link rel='alternate' type='text/html' href='http://maryniuk.blogspot.com/2010/01/shift-happens.html' title='Shift happens...'/><author><name>BM</name><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-602769459329747644.post-1258663710588683496</id><published>2010-01-12T11:57:00.004+09:00</published><updated>2010-01-12T12:30:17.476+09:00</updated><title type='text'>How things gets screwed up, when you're not thinking...</title><content type='html'>Short note how JNLP is screwed up in the GlassFish. &lt;div&gt;You like GlassFish, aren't ya? Now, consider, you want distribute your application over JNLP, as &lt;a href="http://www.uhradio.fm/web/guest/listen"&gt;I did on my radio website&lt;/a&gt;. It is an MP3 player with an ability send SMS messages, so far. Note, the website is in Ukrainian language, but you can simply click on that whacky image somewhere in the middle of the article. :-)&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Since it is Java Web Start, the way you put it to the GlassFish is using Enterprise Application, then create a client to it, and then put your stuff there, pack as an ".ear" and deploy. Sounds cool, right? Yes, sounds very-very cool. Note that since it is Java Web Start, you don't want to listen to your complaining users for like "WTF is this?!" etc., instead you want your application:&lt;/div&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;Be damn fast.&lt;/li&gt;&lt;li&gt;Be damn small.&lt;/li&gt;&lt;li&gt;Be damn quick.&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;However, not with Enterprise Application. Once you've packed your app as ".ear", it will suck up a sh*tload of &lt;b&gt;useless&lt;/b&gt; jar's, verify each by unpacking, checking etc. On an average user's Vista laptop, where all the resources went to antivirus and antimalware package, you do not want it happen ever. Some of my users complained they had to wait 8 (eight, EIGHT) minutes to load a very little tiny application, like that one. Take a look what you've got in your cache among other crap: Java EE jar! Application Server runtime! OMG!..&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Now... The obvious question is how to cure all this mess to make your 200K application start literally in a moment? Forget stupid Enterprise Application, once you go with JNLP. It is still good if you do EJB things (I do, so far so good). Never touch JEE for client part (make sure it is server thing in your app) and deploy as a simple  GUI that talks to your server via webservices (REST or SOAP is fine). Deploy it just manually, as a static data somewhere on the server.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;How deploy it manually on GlassFish. I assume you're using NetBeans? If no, you should. :-) So go to the properties of your Project, select "Web Start enabled", sign your jars with an SSL certificate and rebuild all the stuff. In your Project's "dist" folder you will find ready to go app (almost). Then edit codebase URL in order it point to your website over HTTP instead using file:// from local system. Tar/gzip all the dist/ folder with everything inside, scp to your server and unpack to the static folder of the GlassFish ($ROOT/domains/$DOMAIN/docroot) or, if it is GlassFish + Liferay, then look inside deployed Liferay package.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;That's it.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;P.S. Sun, I hope Oracle will kick your ass very hard to gently encourage you think properly and organize your technology the way it be once actually usable for everyone.&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/602769459329747644-1258663710588683496?l=maryniuk.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://maryniuk.blogspot.com/feeds/1258663710588683496/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=602769459329747644&amp;postID=1258663710588683496' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/602769459329747644/posts/default/1258663710588683496'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/602769459329747644/posts/default/1258663710588683496'/><link rel='alternate' type='text/html' href='http://maryniuk.blogspot.com/2010/01/how-things-gets-screwed-up-when-you-not.html' title='How things gets screwed up, when you&apos;re not thinking...'/><author><name>BM</name><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-602769459329747644.post-2006094845446723279</id><published>2009-12-28T13:39:00.004+09:00</published><updated>2009-12-28T13:47:09.426+09:00</updated><title type='text'>Liferay: include JSP into Velocity templates</title><content type='html'>&lt;p&gt;I am working on a Liferay's theme. Hooray, no more moronic pain in ass because of Velocity templates. Velocity templates now are mainstream when you're building a Liferay's theme and zero (yes, zero) documentation of how to use other template system. JSP that just works great, is easy to use, well integrated in your favorite IDE with all the documentation and autocomplete stuff, and you already know them well. So let's Liferay developers eat their Velocity, while we go tradition stuff.&lt;/p&gt;&lt;p&gt;Anyway, to add some JSP page into your theme, simply do like this:&lt;code&gt;&lt;br /&gt;&lt;/code&gt;&lt;/p&gt;&lt;p&gt;&lt;code&gt;$theme.include($themeServletContext, "/elements.jsp")&lt;/code&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;This example assumes that you have a file, called "elements.jsp" and it is located in the root of your theme (i.e. accessible from the URL like "http://yourhost/your-theme-name/elements.jsp").&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/602769459329747644-2006094845446723279?l=maryniuk.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://maryniuk.blogspot.com/feeds/2006094845446723279/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=602769459329747644&amp;postID=2006094845446723279' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/602769459329747644/posts/default/2006094845446723279'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/602769459329747644/posts/default/2006094845446723279'/><link rel='alternate' type='text/html' href='http://maryniuk.blogspot.com/2009/12/liferay-include-jsp-into-velocity.html' title='Liferay: include JSP into Velocity templates'/><author><name>BM</name><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-602769459329747644.post-8313465012628374926</id><published>2009-12-08T11:59:00.005+09:00</published><updated>2009-12-08T12:04:51.740+09:00</updated><title type='text'>JNLP and Stupid Parameters</title><content type='html'>To limit a time of headbanging solving weird JNLP descriptor behavior while passing properties to your app, remember that they are called "secure", i.e. starts from "jnlp." or "javaws." prefix. That means that &lt;code&gt;&amp;lt;property name="foo" value="bar"/&amp;gt;&lt;/code&gt; won't work, while &lt;code&gt;&amp;lt;property name="javaws.foo" value="bar"/&amp;gt;&lt;/code&gt; will.&lt;div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Read them with &lt;code&gt;System.getProperty("javaws.foo");&lt;/code&gt; — as usual.&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/602769459329747644-8313465012628374926?l=maryniuk.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://maryniuk.blogspot.com/feeds/8313465012628374926/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=602769459329747644&amp;postID=8313465012628374926' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/602769459329747644/posts/default/8313465012628374926'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/602769459329747644/posts/default/8313465012628374926'/><link rel='alternate' type='text/html' href='http://maryniuk.blogspot.com/2009/12/jnlp-and-stupid-parameters.html' title='JNLP and Stupid Parameters'/><author><name>BM</name><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-602769459329747644.post-6279329547425716051</id><published>2009-12-06T12:30:00.002+09:00</published><updated>2009-12-06T12:33:22.981+09:00</updated><title type='text'>Brain-dead laptop design by Dell</title><content type='html'>I mean... Just see it yourself &lt;a href="http://support.dell.com/support/edocs/systems/ins1525/en/SM/coinbatt.htm"&gt;how to change coin-cell battery&lt;/a&gt; in their 1525 Inspiron thing. Why would you do that? Because if the battery gone, your laptop won't boot at all (another &lt;s&gt;utterly stupid&lt;/s&gt; brilliant bit of design by greatest &lt;s&gt;Hell&lt;/s&gt; Dell).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/602769459329747644-6279329547425716051?l=maryniuk.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://maryniuk.blogspot.com/feeds/6279329547425716051/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=602769459329747644&amp;postID=6279329547425716051' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/602769459329747644/posts/default/6279329547425716051'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/602769459329747644/posts/default/6279329547425716051'/><link rel='alternate' type='text/html' href='http://maryniuk.blogspot.com/2009/12/brain-dead-laptop-design-by-dell.html' title='Brain-dead laptop design by Dell'/><author><name>BM</name><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-602769459329747644.post-5048454300184175029</id><published>2009-12-04T12:00:00.002+09:00</published><updated>2009-12-04T12:05:05.752+09:00</updated><title type='text'>Stop DHCP screwing up your Mac OS X hostname</title><content type='html'>I'v got Snow Leopard, but DHCP is screwing my hostname all the time to something very random. Another thing that &lt;code&gt;/etc/hostconfig&lt;/code&gt; goes away, while System Preferences in the Sharing tab does not sets hostname as hostname. Thus all older recipes are not really applicable anymore, once you're on Snow Leopard (I love changes). The cure is how to setup your hostname to, e.g. "Zeus" (that's mine one) like this (terminal and sudo privileges are required):&lt;pre&gt;sudo scutil --set ComputerName zeus&lt;br /&gt;sudo scutil --set HostName zeus&lt;br /&gt;sudo scutil --set LocalHostName zeus&lt;/pre&gt;That's it (no reboot really required).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/602769459329747644-5048454300184175029?l=maryniuk.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://maryniuk.blogspot.com/feeds/5048454300184175029/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=602769459329747644&amp;postID=5048454300184175029' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/602769459329747644/posts/default/5048454300184175029'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/602769459329747644/posts/default/5048454300184175029'/><link rel='alternate' type='text/html' href='http://maryniuk.blogspot.com/2009/12/stop-dhcp-screwing-up-your-mac-os-x.html' title='Stop DHCP screwing up your Mac OS X hostname'/><author><name>BM</name><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-602769459329747644.post-6636368927155673183</id><published>2009-11-30T14:19:00.003+09:00</published><updated>2009-11-30T14:21:06.510+09:00</updated><title type='text'>SmartGWT + Liferay</title><content type='html'>&lt;div&gt;One picture is better than 128K words:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_cl8InCNq5jI/SxNV8lZNCQI/AAAAAAAAAP0/eMe8ffgkKW4/s1600/Picture+1.png" style="text-decoration: none;"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 333px;" src="http://1.bp.blogspot.com/_cl8InCNq5jI/SxNV8lZNCQI/AAAAAAAAAP0/eMe8ffgkKW4/s400/Picture+1.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5409762076720433410" /&gt;&lt;/a&gt;&lt;div&gt;Yep, it works as expected. How to do this? Same as you would do any GWT-based portlets, just use SmartGWT as widget set transparently.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/602769459329747644-6636368927155673183?l=maryniuk.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://maryniuk.blogspot.com/feeds/6636368927155673183/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=602769459329747644&amp;postID=6636368927155673183' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/602769459329747644/posts/default/6636368927155673183'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/602769459329747644/posts/default/6636368927155673183'/><link rel='alternate' type='text/html' href='http://maryniuk.blogspot.com/2009/11/smartgwt-liferay.html' title='SmartGWT + Liferay'/><author><name>BM</name><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><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_cl8InCNq5jI/SxNV8lZNCQI/AAAAAAAAAP0/eMe8ffgkKW4/s72-c/Picture+1.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-602769459329747644.post-1710032564042534245</id><published>2009-11-21T20:55:00.002+09:00</published><updated>2009-11-21T20:58:02.827+09:00</updated><title type='text'>Java, Image Processing and OSX</title><content type='html'>A little annoying thing happens, when you do image processing in Java, using Apple OS X: although your code supposed to run in background, you still notice some additional process, that triggers Quartz and something appears on a Dock.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;To cure this, you need to run AWT head-less. To do this, add a system property in your main() right before anything else:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;code&gt;System.setProperty("java.awt.headless", "true");&lt;/code&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/602769459329747644-1710032564042534245?l=maryniuk.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://maryniuk.blogspot.com/feeds/1710032564042534245/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=602769459329747644&amp;postID=1710032564042534245' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/602769459329747644/posts/default/1710032564042534245'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/602769459329747644/posts/default/1710032564042534245'/><link rel='alternate' type='text/html' href='http://maryniuk.blogspot.com/2009/11/java-image-processing-and-osx.html' title='Java, Image Processing and OSX'/><author><name>BM</name><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-602769459329747644.post-3126346231576692571</id><published>2009-11-18T13:59:00.001+09:00</published><updated>2009-11-18T13:59:41.561+09:00</updated><title type='text'>Linux User Books</title><content type='html'>&lt;div style="text-align: left; padding: 3px;"&gt;&lt;a href="http://www.flickr.com/photos/marblebutterfly/4112101264/" title="photo sharing"&gt;&lt;img src="http://farm3.static.flickr.com/2754/4112101264_7f7e2f3924.jpg" style="border: solid 2px #000000;" alt="" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="font-size: 0.8em; margin-top: 0px;"&gt;&lt;a href="http://www.flickr.com/photos/marblebutterfly/4112101264/"&gt;Linux User Books&lt;/a&gt;, originally uploaded by &lt;a href="http://www.flickr.com/people/marblebutterfly/"&gt;I.S.B.M.&lt;/a&gt;.&lt;/span&gt;&lt;/div&gt;&lt;p&gt;Japanese books about Linux. Found at Open Source summit at Tokyo.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/602769459329747644-3126346231576692571?l=maryniuk.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://maryniuk.blogspot.com/feeds/3126346231576692571/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=602769459329747644&amp;postID=3126346231576692571' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/602769459329747644/posts/default/3126346231576692571'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/602769459329747644/posts/default/3126346231576692571'/><link rel='alternate' type='text/html' href='http://maryniuk.blogspot.com/2009/11/linux-user-books.html' title='Linux User Books'/><author><name>BM</name><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><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://farm3.static.flickr.com/2754/4112101264_7f7e2f3924_t.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-602769459329747644.post-8395156253822791569</id><published>2009-10-09T21:31:00.003+09:00</published><updated>2009-10-09T21:49:18.902+09:00</updated><title type='text'>java.io.IOException: Not enough space</title><content type='html'>Seen that?&lt;br /&gt;&lt;pre&gt;Caused by: java.io.IOException: error=12, Not enough space&lt;br /&gt;  at java.lang.UNIXProcess.forkAndExec(Native Method)&lt;br /&gt;  at java.lang.UNIXProcess.&lt;init&gt;(UNIXProcess.java:53)&lt;br /&gt;  at java.lang.ProcessImpl.start(ProcessImpl.java:65)&lt;br /&gt;  at java.lang.ProcessBuilder.start(ProcessBuilder.java:452)&lt;br /&gt;&lt;/init&gt;&lt;/pre&gt;&lt;br /&gt;Yes, I hate this too. First of all, that's not what you think. It means not enough swap, because your Java suddenly wants lots of GB of memory. When Java launches fork, it starts a new VM as a fork from current process. Thus for a short period between fork and exec, there is two instances of your stuff. That's temporary though. Exactly at this moment your system cries for a lack of swap.&lt;br /&gt;&lt;br /&gt;Now, how to cure this on Solaris as long as you're using old UFS. Simply add some space as a file to a swap:&lt;br /&gt;&lt;pre&gt;mkfile 500m /opt/var/my.swap&lt;br /&gt;swap -a /opt/var/my.swap&lt;br /&gt;&lt;/pre&gt;Uhm, OK. That's old way... But that won't work on ZFS as this file system can not use files for a swap. :-) To use this with ZFS, make another ZFS filesystem in your rpool. That's how I am using in my OpenSolaris global zone:&lt;br /&gt;&lt;pre&gt;zfs create -V 2G rpool/additionalswap&lt;br /&gt;swap -a /dev/zvol/dsk/rpool/additionalswap&lt;br /&gt;&lt;/pre&gt;To see the result, issue &lt;code&gt;swap -l&lt;/code&gt; command and it will show you that new FS has been added to your swap, something like this:&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;swapfile                dev    swaplo  blocks   free&lt;br /&gt;/dev/zvol/dsk/rpool/swap           182,1  8  2095096  1823456&lt;br /&gt;/dev/zvol/dsk/rpool/additionalswap 182,3  8  4194288  4194288&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Now you're safe. :-)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/602769459329747644-8395156253822791569?l=maryniuk.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://maryniuk.blogspot.com/feeds/8395156253822791569/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=602769459329747644&amp;postID=8395156253822791569' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/602769459329747644/posts/default/8395156253822791569'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/602769459329747644/posts/default/8395156253822791569'/><link rel='alternate' type='text/html' href='http://maryniuk.blogspot.com/2009/10/javaioioexception-not-enough-space.html' title='java.io.IOException: Not enough space'/><author><name>BM</name><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-602769459329747644.post-821335761080477988</id><published>2009-10-09T16:26:00.001+09:00</published><updated>2009-10-09T16:27:08.612+09:00</updated><title type='text'>GlassFish + OpenDS = No Pain</title><content type='html'>You want LDAP and appserver work with it. But you also remember all the voodoo bloody massacre you've experienced, once you've tried to setup OpenLDAP and now looking to shoot its developers. Calm down, go an elegant&amp;nbsp;and&amp;nbsp;easy way instead.&lt;br /&gt;&lt;br /&gt;My config is pretty much simple OpenDS on an OpenSolaris zone. Nothing special for OpenSolaris zone — just setup it as usual and configure OpenDS as you would do on a global zone. That's my scenario:&lt;br /&gt;&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Login to your OpenSolaris global zone and install OpenDS from IPS:&lt;br /&gt;&lt;br /&gt;&lt;code&gt;pfexec pkg install opends&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Now, login to your zone where OpenDS is supposed to run and add an user, who will use it. In my case it is "opends" user (and a same group) and I've decided to put it separately, where entire OpenDS instance is:&lt;br /&gt;&lt;br /&gt;&lt;code&gt;pfexec useradd -md /opt/opends/home opends&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;I've also decided that OpenDS instance is running in &lt;code&gt;/opt/opends/instance&lt;/code&gt; folder. So run configuration against "opends" user and that folder like this:&lt;br /&gt;&lt;br /&gt;&lt;code&gt;pfexec /usr/opends/configure \&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; --instancePath /opt/opends/instance \&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; --userName opends \&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; --groupName opends&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Great. Now is a time to finish it. :-) Login as "opends" user and run "setup" command. Please note, it will try run Swing GUI for you, so either SSH into your box with X11 forwarding or use command line mode ("--cli" option) and follow these few simple instructions (setup DN, admin password, port etc):&lt;br /&gt;&lt;br /&gt;&lt;code&gt;/usr/opends/setup --cli&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;There is no fifth step — your LDAP is up and running. Need more info about details and such? Here:&amp;nbsp;&lt;a href="https://docs.opends.org/wiki"&gt;https://docs.opends.org/wiki&lt;/a&gt; — depending on your version...&lt;/li&gt;&lt;/ol&gt;&lt;br /&gt;OK, we have LDAP done in four steps. Now we want GlassFish use it as realm. That's also elegant:&lt;br /&gt;&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Login into your GlassFish admin console (by default on 4848 port).&lt;/li&gt;&lt;li&gt;Go to Configuration → Security → Realms and add one just straight-forward as it is:&lt;/li&gt;&lt;ol&gt;&lt;li&gt;Set &lt;b&gt;name&lt;/b&gt; to "OpenDS", let's say.&lt;/li&gt;&lt;li&gt;Use &lt;b&gt;class&lt;/b&gt;: com.sun.enterprise.security.auth.realm.LDAPRealm&lt;/li&gt;&lt;li&gt;Set &lt;b&gt;JAAS&lt;/b&gt; context as "ldapRealm"&lt;/li&gt;&lt;li&gt;Set &lt;b&gt;Directory&lt;/b&gt; to "ldap://your.host:port". If you're using SSL to make things thrice slower while no much change to security itself (because it is an internal network), then use scheme "ldaps://...". :-)&lt;/li&gt;&lt;li&gt;Use your &lt;b&gt;base DN&lt;/b&gt; that you've put to your LDAP, e.g.: dc=your,dc=host,dc=com or something like this.&lt;/li&gt;&lt;li&gt;And then use your group whenever it is: ou=groups,dc=your,dc=host,dc=com etc.&lt;/li&gt;&lt;/ol&gt;&lt;li&gt;There is no third step.&lt;/li&gt;&lt;/ol&gt;&lt;br /&gt;Easy, is it? :-)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/602769459329747644-821335761080477988?l=maryniuk.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://maryniuk.blogspot.com/feeds/821335761080477988/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=602769459329747644&amp;postID=821335761080477988' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/602769459329747644/posts/default/821335761080477988'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/602769459329747644/posts/default/821335761080477988'/><link rel='alternate' type='text/html' href='http://maryniuk.blogspot.com/2009/10/glassfish-opends-no-pain.html' title='GlassFish + OpenDS = No Pain'/><author><name>BM</name><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-602769459329747644.post-3428358027902405189</id><published>2009-10-01T13:06:00.000+09:00</published><updated>2009-10-01T13:06:32.711+09:00</updated><title type='text'>IT Market Nowadays</title><content type='html'>&lt;span style="font-family: Arial, Helvetica, 'Nimbus Sans L', sans-serif; font-size: 10px; line-height: 12px;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;h3 style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: inherit; font-size: 13px; font-style: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; outline-color: initial; outline-style: initial; outline-width: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;Here I just thought how job specification would look like, if IT guys would need to drive a regular city bus. :-)&lt;/span&gt;&lt;/h3&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;h3 style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: inherit; font-size: 13px; font-style: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; outline-color: initial; outline-style: initial; outline-width: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;Job Specifications&lt;/h3&gt;&lt;h3 style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: inherit; font-size: 13px; font-style: inherit; font-weight: normal; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; outline-color: initial; outline-style: initial; outline-width: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;City bus driver from 9:30AM to 3:30PM.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Job Type&lt;/b&gt;&lt;/h3&gt;&lt;h3 style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: inherit; font-size: 13px; font-style: inherit; font-weight: normal; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; outline-color: initial; outline-style: initial; outline-width: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;contract, part time.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Salary&lt;/b&gt;&lt;/h3&gt;&lt;h3 style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: inherit; font-size: 13px; font-style: inherit; font-weight: normal; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; outline-color: initial; outline-style: initial; outline-width: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;Negotiable, but no more than $1000 per month.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Requirements&lt;/b&gt;&lt;/h3&gt;&lt;h3 style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: inherit; font-size: 13px; font-style: inherit; font-weight: normal; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; outline-color: initial; outline-style: initial; outline-width: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;Bicycle skydiving, motorcycle, car and truck licenses, repair and maintenance knowledge, tramway and trolley-bus at least 5 years experience. Additionally, ultra-high demolition excavators such as Caterpillar 385D operation, haulage and earthmoving equipment on off-road vehicles experience, military armored bulldozer D9, rocket launcher truck and tank Abrams driving at least 1 year experience.&lt;br /&gt;&lt;br /&gt;Successful candidate also should have knowledge flying F16, PhD in engine manufacturing and engineering, license for shooting magnum .44 gun and must have at least 5 (five) jumps with a parachute.&lt;br /&gt;&lt;br /&gt;Having 500 hours flight as a crew captain with Boeing 747 is a plus. Being an astronaut team leader with at least month in a space is a plus. Knowing some specific details about Apollo 13 and landing on a Moon is a plus, but not that much necessary, however it might affect salary negotiations.&lt;br /&gt;&lt;br /&gt;If you are interested, we are waiting you for an interview. You will have 10 interviews, 4 tests and 2 brainbench in a gym.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Other notes&lt;/b&gt;&lt;/h3&gt;&lt;h3 style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: inherit; font-size: 13px; font-style: inherit; font-weight: normal; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; outline-color: initial; outline-style: initial; outline-width: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;You must not be married.&lt;/h3&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/602769459329747644-3428358027902405189?l=maryniuk.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://maryniuk.blogspot.com/feeds/3428358027902405189/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=602769459329747644&amp;postID=3428358027902405189' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/602769459329747644/posts/default/3428358027902405189'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/602769459329747644/posts/default/3428358027902405189'/><link rel='alternate' type='text/html' href='http://maryniuk.blogspot.com/2009/10/it-market-nowadays.html' title='IT Market Nowadays'/><author><name>BM</name><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-602769459329747644.post-163843131538930409</id><published>2009-09-23T16:07:00.009+09:00</published><updated>2009-09-25T02:17:42.185+09:00</updated><title type='text'>Google Web Toolkit + JSR 168 portlets</title><content type='html'>&lt;div&gt;I want GWT. No, not JSF or other stuff like Struts (uugghh!) with JavaScript libraries, where you also have to care about sort of XML configs, JSP etc etc etc. Forget it. Use GWT. &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;But Enterprise wants portal with portlets (and me too). So how to make a "standalone" portlet in a nice .war file, while using GWT and such for this? I use GlassFish server and NetBeans IDE, so my sharing here towards these components only. Here is how I managed this to work:&lt;/div&gt;&lt;div&gt;&lt;ol&gt;&lt;li&gt;Get &lt;a href="https://portlet-container.dev.java.net/"&gt;Portlet Container Driver&lt;/a&gt; from OpenPortal for a start and follow the instructions to let it get working on your GlassFish (simply run configurator jar and point directory and domain).&lt;/li&gt;&lt;li&gt;Install &lt;a href="http://portalpack.netbeans.org/"&gt;Portal Pack&lt;/a&gt; in your NetBeans IDE.&lt;/li&gt;&lt;/ol&gt;&lt;/div&gt;&lt;div&gt;Now, how to create a portlet with GWT:&lt;/div&gt;&lt;div&gt;&lt;ol&gt;&lt;li&gt;Create a new project, called "Java Web Application" in your NetBeans with GWT and PortalPack support enabled. Nothing else is needed for our example.&lt;/li&gt;&lt;li&gt;Let's say, the name of our project is "GWTPortlet" and let's say it is in "net.maryniuk.portlet" package.&lt;/li&gt;&lt;li&gt;NetBeans will generate for you a skeleton for your portlet. It is all what you actually need from non-GWT part.&lt;/li&gt;&lt;li&gt;Create GWT client, that should be in "net.maryniuk.portlet.client". It will add some JavaScript and meta tags to "welcomeGWT.html" file, which you can find in "Web Pages" folder. Get these two tags (javascript and meta) and put them into "GWTPortlet_view.jsp" file, that you can find in "Web Pages/WEB-INF/jsp" folder.&lt;/li&gt;&lt;li&gt;Change path in JavaScript tag the way it find generated JavaScript by GWT. For example, if your tag looks like: &amp;lt;script src="foo.js"&amp;gt;, then change it to &amp;lt;script src="/GWTPortlet/foo.js"&amp;gt;.&lt;/li&gt;&lt;li&gt;Add a &amp;lt;div id="foo"&gt;&amp;lt;/div&gt; tag with an ID (in our example "foo") somewhere inside that JSP page.&lt;/li&gt;&lt;li&gt;In your GWT entry point, change RootPanel.get()... to RootPanel.get("foo")... so then GWT can lookup an element with an ID "foo" and place itself there.&lt;/li&gt;&lt;li&gt;Build your project. You're done — subdirectory "dist" contains your .war file with GWT portlet!&lt;/li&gt;&lt;li&gt;Now just deploy it inside your Portlet Driver and see the result.&lt;/li&gt;&lt;/ol&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;Here how it looks like for me:&lt;div&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_cl8InCNq5jI/Sroy71vANmI/AAAAAAAAAPk/NStoBC8pcd0/s1600-h/Picture-4.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 371px;" src="http://4.bp.blogspot.com/_cl8InCNq5jI/Sroy71vANmI/AAAAAAAAAPk/NStoBC8pcd0/s400/Picture-4.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5384672308092745314" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;Later on, after you sure your portlet works as expected, you can deploy it on Liferay or Sun Webspace:&lt;div&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_cl8InCNq5jI/SrupMlYxcMI/AAAAAAAAAPs/zrM7ph380hY/s1600-h/Picture-4.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 399px; height: 400px;" src="http://1.bp.blogspot.com/_cl8InCNq5jI/SrupMlYxcMI/AAAAAAAAAPs/zrM7ph380hY/s400/Picture-4.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5385083813111099586" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/602769459329747644-163843131538930409?l=maryniuk.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://maryniuk.blogspot.com/feeds/163843131538930409/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=602769459329747644&amp;postID=163843131538930409' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/602769459329747644/posts/default/163843131538930409'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/602769459329747644/posts/default/163843131538930409'/><link rel='alternate' type='text/html' href='http://maryniuk.blogspot.com/2009/09/google-web-toolkit-jsr-168-portlets.html' title='Google Web Toolkit + JSR 168 portlets'/><author><name>BM</name><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><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_cl8InCNq5jI/Sroy71vANmI/AAAAAAAAAPk/NStoBC8pcd0/s72-c/Picture-4.png' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-602769459329747644.post-3611401368153160877</id><published>2009-09-20T13:06:00.004+09:00</published><updated>2009-10-05T12:17:46.245+09:00</updated><title type='text'>ORM sucks. Hibernate sucks even more.</title><content type='html'>For years, I already have my own opinion about ORM. The opinion is built on a quite a number of various trials, different practices, multiple measures and just a real life. Thus it sounds this way: &lt;b&gt;ORM sucks big time and should not exist&lt;/b&gt;. Why? Shortly, because of noise ratio is tremendously high, while good factor is miserably low.&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Being with a time, I would expect them get better. But what happens actually? Take a look at one of them: &lt;a href="https://www.hibernate.org/"&gt;Hibernate&lt;/a&gt; — a &lt;s&gt;powerful, high-performance&lt;/s&gt; Java persistence mechanism wannabe. I will tell you honestly: it sucks so much that any decent C++ developer would just hate Java as in whole. This thing just emphasizes whole Java "heaviness" and "bulkiness" that normally scares all tech people who are not just "an average Joe". &lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Hey, just look at all its glory: &lt;a href="https://www.hibernate.org/116.html"&gt;https://www.hibernate.org/116.html&lt;/a&gt;! Especially take a spot at the moment, when it &lt;a href="https://www.hibernate.org/116.html#A16"&gt;keeps recreating collection&lt;/a&gt;. Now, how you gonna apply &lt;a href="http://www.javapractices.com/topic/TopicAction.do?Id=15"&gt;"Defensive Copy"&lt;/a&gt;, once you have immutable objects? Think about of it. Or, take a look how even a silly &lt;a href="https://www.hibernate.org/116.html#A9"&gt;CRUD application would suffer&lt;/a&gt;, once you've got "not-very-recent" object from the session! And the workaround for this? — right, get the object &lt;i&gt;again&lt;/i&gt; just to make sure it is recent version...&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;What I am doing? I am using plain JDBC drivers with a little wrapper that does all the hassle and dirty jobs for me behind the scenes, leaving no XML to me at all. Footprint of the thing is very small and I've got it running on an embedded stuff as well as on a GlassFish cluster.&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;P.S. No, you're not gonna change any corporate RDBMS from one to another, like you would change your socks. But stuff, like &lt;a href="http://www.h2database.com/html/jaqu.html"&gt;JaQu&lt;/a&gt; would help a lot, once support all required dialects.&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/602769459329747644-3611401368153160877?l=maryniuk.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://maryniuk.blogspot.com/feeds/3611401368153160877/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=602769459329747644&amp;postID=3611401368153160877' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/602769459329747644/posts/default/3611401368153160877'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/602769459329747644/posts/default/3611401368153160877'/><link rel='alternate' type='text/html' href='http://maryniuk.blogspot.com/2009/09/orm-sucks-hibernate-sucks-even-more.html' title='ORM sucks. Hibernate sucks even more.'/><author><name>BM</name><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-602769459329747644.post-4192666993177991653</id><published>2009-09-11T16:07:00.005+09:00</published><updated>2009-09-11T16:31:07.156+09:00</updated><title type='text'>Upload file in SmartGWT</title><content type='html'>Upload a file to a server from your browser is not a big deal. But how to do it, if you have:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;SmartGWT (a Google Web Toolkit with a SmartClient library)&lt;/li&gt;&lt;li&gt;It is LGPL, so no proprietary extension on a place&lt;/li&gt;&lt;li&gt;You don't want to use ExtGWT just only for one single upload function and thus risk your project won't really work on older browsers that are still might be in use.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;You want it nicely done at background with a clean callback, of course. :-)&lt;/li&gt;&lt;/ul&gt;Here how you do it:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;In &lt;span style="font-family:courier new;"&gt;com.smartgwt.client.widgets.form.DynamicForm&lt;/span&gt;, set it to multipart by passing it Encoding.MULTIPART.&lt;/li&gt;&lt;li&gt;Create an internal iframe, using &lt;span style="font-family:courier new;"&gt;com.google.gwt.user.client.ui.NamedFrame&lt;/span&gt; and call it, let's say "foo" (sure no better name came into my head now, LOL). Make it 1x1 pixel width and set visibility to false. It is not actually a thing user needs to see.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Now use &lt;span style="font-family:courier new;"&gt;setTarget("foo") &lt;/span&gt;method to let your DynamicForm use that it as a target.&lt;/li&gt;&lt;li&gt;Also use &lt;span style="font-family:courier new;"&gt;setAction(url-to-your-processing-servlet)&lt;/span&gt; to let DynamicForm actually send stuff there. You can do it like ("upload" — is your servlet accessible):&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;.setAction(GWT.getModuleBaseURL() + "/upload");&lt;/span&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Now, add mouse click handler to your IButton and use &lt;span style="font-family:courier new;"&gt;submitForm()&lt;/span&gt; method out of DynamicForm instance object. It will send the form and that iframe we created earlier will receive a result. This way we achieve upload in background.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Add a native JavaScript method, that will be seen normally in the loaded page, so parent windows can simply call it. That's exactly what do we need, when upload has been finished. More how to add JavaScript native methods, refer to &lt;a href="http://code.google.com/docreader/#p=google-web-toolkit-doc-1-5&amp;amp;s=google-web-toolkit-doc-1-5&amp;amp;t=DevGuideJavaScriptNativeInterface"&gt;GWT documentation&lt;/a&gt; about JSNI.&lt;br /&gt;&lt;/li&gt;&lt;/ol&gt;Now, time to write our Servlet for file upload. Great Java that comes with power station to your computer, yet has zero API to process multipart forms. This is just frustrating. But here is a cure: &lt;a href="http://commons.apache.org/fileupload/"&gt;Apache File Upload&lt;/a&gt; library. Read the API how to use it. But generally, you simply iterate over fields and once you've got a filename out of the stream, you have the file. In this way you can send lots of files at once.&lt;br /&gt;&lt;br /&gt;Your servlet should call back our method, we've defined in step #6. You simply set content type to text/html, write some simple html and a JavaScript that would call parent on window load — this way your iframe will call your client back. You may pass anything you want and respond anything. In my case it just closes upload dialog and says job done.&lt;br /&gt;&lt;br /&gt;That's it. Implementation is up to you — use imagination... :-)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/602769459329747644-4192666993177991653?l=maryniuk.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://maryniuk.blogspot.com/feeds/4192666993177991653/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=602769459329747644&amp;postID=4192666993177991653' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/602769459329747644/posts/default/4192666993177991653'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/602769459329747644/posts/default/4192666993177991653'/><link rel='alternate' type='text/html' href='http://maryniuk.blogspot.com/2009/09/upload-file-in-smartgwt.html' title='Upload file in SmartGWT'/><author><name>BM</name><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-602769459329747644.post-1233009426607585531</id><published>2009-09-06T14:46:00.008+09:00</published><updated>2009-10-08T20:24:38.973+09:00</updated><title type='text'>Bye-bye, Apache. I won't miss you.</title><content type='html'>You've got an Enterprise Application  Server — a GlassFish. At some cases it outperforms Apache, at some cases it is just equal. Yet, you out of luck to use it fully, just because you need running it on a port 80/443. You do not want to run GlassFish as a root user. On the other hand, running Apache or nginx (or whatever else) in front of it as a proxy is an ugly hack and unnecessary component in a front.&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Interested to get a cure for this? OpenSolaris is your answer. :-)&lt;br /&gt;&lt;br /&gt;Here what you need to do:&lt;br /&gt;&lt;/div&gt;&lt;div&gt;1. Wipe away your FreeBSD or Linux because these are impotent to do so (also good riddance anyway because at least for starter, Solaris Zones and ZFS and D-Trace just rules).&lt;br /&gt;&lt;/div&gt;&lt;div&gt;2. Install OpenSolaris (if you still want Linux — well, fsck your ext3 and just skip this blog entry).&lt;br /&gt;&lt;/div&gt;&lt;div&gt;3. Add a user, let's say "appserv", and disable login.&lt;br /&gt;&lt;/div&gt;&lt;div&gt;4. Modify its permissions this way:&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-family: 'courier new', courier, mono; font-size: small;"&gt;usermod -K defaultpriv=basic,net_privaddr appserv&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Now "appserv" user has permissions to run GlassFish on a 80/443 port, while be completely non-root.&amp;nbsp;That's all, folks!&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;One more thing: Apache on your Linux usually runs from root anyway, then just drops privileges. It is much more secure, if your GlassFish runs within Solaris Zone and not as root from the very beginning.&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/602769459329747644-1233009426607585531?l=maryniuk.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://maryniuk.blogspot.com/feeds/1233009426607585531/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=602769459329747644&amp;postID=1233009426607585531' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/602769459329747644/posts/default/1233009426607585531'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/602769459329747644/posts/default/1233009426607585531'/><link rel='alternate' type='text/html' href='http://maryniuk.blogspot.com/2009/09/bye-bye-apache.html' title='Bye-bye, Apache. I won&apos;t miss you.'/><author><name>BM</name><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-602769459329747644.post-596010819108987989</id><published>2009-07-03T18:01:00.004+09:00</published><updated>2009-07-03T18:13:42.321+09:00</updated><title type='text'>Hadoop on OpenSolaris Zone</title><content type='html'>&lt;div&gt;Of course there is no point to run a cluster on a single machine. :-) But there &lt;i&gt;is&lt;/i&gt; a point to run a Hadoop node within a Solaris container (zone) in order to isolate it from other stuff. To make it run, nothing really special:&lt;/div&gt;&lt;div&gt;&lt;ol&gt;&lt;li&gt;Setup a Solaris zone as you always do.&lt;/li&gt;&lt;li&gt;Make sure that storage for Hadoop data is on LOFS and pointing to a real device.&lt;/li&gt;&lt;li&gt;Redirect &lt;code&gt;hadoop.tmp.dir&lt;/code&gt; to your storage.&lt;/li&gt;&lt;/ol&gt;As for version 0.20, having redirected temporary directory elsewhere, it will also drag everything else, including data. Thus better do at least the following layout:&lt;/div&gt;&lt;ol&gt;&lt;li&gt;&lt;code&gt;hadoop.tmp.dir&lt;/code&gt; → &lt;code&gt;$STORAGE/tmp&lt;/code&gt;&lt;/li&gt;&lt;li&gt;&lt;code&gt;dfs.name.dir&lt;/code&gt; → &lt;code&gt;$STORAGE/name&lt;/code&gt;&lt;/li&gt;&lt;li&gt;&lt;code&gt;dfs.data.dir&lt;/code&gt; → &lt;code&gt;$STORAGE/data&lt;/code&gt;&lt;/li&gt;&lt;/ol&gt;That's it, you've got the picture.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/602769459329747644-596010819108987989?l=maryniuk.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://maryniuk.blogspot.com/feeds/596010819108987989/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=602769459329747644&amp;postID=596010819108987989' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/602769459329747644/posts/default/596010819108987989'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/602769459329747644/posts/default/596010819108987989'/><link rel='alternate' type='text/html' href='http://maryniuk.blogspot.com/2009/07/hadoop-on-opensolaris-zone.html' title='Hadoop on OpenSolaris Zone'/><author><name>BM</name><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-602769459329747644.post-8071377110215829977</id><published>2009-05-31T17:32:00.003+09:00</published><updated>2009-05-31T17:52:17.819+09:00</updated><title type='text'>Japan OpenSolaris User Group</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_cl8InCNq5jI/SiJD8H59P4I/AAAAAAAAAPc/KxWnVBZKTPI/s1600-h/DSC_0372.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 266px;" src="http://2.bp.blogspot.com/_cl8InCNq5jI/SiJD8H59P4I/AAAAAAAAAPc/KxWnVBZKTPI/s400/DSC_0372.jpg" border="0" alt="" id="BLOGGER_PHOTO_ID_5341906808208179074" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;div&gt;Just return from Japan OpenSolaris user group. Excellent photos are on &lt;a href="http://blogs.sun.com/jimgris/entry/japan_opensolaris_user_group_053009"&gt;Jim's blog&lt;/a&gt;. I regret that I did not take my camera and did not make any photos, except of a few artifacts that I've got there: a bunch of very cute metallic stickers "Powered by OpenSolaris" to replace "Powered by Windows Vista" with "Powered by OpenSolaris". :-(&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Very nice people, doing good stuff and, in fact, are not using Linux or Windows on their desktops presenting OpenSolaris, &lt;a href="http://maryniuk.blogspot.com/2008/03/asiabsdcon-2008.html"&gt;unlike FreeBSD guys&lt;/a&gt; that happens very typically to them. :-) There was few Macs and one M$ Windows, but still all the stuff was shown from VirtualBox (even Mac guys use VirtualBox, instead of Parallels or VmWare).&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Next month &lt;a href="http://www.kamiogi.net/Kamiogi/Who.html"&gt;Mike Sullivan&lt;/a&gt; will probably talk about ZFS and NAS.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/602769459329747644-8071377110215829977?l=maryniuk.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://maryniuk.blogspot.com/feeds/8071377110215829977/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=602769459329747644&amp;postID=8071377110215829977' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/602769459329747644/posts/default/8071377110215829977'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/602769459329747644/posts/default/8071377110215829977'/><link rel='alternate' type='text/html' href='http://maryniuk.blogspot.com/2009/05/japan-opensolaris-user-group.html' title='Japan OpenSolaris User Group'/><author><name>BM</name><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><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_cl8InCNq5jI/SiJD8H59P4I/AAAAAAAAAPc/KxWnVBZKTPI/s72-c/DSC_0372.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-602769459329747644.post-5727716689153937783</id><published>2009-05-25T13:02:00.003+09:00</published><updated>2009-05-25T23:00:42.921+09:00</updated><title type='text'>Getting User Credentials in GlassFish</title><content type='html'>Well, LDAP is great, we all know that. Others might consider other realms to authenticate-and-then-authorize. But one thing really bothered me when it is not very great in case I still need user's credentials to pass them elsewhere after realm has been passed. E.g. I want to execute some business objects for that specific user etc. More over, there is no standard JSR for it &lt;i&gt;(and this just pisses me off)&lt;/i&gt;. Of course, these credentials are unable to find in a regular servlet HTTP request, because we are not using basic authentication, like a putting credentials into an URL. So, here is a deal: an user logs into your system and after that your code wants to use the same credentials to get things from elsewhere, but you do not want (or can not) run SSO for some reasons — hence you have no service ticket to some certain enterprise segment. &lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;How to get user's credentials then, without messing around with custom realms? In a GlassFish, the recipe is as follows:&lt;/div&gt;&lt;div&gt;&lt;ol&gt;&lt;li&gt;From GlassFish &lt;code&gt;lib/&lt;/code&gt; directory add &lt;code&gt;appserv-rt.jar&lt;/code&gt; library to your class path in order to get all &lt;code&gt;com.sun.enterprise.*&lt;/code&gt; become available in your application.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Get a subject:&lt;br /&gt;&lt;pre&gt;import com.sun.enterprise.security.auth.login.PasswordCredential;&lt;br /&gt;import javax.security.auth.Subject;&lt;br /&gt;import javax.security.jacc.PolicyContext;&lt;br /&gt;import javax.security.jacc.PolicyContextException;&lt;br /&gt;&lt;br /&gt;...&lt;br /&gt;&lt;br /&gt;Subject subject = null;&lt;br /&gt;try {&lt;br /&gt;  subject = (Subject) PolicyContext&lt;br /&gt;    .getContext("javax.security.auth.Subject.container");&lt;br /&gt;} catch (PolicyContextException ex) {&lt;br /&gt;...&lt;br /&gt;}&lt;/pre&gt;&lt;/li&gt;&lt;li&gt;From the subject, get an iterator from private credentials object:&lt;br /&gt;&lt;pre&gt;Iterator iter = subject.getPrivateCredentials().iterator();&lt;br /&gt;while (iter.hasNext()) {&lt;br /&gt; PasswordCredential credential = (PasswordCredential) iter.next();&lt;br /&gt;...&lt;br /&gt;}&lt;/pre&gt;&lt;/li&gt;&lt;li&gt;Now you can get PasswordCredential object that contains: a) realm name as &lt;code&gt;getRealm()&lt;/code&gt;, b) user ID as &lt;code&gt;getUser()&lt;/code&gt;, c) password as &lt;code&gt;getPassword()&lt;/code&gt;.&lt;/li&gt;&lt;/ol&gt;&lt;div&gt;That's it.&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/602769459329747644-5727716689153937783?l=maryniuk.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://maryniuk.blogspot.com/feeds/5727716689153937783/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=602769459329747644&amp;postID=5727716689153937783' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/602769459329747644/posts/default/5727716689153937783'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/602769459329747644/posts/default/5727716689153937783'/><link rel='alternate' type='text/html' href='http://maryniuk.blogspot.com/2009/05/getting-user-credentials-in-glassfish.html' title='Getting User Credentials in GlassFish'/><author><name>BM</name><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-602769459329747644.post-3838030092269463990</id><published>2009-05-18T18:23:00.001+09:00</published><updated>2009-05-18T18:23:28.734+09:00</updated><title type='text'>Sun Studio</title><content type='html'>&lt;div style="text-align: left; padding: 3px;"&gt;&lt;a href="http://www.flickr.com/photos/trochej/3539555488/" title="photo sharing"&gt;&lt;img src="http://farm3.static.flickr.com/2461/3539555488_6147fcd651.jpg" style="border: solid 2px #000000;" alt="" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="font-size: 0.8em; margin-top: 0px;"&gt;&lt;a href="http://www.flickr.com/photos/trochej/3539555488/"&gt;20090515046&lt;/a&gt;, originally uploaded by &lt;a href="http://www.flickr.com/people/trochej/"&gt;trochej&lt;/a&gt;.&lt;/span&gt;&lt;/div&gt;&lt;p&gt;Here how Sun Studio looks like... :-)&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/602769459329747644-3838030092269463990?l=maryniuk.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://maryniuk.blogspot.com/feeds/3838030092269463990/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=602769459329747644&amp;postID=3838030092269463990' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/602769459329747644/posts/default/3838030092269463990'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/602769459329747644/posts/default/3838030092269463990'/><link rel='alternate' type='text/html' href='http://maryniuk.blogspot.com/2009/05/sun-studio.html' title='Sun Studio'/><author><name>BM</name><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><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://farm3.static.flickr.com/2461/3539555488_6147fcd651_t.jpg' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-602769459329747644.post-5977401713435626770</id><published>2009-05-09T16:54:00.013+09:00</published><updated>2009-05-10T16:24:59.182+09:00</updated><title type='text'>Cheap, Fast, Right: everything at once.</title><content type='html'>&lt;div style="text-align: center;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_cl8InCNq5jI/SgaBPoIDP3I/AAAAAAAAAPU/ry4k7DXvLzI/s1600-h/osol-backup.png"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 160px;" src="http://2.bp.blogspot.com/_cl8InCNq5jI/SgaBPoIDP3I/AAAAAAAAAPU/ry4k7DXvLzI/s400/osol-backup.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5334092914136137586" /&gt;&lt;/a&gt;&lt;/div&gt;Recently I thought where/how to get a file-server, other services possible and a backup solution for my home that:&lt;div&gt;&lt;ul&gt;&lt;li&gt;Is &lt;b&gt;low voltage&lt;/b&gt;. So I don't need to pay 24" LED monitor price per a &lt;s&gt;week&lt;/s&gt; year.&lt;/li&gt;&lt;li&gt;Is &lt;b&gt;silent&lt;/b&gt;. So I will not get sick of the regular noise and won't suffer from sea sickness. :)&lt;/li&gt;&lt;li&gt;Is &lt;b&gt;scalable&lt;/b&gt;. I want to add more disks in a future and/or replace them.&lt;/li&gt;&lt;li&gt;Is &lt;b&gt;cheap&lt;/b&gt;. Thus I can afford more, once I need.&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;On the market there is available quite interesting piece of hardware: Asus EeePC Box. Engadget.com &lt;a href="http://www.engadget.com/tag/eeebox/"&gt;tagged it&lt;/a&gt; and you can find lots of explanation about the hardware itself. Shortly, it is Intel Atom N270 (1.6 GHz, FSB 533) processor, has DDRII 1 GB RAM (upgradable up to 2 GB), 2.5" size hard drive 80 GB capacity, 945GSE + ICH7M Chipset, on-board Intel GMA 950, 1600 x 1200 maximum graphic resolution. For network it has built-in 10/100/1000 Mbps LAN and 802.11n WLAN. It has 4 USB slots, one Mini SD slot and for sound Azalia ALC888 Audio Chip is used.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;Installing an Operating System&lt;/b&gt;&lt;/div&gt;&lt;div&gt;Here in Tokyo, it comes with a &lt;a href="http://www.splashtop.com/"&gt;Splashtop Linux&lt;/a&gt; which is kind of cool: you can use Skype and a Web right after two seconds later power has been turned on. And also an instance of a Japanese Windows XP &lt;a href="http://www.mydigitallife.info/2008/10/08/new-asus-eee-box-pcs-loaded-with-virus/"&gt;with a worm inside&lt;/a&gt; right out of the box. :-)&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;In my case, as an OS I want to use OpenSolaris. Since machine has none of CD/DVD drive and I have none of USB one, installation was a bit tricky. Here is a sequence:&lt;/div&gt;&lt;div&gt;&lt;ol&gt;&lt;li&gt;Get at least &lt;a href="http://www.genunix.org/distributions/indiana/osol-0906-111a-x86.usb"&gt;OpenSolaris 111a build&lt;/a&gt; as USB image and make a bootable USB memory stick. If you are Solaris user, install &lt;i&gt;SUNWdistro-const&lt;/i&gt; package and use &lt;i&gt;usbcopy&lt;/i&gt; command to let it take your USB image and put into USB memory stick with a GRUB. Please note that filesystem should be ZFS. Due to a bug, UFS won't boot with memory sticks and you will get only a GRUB prompt. &lt;/li&gt;&lt;li&gt;In BIOS, find your USB storage (appears as a hard drive) and select it as a primary drive, so in this way it will appear in a boot sequence menu. Select it and boot Solaris from USB drive, choosing VESA driver, otherwise monitor will be black due to frame buffer compression won't work with Intel card this time.&lt;/li&gt;&lt;li&gt;In BIOS also turn off Splashtop Linux thingy, remove boot pause, remove logo on boot, enable quick boot, select appropriate bus speed etc. IOW, turn the machine to a regular PC without these bells and whistles.&lt;/li&gt;&lt;li&gt;Process installation, blowing away everything on a disk (it is NTFS with Windows XP, originally).&lt;/li&gt;&lt;li&gt;Remove USB memory stick, change boot sequence back to HDD and start your newly installed OpenSolaris.&lt;/li&gt;&lt;/ol&gt;&lt;/div&gt;&lt;div&gt;That's basically it. Everything should work fine, including sound card. &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;Using static IP&lt;/b&gt;&lt;/div&gt;&lt;div&gt;OK, reader might be a n00b. :-) Here I shortly describe how it is done:&lt;/div&gt;&lt;div&gt;&lt;ol&gt;&lt;li&gt;Add a nameserver(s) to &lt;i&gt;/etc/resolv.conf&lt;/i&gt;.&lt;/li&gt;&lt;li&gt;Switch system to use DNS instead by renaming &lt;i&gt;/etc/nsswitch.dns&lt;/i&gt; as &lt;i&gt;/etc/nsswitch.conf&lt;/i&gt;.&lt;/li&gt;&lt;li&gt;Restart DNS service:&lt;br /&gt;&lt;pre&gt;svcadm restart svc:/network/dns/client:default&lt;/pre&gt;&lt;/li&gt;&lt;li&gt;Use static IP by editing &lt;i&gt;/etc/nwam/llp&lt;/i&gt;. For example, in my case, a physical device is "rge0" and was configured as "rge0 dhcp". I wanted internal IP to be 192.168.1.2, so I changed this to: "rge0 static 192.168.1.2/24".&lt;/li&gt;&lt;li&gt;Restart network service:&lt;br /&gt;&lt;pre&gt;svcadm restart svc:/network/physical:nwam&lt;/pre&gt;&lt;/li&gt;&lt;li&gt;pfexec svcadm enable svc:/network/physical:default&lt;/li&gt;&lt;li&gt;Add default router: &lt;pre&gt;pfexec vi /etc/defaultrouter&lt;/pre&gt;&lt;/li&gt;&lt;li&gt;...and use it: &lt;pre&gt;pfexec svcadm restart network/routing-setup&lt;/pre&gt;&lt;/li&gt;&lt;/ol&gt;&lt;div&gt;List of all your network devices: &lt;code&gt;ifconfig -a.&lt;/code&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;Compile MPlayer (for fun) :-)&lt;/b&gt;&lt;/div&gt;&lt;div&gt;I mean, why not? The thing has excellent sound card, why not use it? This one bit tricky (hello to Linux community), but nothing really special. Shortly:&lt;/div&gt;&lt;div&gt;&lt;ol&gt;&lt;li&gt;Install the following packages: &lt;i&gt;SUNWgcc&lt;/i&gt;, &lt;i&gt;SUNWgmake&lt;/i&gt;, &lt;i&gt;IPSgawk&lt;/i&gt; (from a Blastwave) and &lt;i&gt;SUNWxorg-headers&lt;/i&gt;.&lt;/li&gt;&lt;li&gt;&lt;pre&gt;export PATH=/usr/gnu/bin:/opt/csw/gnu:/usr/bin:/usr/X11/bin:/usr/sbin:/sbin&lt;/pre&gt;&lt;/li&gt;&lt;li&gt;Get an MPlayer source: http://www8.mplayerhq.hu/MPlayer/releases/MPlayer-1.0rc2.tar.bz2&lt;/li&gt;&lt;li&gt;Extract, configure, compile and install (use &lt;code&gt;gmake&lt;/code&gt; instead of &lt;code&gt;make&lt;/code&gt;):&lt;pre&gt;tar jxf MPlayer-1.0rc2.tar.bz2&lt;br /&gt;cd MPlayer-1.0rc2&lt;br /&gt;./configure --prefix=/opt/mplayer/&lt;br /&gt;gmake&lt;br /&gt;gmake install&lt;/pre&gt;&lt;/li&gt;&lt;/ol&gt;&lt;div&gt;...and of course, you will miserably fail on first time gmake run, because Solaris's linker won't peacefully eat -rdynamic parameter, that is used to resolve symbols in the executable itself, when using dynamic loading. Well, simply delete this parameter from &lt;i&gt;configure.mak&lt;/i&gt; file and link it successfully.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Yeeeah! :-)&lt;/div&gt;&lt;div&gt;P.S. Do not bother me and yourself why there is no decent package for MPlayer. I don't know, maybe a licence issues. If you cry about a package, then provide one.&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;Add Blastwave package repository (optionally)&lt;/b&gt;&lt;/div&gt;&lt;div&gt;I've added it, but don't use that much, since it blows my hard drive with duplicate packages. Just some packages only:&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;pre&gt;pfexec pkg set-authority -O http://blastwave.network.com:10000/ Blastwave&lt;/pre&gt;Some packages are good and MPlayer is also there. But if you willing installing from the packages, you will end up with a quite a big amount of duplicate software that you're already have on a disk.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;Ready to go!&lt;/b&gt;&lt;/div&gt;&lt;div&gt;Now use your imagination. For example, I have few zones created on it for various services, like file server, backup, monitoring my home network that has more than 10 assets online and a jukebox.&lt;/div&gt;&lt;div&gt;Surprisingly, OpenSolaris on Atom CPU 1.6GHz with only 1GB RAM does all these tasks very well. And not just that: during these operations, it also happily plays a movie full-screen without any troubles. &lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/602769459329747644-5977401713435626770?l=maryniuk.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://maryniuk.blogspot.com/feeds/5977401713435626770/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=602769459329747644&amp;postID=5977401713435626770' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/602769459329747644/posts/default/5977401713435626770'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/602769459329747644/posts/default/5977401713435626770'/><link rel='alternate' type='text/html' href='http://maryniuk.blogspot.com/2009/05/cheap-fast-right-everything-at-once.html' title='Cheap, Fast, Right: everything at once.'/><author><name>BM</name><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><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_cl8InCNq5jI/SgaBPoIDP3I/AAAAAAAAAPU/ry4k7DXvLzI/s72-c/osol-backup.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-602769459329747644.post-6762669686488109241</id><published>2009-05-08T23:25:00.011+09:00</published><updated>2009-05-09T05:40:40.709+09:00</updated><title type='text'>Asus Eee PC Box B202</title><content type='html'>I've got my Asus Eee PC Box B202 for my mini project at home. Price here in Japan cost for me &lt;a href="http://finance.yahoo.com/currency-converter"&gt;¥39,800&lt;/a&gt; + Bluetooth keyboard and a mouse. There are many reviews about the box, so I just wanted to share things that nobody usually talking. :-)&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Packaging entirely sucks. It is ripped off from Apple packaging, but as usually it happens, copied wrong. They copied even matt paper and tried to put as minimum as possible graphics on it. Still, they screw it up, having lack of feeling of any kind of style, poor cutting quality etc. However, the price tells everything: they're done it by an axe, I understand... that's fine. But the most funny is a size. I took photos of the thing, so everybody can consider it themselves how "green" it is and how "well" it fits to the whole global warming question, wasting space of transportation, fuel for airplanes etc. Also it is damn heavy, in compare to MacBook package. I have no idea how it rendered to be that heavy, but I was quite surprised, dragging the thing to the home.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;The Eee PC Box is a small Intel Atom-based machine with 1GB of RAM, 80GB 2.5" hard drive disk (16GB SSD would be much better here, by the way) and 1.6GHz CPU Intel Atom processor. CPU itself is not any fast. The beauty of the machine is a size and low voltage. It is very quiet (I mean silent), great for all this file-server thing in the small office or home. This machine is also really great for a disk-less thin client terminal. The size is like a regular O'Reilly book:&lt;/div&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_cl8InCNq5jI/SgRCOtnuTvI/AAAAAAAAAOc/uoj3E2wrOJA/s1600-h/DSC_0336.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 266px;" src="http://3.bp.blogspot.com/_cl8InCNq5jI/SgRCOtnuTvI/AAAAAAAAAOc/uoj3E2wrOJA/s400/DSC_0336.jpg" border="0" alt="" id="BLOGGER_PHOTO_ID_5333460679245319922" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;It is even smaller than my aluminum MacBook:&lt;/div&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_cl8InCNq5jI/SgRCXjYRVnI/AAAAAAAAAOk/ooK2K8WddHI/s1600-h/DSC_0338.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 266px;" src="http://2.bp.blogspot.com/_cl8InCNq5jI/SgRCXjYRVnI/AAAAAAAAAOk/ooK2K8WddHI/s400/DSC_0338.jpg" border="0" alt="" id="BLOGGER_PHOTO_ID_5333460831114974834" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Now funny things begin. I still have a package box from my MacBook. I've got this in a shop exactly like this, as you might see in a photo (left). And that's how &lt;i&gt;internal&lt;/i&gt; package of the Eee Box looks like (it is also thicker):&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_cl8InCNq5jI/SgRCa53C0BI/AAAAAAAAAOs/2krSkrcnq2E/s1600-h/DSC_0340.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 266px;" src="http://4.bp.blogspot.com/_cl8InCNq5jI/SgRCa53C0BI/AAAAAAAAAOs/2krSkrcnq2E/s400/DSC_0340.jpg" border="0" alt="" id="BLOGGER_PHOTO_ID_5333460888689233938" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;You think it is finished? No way. They put this box in another, external box that  looks like this (why?? why??). The box is so big that you additionally can put a bottle of wine, pack of donuts and a small color printer:&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_cl8InCNq5jI/SgRCfaslzbI/AAAAAAAAAO0/8eBcAyG83eE/s1600-h/DSC_0342.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 266px;" src="http://1.bp.blogspot.com/_cl8InCNq5jI/SgRCfaslzbI/AAAAAAAAAO0/8eBcAyG83eE/s400/DSC_0342.jpg" border="0" alt="" id="BLOGGER_PHOTO_ID_5333460966223236530" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;And I also got a set of input devices: a Bluetooth keyboard and a mouse. Both are... well... cheap, you know... and I am not gonna use it anyway, since I have lots of keyboards at home. But... but... look at that size of package!! It is literally twice wider than the machine itself ("We don't know about Times New Loman existence for Engrish part for mice combos"):&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_cl8InCNq5jI/SgRCkRnwoKI/AAAAAAAAAO8/JHFEAn35cTU/s1600-h/DSC_0344.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 266px;" src="http://4.bp.blogspot.com/_cl8InCNq5jI/SgRCkRnwoKI/AAAAAAAAAO8/JHFEAn35cTU/s400/DSC_0344.jpg" border="0" alt="" id="BLOGGER_PHOTO_ID_5333461049686401186" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;...and, surprisingly, thrice thicker than the machine itself! Would I expect there five keyboards and a dozen of mouses?&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_cl8InCNq5jI/SgRCn9v3PhI/AAAAAAAAAPE/CKIAusI3k4g/s1600-h/DSC_0349.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 266px;" src="http://1.bp.blogspot.com/_cl8InCNq5jI/SgRCn9v3PhI/AAAAAAAAAPE/CKIAusI3k4g/s400/DSC_0349.jpg" border="0" alt="" id="BLOGGER_PHOTO_ID_5333461113071156754" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Of course, by an old-good tradition, I took these stickers on a flush cistern of my toilet and now the natural excrement disposal place is labeled to be designed for a Windows XP. :-)&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_cl8InCNq5jI/SgRCrh0hZwI/AAAAAAAAAPM/-feGz_6ZVU8/s1600-h/DSC_0350.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 266px;" src="http://2.bp.blogspot.com/_cl8InCNq5jI/SgRCrh0hZwI/AAAAAAAAAPM/-feGz_6ZVU8/s400/DSC_0350.jpg" border="0" alt="" id="BLOGGER_PHOTO_ID_5333461174293980930" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;No way, the Eee PC box is gonna run OpenSolaris instead.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/602769459329747644-6762669686488109241?l=maryniuk.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://maryniuk.blogspot.com/feeds/6762669686488109241/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=602769459329747644&amp;postID=6762669686488109241' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/602769459329747644/posts/default/6762669686488109241'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/602769459329747644/posts/default/6762669686488109241'/><link rel='alternate' type='text/html' href='http://maryniuk.blogspot.com/2009/05/asus-eee-pc-box-b202.html' title='Asus Eee PC Box B202'/><author><name>BM</name><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><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_cl8InCNq5jI/SgRCOtnuTvI/AAAAAAAAAOc/uoj3E2wrOJA/s72-c/DSC_0336.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-602769459329747644.post-2504248076614863295</id><published>2009-05-05T17:27:00.002+09:00</published><updated>2009-05-05T18:35:31.841+09:00</updated><title type='text'>OpenSolaris zone: "One more thing..."</title><content type='html'>Here with OpenSolaris you do not want to create &lt;span style="font-weight: bold;"&gt;native&lt;/span&gt; zone, but &lt;span style="font-weight: bold;"&gt;ipkg&lt;/span&gt; one, using a standard &lt;code&gt;/zones/foobar&lt;/code&gt; dataset. And, &lt;s&gt;of course&lt;/s&gt;, it will not work for you, complaining about zone path dataset:&lt;br /&gt;&lt;pre&gt;ERROR: Error: no zonepath dataset.&lt;/pre&gt;That's because /zones must be a ZFS. To fix a bones, remove and add it to the ZFS pool instead:&lt;br /&gt;&lt;pre&gt;rmdir /zones&lt;br /&gt;zfs create -o mountpoint=/zones rpool/zones&lt;/pre&gt;Then proceed with a regular zone setup, using &lt;code&gt;zonecfg&lt;/code&gt;. Zones also works now perfectly with VirtualBox, version 2.2.2.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/602769459329747644-2504248076614863295?l=maryniuk.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://maryniuk.blogspot.com/feeds/2504248076614863295/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=602769459329747644&amp;postID=2504248076614863295' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/602769459329747644/posts/default/2504248076614863295'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/602769459329747644/posts/default/2504248076614863295'/><link rel='alternate' type='text/html' href='http://maryniuk.blogspot.com/2009/05/opensolaris-zone-one-more-thing.html' title='OpenSolaris zone: &quot;One more thing...&quot;'/><author><name>BM</name><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-602769459329747644.post-7001928528857684340</id><published>2009-04-14T13:30:00.001+09:00</published><updated>2009-04-14T13:32:10.446+09:00</updated><title type='text'></title><content type='html'>&lt;p&gt;Just a stupid trick to make your WiFi faster on OSX: set &lt;code&gt;delayed_ack&lt;/code&gt; to zero (default is 3).&lt;/p&gt;&lt;br /&gt;&lt;pre&gt;sudo sysctl -w net.inet.tcp.delayed_ack=&lt;b&gt;0&lt;/b&gt;&lt;/pre&gt;&lt;br /&gt;&lt;p&gt;Nasty, but works. :-)&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/602769459329747644-7001928528857684340?l=maryniuk.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://maryniuk.blogspot.com/feeds/7001928528857684340/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=602769459329747644&amp;postID=7001928528857684340' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/602769459329747644/posts/default/7001928528857684340'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/602769459329747644/posts/default/7001928528857684340'/><link rel='alternate' type='text/html' href='http://maryniuk.blogspot.com/2009/04/just-stupid-trick-to-make-your-wifi.html' title=''/><author><name>BM</name><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-602769459329747644.post-8710712962509570438</id><published>2009-03-23T00:07:00.004+09:00</published><updated>2009-03-23T00:09:34.691+09:00</updated><title type='text'>PirateBay and a trial</title><content type='html'>&lt;blockquote&gt;the prosecution plead for banning the essence of the internets, the links.&lt;/blockquote&gt;&lt;br /&gt;&lt;p&gt;To ban the links? What does prosecutions smoke? Must be a really good sh!t...&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/602769459329747644-8710712962509570438?l=maryniuk.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://maryniuk.blogspot.com/feeds/8710712962509570438/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=602769459329747644&amp;postID=8710712962509570438' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/602769459329747644/posts/default/8710712962509570438'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/602769459329747644/posts/default/8710712962509570438'/><link rel='alternate' type='text/html' href='http://maryniuk.blogspot.com/2009/03/piratebay-and-trial.html' title='PirateBay and a trial'/><author><name>BM</name><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-602769459329747644.post-3273875691989452117</id><published>2009-03-19T00:50:00.001+09:00</published><updated>2009-03-19T00:51:33.757+09:00</updated><title type='text'>Moon: Get a Facts!</title><content type='html'>Here how it was actually:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_cl8InCNq5jI/ScEYZr8g6vI/AAAAAAAAAOU/h8yC-vqLU04/s1600-h/fg.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 400px;" src="http://2.bp.blogspot.com/_cl8InCNq5jI/ScEYZr8g6vI/AAAAAAAAAOU/h8yC-vqLU04/s400/fg.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5314555864846232306" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/602769459329747644-3273875691989452117?l=maryniuk.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://maryniuk.blogspot.com/feeds/3273875691989452117/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=602769459329747644&amp;postID=3273875691989452117' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/602769459329747644/posts/default/3273875691989452117'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/602769459329747644/posts/default/3273875691989452117'/><link rel='alternate' type='text/html' href='http://maryniuk.blogspot.com/2009/03/moon-get-facts.html' title='Moon: Get a Facts!'/><author><name>BM</name><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><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_cl8InCNq5jI/ScEYZr8g6vI/AAAAAAAAAOU/h8yC-vqLU04/s72-c/fg.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-602769459329747644.post-6386981586946327287</id><published>2009-03-16T22:24:00.003+09:00</published><updated>2009-03-16T22:31:39.855+09:00</updated><title type='text'>Mercurial and Terminal.app on Mac OS X</title><content type='html'>&lt;p&gt;Get a latest Mercurial from &lt;a href="http://mercurial.berkwood.com/"&gt;here&lt;/a&gt; and... bang!&lt;/p&gt;&lt;br /&gt;&lt;pre&gt;Traceback (most recent call last):&lt;br /&gt; File "/usr/local/bin/hg", line 25, in &lt;module&gt;&lt;br /&gt;   mercurial.util.set_binary(fp)&lt;br /&gt; File "/Library/Python/2.5/site-packages/mercurial/demandimport.py", line 75, in __getattribute__&lt;br /&gt;   self._load()&lt;br /&gt; File "/Library/Python/2.5/site-packages/mercurial/demandimport.py", line 47, in _load&lt;br /&gt;   mod = _origimport(head, globals, locals)&lt;br /&gt; File "/Library/Python/2.5/site-packages/mercurial/util.py", line 93, in &lt;module&gt;&lt;br /&gt;   _encoding = locale.getlocale()[1]&lt;br /&gt; File "/System/Library/Frameworks/Python.framework/Versions/2.5/lib/python2.5/locale.py", line 460, in getlocale&lt;br /&gt;   return _parse_localename(localename)&lt;br /&gt; File "/System/Library/Frameworks/Python.framework/Versions/2.5/lib/python2.5/locale.py", line 373, in _parse_localename&lt;br /&gt;   raise ValueError, 'unknown locale: %s' % localename&lt;br /&gt;ValueError: unknown locale: UTF-8&lt;/module&gt;&lt;/module&gt;&lt;/pre&gt;&lt;br /&gt;&lt;p&gt;Yes, because it is Terminal.app, it is not XTerm. Apple had a years to add Spotlight, but had zero time to fix a bug, that is for years around: bad locale handling. To fix the bones, add into &lt;code&gt;.profile&lt;/code&gt; this explicitly:&lt;/p&gt;&lt;br /&gt;&lt;pre&gt;export LC_ALL=en_US.UTF-8&lt;br /&gt;export LANG=en_US.UTF-8&lt;/pre&gt;&lt;br /&gt;&lt;p&gt;...or foo_BAR about your other locale.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/602769459329747644-6386981586946327287?l=maryniuk.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://maryniuk.blogspot.com/feeds/6386981586946327287/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=602769459329747644&amp;postID=6386981586946327287' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/602769459329747644/posts/default/6386981586946327287'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/602769459329747644/posts/default/6386981586946327287'/><link rel='alternate' type='text/html' href='http://maryniuk.blogspot.com/2009/03/mercurial-and-terminalapp-on-mac-os-x.html' title='Mercurial and Terminal.app on Mac OS X'/><author><name>BM</name><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-602769459329747644.post-8429899635686216518</id><published>2009-03-16T10:09:00.003+09:00</published><updated>2009-03-16T10:15:26.378+09:00</updated><title type='text'>Ad on my GMail</title><content type='html'>&lt;div&gt;Today I've checked my e-mail on GMail account and found this ad:&lt;/div&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_cl8InCNq5jI/Sb2m69FGcgI/AAAAAAAAAOM/sfybb_ooHVk/s1600-h/Picture+1.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 23px;" src="http://1.bp.blogspot.com/_cl8InCNq5jI/Sb2m69FGcgI/AAAAAAAAAOM/sfybb_ooHVk/s400/Picture+1.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5313586667125633538" /&gt;&lt;/a&gt;&lt;div&gt;Great. Soon there probably will be something like a "Crack Adobe Photoshop just for 90 days joining our adult site!" or just a &lt;a href="http://en.wikipedia.org/wiki/Penis_enlargement"&gt;trivial classic&lt;/a&gt;? Well, Google is just for indexing any kind of content, after all...&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/602769459329747644-8429899635686216518?l=maryniuk.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://maryniuk.blogspot.com/feeds/8429899635686216518/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=602769459329747644&amp;postID=8429899635686216518' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/602769459329747644/posts/default/8429899635686216518'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/602769459329747644/posts/default/8429899635686216518'/><link rel='alternate' type='text/html' href='http://maryniuk.blogspot.com/2009/03/ad-on-my-gmail.html' title='Ad on my GMail'/><author><name>BM</name><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><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_cl8InCNq5jI/Sb2m69FGcgI/AAAAAAAAAOM/sfybb_ooHVk/s72-c/Picture+1.png' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-602769459329747644.post-5318898328790164048</id><published>2009-03-13T11:22:00.013+09:00</published><updated>2009-04-22T21:50:27.518+09:00</updated><title type='text'>Google Chrome or "We will get it right in a third version"</title><content type='html'>&lt;div&gt;&lt;b&gt;Chrome versus Browsers&lt;/b&gt;&lt;/div&gt;Testing some software on MS Windows that is installed on my VirtualBox (of course), I've remembered about Google Chrome existence. I had no much chance to take a look at it earlier, but now I just wanted to see how this, supposed to be GUI-breathtaking innovative browser ever, fits in a real life. Obviously, Firefox is not any GUI-fanciness opponent as it's user interface always wants to be much better and, recently, rendering engine needs to be much better as well. Therefore I tried to see what I would love more: Chrome for my Mac (does not exists yet, but lots of dust and rumors around) or stick to Safari 4?&lt;div&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;Global Menu&lt;/b&gt;&lt;/div&gt;&lt;div&gt;Apple has menu all the time at top of the screen, so you just "forgetting" about it and never pay attention much, thus can focus on your application. Now both, MS and Google, recognized that embedding menu bar into an application is ugly and annoying, after all. MS removed menu in IE8, making users puzzled finding all the settings. By the way, after long bloody battle with Gnome guys that mostly does not realizes it, finally happy Ubuntu users &lt;a href="http://code.google.com/p/gnome2-globalmenu/"&gt;may try unstable alpha version in Gnome Tweaks&lt;/a&gt; but it does not works yet right for everything. KDE guys, however, successfully copied this feature from Apple long time ago.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;So, no menus in Chrome too. At all. If you had installed Chrome: forget about menus. Wait, they are, but hidden...&lt;/div&gt;&lt;div&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;Categories. No, sections. Well, never mind...&lt;/b&gt;&lt;/div&gt;&lt;div&gt;Google made it simpler (they think so): in a Chrome they put all the menu under one button, with an "Document" icon. Wait... under two buttons — other for settings and preferences.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;So to open new tab, you click "Documents" and... and find there is no such item to create new tab! Ah, it is under icon with a monkey wrench, that represents "Settings". Oops, these actually are not really just a settings, but a pile of "everything else" that does not fits elsewhere. &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;I guess, third button is probably still coming in a next version, once Chrome will get some more features? Which icon it will be?.. A hammer?..&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-weight: bold; "&gt;Where are my windows?&lt;/span&gt;&lt;/div&gt;&lt;div&gt;You have tabs for your websites. However, you have also a separate windows. You make a window and fill it in with a similar content. For example, I have 10 tabs in my window that are related to C++ documentation. Another window is for my &lt;s&gt;pr0n&lt;/s&gt; social networking. Yet another is to something else, etc. Now, how I can easily switch between them by one click, selecting exactly what I need, without looking at WinXP's dock?&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-weight: bold; "&gt;Maybe useful preferences&lt;/span&gt;&lt;/div&gt;&lt;div&gt;Let's see the preferences. It is common that in MS Windows you should mostly use mouse to find them, no short-cut available. But it is fair enough: click wrench and here they are. So what we see there? One picture is worth 128K words (I have Firefox, Opera and MSIE installed already):&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_cl8InCNq5jI/Sbn2qfccvII/AAAAAAAAANM/X0b8qREAgf0/s1600-h/Picture+1.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 91px;" src="http://1.bp.blogspot.com/_cl8InCNq5jI/Sbn2qfccvII/AAAAAAAAANM/X0b8qREAgf0/s400/Picture+1.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5312548445315972226" /&gt;&lt;/a&gt;WTF? Who the hell asked you to make a Chrome as a &lt;i&gt;default&lt;/i&gt; browser?!! This is quite opposite to Safari &lt;i&gt;(Google, do you see the combo box?)&lt;/i&gt;:&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_cl8InCNq5jI/Sbn3WMKn-TI/AAAAAAAAANU/AQtWQAlRX0Y/s1600-h/Picture+3.png" style="text-decoration: none;"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 99px;" src="http://3.bp.blogspot.com/_cl8InCNq5jI/Sbn3WMKn-TI/AAAAAAAAANU/AQtWQAlRX0Y/s400/Picture+3.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5312549196055181618" /&gt;&lt;/a&gt;&lt;div&gt;I am in Japan, so when I search, Google is trying to show its smartness and forwards me to google.co.jp, searching over Japanese content. OK, I go to Google, set "Google in English" with a hope Chrome will remember cookie or so. No, it won't: search still searches over Japanese Google. OK, I click on a wrench, open Options, on "Default Search" I click "Manage", change Keyword "google.co.jp" to "google.com". Save. Now it should search in English, right? NO! It still searches over Japanese content! Well, I am OK to go to just google.com and just search it there as it is in a traditional way — that works fine...&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;And by the way, how to turn off Java applets in a Chrome that makes me full-screen-always-on-top-and-undecorated canvas that is impossible to close, then shows me an advertisement?..&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-weight: bold; "&gt;Tabs&lt;/span&gt;&lt;/div&gt;&lt;div&gt;When you have them like a five or two, you can say they are just awesome. But let's look what happens in a real life:&lt;/div&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_cl8InCNq5jI/SboC66kz3aI/AAAAAAAAANc/1u0gRs7u1zU/s1600-h/Picture+4.png" style="text-decoration: none;"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 46px;" src="http://3.bp.blogspot.com/_cl8InCNq5jI/SboC66kz3aI/AAAAAAAAANc/1u0gRs7u1zU/s400/Picture+4.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5312561921616240034" /&gt;&lt;/a&gt;&lt;div&gt;Can you spot where is an Apple Store and do not mix it with Apple Developers community right away, just without using a magic crystal ball?.. Maybe Sergey Brinn and a Sauron from The Lord Of The Rings story can. But I can not. Hey, but how about Apple's way instead?&lt;/div&gt;&lt;div&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_cl8InCNq5jI/SboD1kJKlwI/AAAAAAAAANs/wNSexV5z_dE/s1600-h/Picture+6.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 194px;" src="http://1.bp.blogspot.com/_cl8InCNq5jI/SboD1kJKlwI/AAAAAAAAANs/wNSexV5z_dE/s400/Picture+6.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5312562929206990594" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;JavaScript and all the Ajax hype&lt;/b&gt;&lt;/div&gt;&lt;div&gt;I am definitely &lt;a href="http://maryniuk.blogspot.com/2009/01/why-ajax-is-evil.html"&gt;not a fan of Ajax&lt;/a&gt;. However, Google folks are. That's OK, God bless them. Wait, but what's this?&lt;/div&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_cl8InCNq5jI/SboFi6_nGUI/AAAAAAAAAN0/rqeiKGQKNqQ/s1600-h/Picture+7.png" style="text-decoration: none;"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 340px;" src="http://3.bp.blogspot.com/_cl8InCNq5jI/SboFi6_nGUI/AAAAAAAAAN0/rqeiKGQKNqQ/s400/Picture+7.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5312564807946672450" /&gt;&lt;/a&gt;&lt;div&gt;How this &lt;i&gt;released&lt;/i&gt; thing suppose to bring "best Ajax experience" to user's desktop? Wait, how about this Beta instead?&lt;/div&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_cl8InCNq5jI/SboFwBi_9_I/AAAAAAAAAN8/7gd5G_8y8hQ/s1600-h/Picture+8.png" style="text-decoration: none;"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 331px;" src="http://4.bp.blogspot.com/_cl8InCNq5jI/SboFwBi_9_I/AAAAAAAAAN8/7gd5G_8y8hQ/s400/Picture+8.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5312565033044015090" /&gt;&lt;/a&gt;&lt;div&gt;&lt;div style="text-align: left;"&gt;&lt;span class="Apple-style-span"  style="color:#0000EE;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;Conclusion&lt;/b&gt;&lt;/div&gt;&lt;div&gt;Think different?! I'd be happy if most people would &lt;i&gt;just&lt;/i&gt; think. What I really respect Apple for: they release only what they really had thinking through. I wish we have much more companies around like them.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;So... My request to dear Google is to do not bring your shoddy work to Mac unless it is really worth to look at and unless it is at least equal to previous Safari 3 by usability.  &lt;span class="Apple-style-span" style="color: rgb(255, 0, 0); font-weight: bold; "&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="color:#FF0000;"&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;span class="Apple-style-span" style="color: rgb(255, 0, 0); font-weight: bold; "&gt;*Please*&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_cl8InCNq5jI/SboK7hne8vI/AAAAAAAAAOE/TTq9xmmplbI/s1600-h/Picture+2.png"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 106px;" src="http://1.bp.blogspot.com/_cl8InCNq5jI/SboK7hne8vI/AAAAAAAAAOE/TTq9xmmplbI/s400/Picture+2.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5312570728189457138" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/602769459329747644-5318898328790164048?l=maryniuk.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://maryniuk.blogspot.com/feeds/5318898328790164048/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=602769459329747644&amp;postID=5318898328790164048' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/602769459329747644/posts/default/5318898328790164048'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/602769459329747644/posts/default/5318898328790164048'/><link rel='alternate' type='text/html' href='http://maryniuk.blogspot.com/2009/03/google-chrome-or-we-will-get-it-right.html' title='Google Chrome or &quot;We will get it right in a third version&quot;'/><author><name>BM</name><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><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_cl8InCNq5jI/Sbn2qfccvII/AAAAAAAAANM/X0b8qREAgf0/s72-c/Picture+1.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-602769459329747644.post-5705056593267627155</id><published>2009-03-13T01:54:00.004+09:00</published><updated>2009-03-13T02:02:30.640+09:00</updated><title type='text'>Java Swing: Rounded Corner Rectangle</title><content type='html'>I've decided to make labels small and standard, as in OS X. Well, hands down: drawing things right on 2D canvas still bad, e.g. rounded corners rectangle looks like an array of random pixels around. Here is how it looks like:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_cl8InCNq5jI/Sbk-1BZVIeI/AAAAAAAAAM8/o2d5DX8jLhU/s1600-h/before.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 314px;" src="http://1.bp.blogspot.com/_cl8InCNq5jI/Sbk-1BZVIeI/AAAAAAAAAM8/o2d5DX8jLhU/s400/before.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5312346316088877538" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Too bad. I dislike it... Therefore I used raster instead and I've got very clean visuality. Here you go:&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_cl8InCNq5jI/Sbk-8yPUxDI/AAAAAAAAANE/_is_nR_aE4Q/s1600-h/after.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 314px;" src="http://3.bp.blogspot.com/_cl8InCNq5jI/Sbk-8yPUxDI/AAAAAAAAANE/_is_nR_aE4Q/s400/after.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5312346449459332146" /&gt;&lt;/a&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;P.S. Oops, alpha is wrong, label is too dark as should be. :-)&lt;/div&gt;&lt;div&gt;&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/602769459329747644-5705056593267627155?l=maryniuk.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://maryniuk.blogspot.com/feeds/5705056593267627155/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=602769459329747644&amp;postID=5705056593267627155' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/602769459329747644/posts/default/5705056593267627155'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/602769459329747644/posts/default/5705056593267627155'/><link rel='alternate' type='text/html' href='http://maryniuk.blogspot.com/2009/03/java-swing-rounded-corner-rectangle.html' title='Java Swing: Rounded Corner Rectangle'/><author><name>BM</name><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><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_cl8InCNq5jI/Sbk-1BZVIeI/AAAAAAAAAM8/o2d5DX8jLhU/s72-c/before.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-602769459329747644.post-3628682270944136127</id><published>2009-03-12T13:53:00.008+09:00</published><updated>2009-03-12T15:11:02.339+09:00</updated><title type='text'>Carousel for UI: Pros and Cons</title><content type='html'>I've played around with Swing 2D a little bit. Then I thought: OK, if images can be viewed in carousel, maybe it is good idea to show running applications? Like a shrink to thumbnails and show as minimized windows, sort of a'la OS X exposé? Here is how this thing looks like:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_cl8InCNq5jI/SbiWRLGu8uI/AAAAAAAAAM0/KTnhDZM7640/s1600-h/Picture+1.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 338px;" src="http://1.bp.blogspot.com/_cl8InCNq5jI/SbiWRLGu8uI/AAAAAAAAAM0/KTnhDZM7640/s400/Picture+1.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5312160982266475234" /&gt;&lt;/a&gt;Yup, it works: you click on any other window that is not in a center or use arrow keys "←" or "→" and you move to another one.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Used as a dashboard. Completely bad idea, probably. It looks like "Wow!!" to user, however after 3 minutes user realizes it is a pain to use, because what he is suppose to see right away in front of his eyes is actually covered. Dashboard supposed to show you information right in a moment you spot it.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Used as a menu. Only for stuff, like Apple TV. I've built one for myself, using &lt;a href="http://freevo.sourceforge.net/"&gt;Freevo&lt;/a&gt; at my home, getting a cheap-small-macmini-like PC and putting it behind my TV. For such sort of software, where user wants to relax and see fancy transitions on a very big screen with five menu items — this is a good choice to use carousel view.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Used for multimedia. Well, Apple did that in iTunes and iPods. Me — shrugs. I don't use it and none of my friends I know. Somebody might like to grep over a pile of album cover pages and visually trying to catch one like "Yeah! That's it!". But I prefer have a convenient powerful search instead, typing: "Met&amp;lt;ENTER&amp;gt;" and get for me "Metallica" playing right now.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;For something else? Maybe could be done as miniature composition for a minimized windows, like OS X stacks or something. But &lt;b&gt;still it looks ugly&lt;/b&gt;, frankly. Because these windows will never be fixed WxH pixels, and thus will never look slick in this way...&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Where to put this to make it really useful for people? I have to think more, seems like... :-)&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/602769459329747644-3628682270944136127?l=maryniuk.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://maryniuk.blogspot.com/feeds/3628682270944136127/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=602769459329747644&amp;postID=3628682270944136127' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/602769459329747644/posts/default/3628682270944136127'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/602769459329747644/posts/default/3628682270944136127'/><link rel='alternate' type='text/html' href='http://maryniuk.blogspot.com/2009/03/carousel-for-ui-pros-and-cons.html' title='Carousel for UI: Pros and Cons'/><author><name>BM</name><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><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_cl8InCNq5jI/SbiWRLGu8uI/AAAAAAAAAM0/KTnhDZM7640/s72-c/Picture+1.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-602769459329747644.post-6517111619971552343</id><published>2009-03-10T01:29:00.007+09:00</published><updated>2009-03-10T17:08:48.978+09:00</updated><title type='text'>Bastardizing Java Swing on OSX</title><content type='html'>Everybody knows: Java Swing on Apple OS X is in a stone age times and looks still ugly enough even on co-called native look and feel (do not mention Metal, please, I am drinking coffee now). Not just that, but Apple also playing quite funky games, screwing LaF all around. So what is OK for Java 5, is not really OK for Java 6. I even frozen to think what is coming with Java 7...&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Recent development version of NetBeans 6.7 has &lt;a href="http://wiki.netbeans.org/attach/NBLookAndFeels/netbeans7.0m_mac.jpg"&gt;better look and feel&lt;/a&gt; on OSX. But if you take a look more closely, you will find it is still far away from what should be actually done.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;I've tried myself to play with it. Again, Swing by architecture outperforms SWT, that is still (and probably forever) is using Carbon, instead Cocoa. But that's very bad news to those, who is using it: Carbon probably gone in Snow Leopard. Swing, on the other hand, has a destiny to be permanently fake maker, drawing everything by itself.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Well, anyway. Focused and passive window looks like this for me in Java 5 and Java 6 for Leopard — notice also a scrollbar... :-)&lt;/div&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_cl8InCNq5jI/SbVGfSRlsmI/AAAAAAAAAMk/MBnEfgQ4BRw/s1600-h/Picture+1.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 378px; height: 326px;" src="http://2.bp.blogspot.com/_cl8InCNq5jI/SbVGfSRlsmI/AAAAAAAAAMk/MBnEfgQ4BRw/s400/Picture+1.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5311228838848868962" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_cl8InCNq5jI/SbVGoEOXQOI/AAAAAAAAAMs/NoRDvOmCCYg/s1600-h/Picture+2.png" style="text-decoration: none;"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 338px; height: 286px;" src="http://3.bp.blogspot.com/_cl8InCNq5jI/SbVGoEOXQOI/AAAAAAAAAMs/NoRDvOmCCYg/s400/Picture+2.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5311228989696065762" /&gt;&lt;/a&gt;&lt;div&gt;Cool? No! I am actually very disappointed by... Apple. They're completely screwed Java 6 made it even worse than Java 5 (maybe because Java 6 was entirely handled by Apple?). Apple should push Java in front as a flagship product, but they're stick to Objective C, unfortunately (who the hell needs it on OpenBSD, for example?).&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;On one hand, the future of Java on Apple (and not only), however, is not that much dark anymore: it is at least open source (kudos to Sun). On the other hand, knowing how open source bazaar applies to projects — that's why X11 still sucks on desktops big time, no matter what you use there: KDE or GNOME (GUI No One Might Enjoy)...&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Will see and contribute, right? :-)&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/602769459329747644-6517111619971552343?l=maryniuk.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://maryniuk.blogspot.com/feeds/6517111619971552343/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=602769459329747644&amp;postID=6517111619971552343' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/602769459329747644/posts/default/6517111619971552343'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/602769459329747644/posts/default/6517111619971552343'/><link rel='alternate' type='text/html' href='http://maryniuk.blogspot.com/2009/03/bastardizing-java-swing-on-osx.html' title='Bastardizing Java Swing on OSX'/><author><name>BM</name><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><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_cl8InCNq5jI/SbVGfSRlsmI/AAAAAAAAAMk/MBnEfgQ4BRw/s72-c/Picture+1.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-602769459329747644.post-7262674576940116839</id><published>2009-03-09T16:46:00.003+09:00</published><updated>2009-03-09T17:24:08.455+09:00</updated><title type='text'>NetBeans as a platform for software</title><content type='html'>I've just bit played with a NetBeans as a platform for my own plugins, created some and see how it works. I'd say, quite nice stuff, technically way better than Eclipse and overall impression is pleasant. You could use it for various desktop stuff, especially if you need IDE-like software and it is now. For example, if you want some management or monitoring system for enterprises that looks for doing business (read: looks damn ugly). Mostly it is very cool if you want to extend your system with various plugins etc. E.g. have UML modeling, but also have your own workflow builder etc.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;However, if you ask me about software art or something serious, I would tell you that I would &lt;i&gt;not&lt;/i&gt; use it for &lt;i&gt;my&lt;/i&gt; projects (although I seriously considered NetBeans once).&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Why?&lt;/div&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;It is too much "IDE-ish". Even an attempt to "make it right" as &lt;a href="http://bluemarine.tidalwave.it/"&gt;Blue Marine project&lt;/a&gt; [1] still contains too vivid smell of plugin-based platform. To get rid of it smell you need to remove a lot of things. It will suck more blood from your body that you just do it all yourself from the scratch.&lt;/li&gt;&lt;li&gt;Too heavy for JNLP. Even with one single "Hello World" plugin — almost 20MB.&lt;/li&gt;&lt;li&gt;You need do unnecessary wrapper-works and other hacks-n-tricks in order to use Swing-X components. Why?..&lt;/li&gt;&lt;li&gt;I don't like its Plugin Manager from user point of view (nothing wrong with it itself — works perfectly).&lt;/li&gt;&lt;li&gt;Plugin mechanism is too heavy and can be simplified to much lighter incarnation. It gets better, but still there is way too much XML.&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;div&gt;Personally, I vote for minimalism or, if possible, extreme minimalism. I love to remove everything, unless it is just impossible remove everything else. With NetBeans, still, you have some persistent bits that I would love get rid of it for ever.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;One curious thing: an author of Blue Marine complained that first attempt was actually done on a solution from scratch and he was completely unhappy with it, &lt;i&gt;therefore&lt;/i&gt; he revealed NetBeans for himself. In fact, I am opposite... — the World is that different! :-)&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;_______________&lt;/div&gt;&lt;div&gt;1. &lt;i&gt;Frankly, I have just zero idea who needs this thing on Windows with Google Picasa, on Mac with iPhoto and on Linux with F-Spot... Well, but anyway somebody has a fun, right?&lt;/i&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/602769459329747644-7262674576940116839?l=maryniuk.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://maryniuk.blogspot.com/feeds/7262674576940116839/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=602769459329747644&amp;postID=7262674576940116839' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/602769459329747644/posts/default/7262674576940116839'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/602769459329747644/posts/default/7262674576940116839'/><link rel='alternate' type='text/html' href='http://maryniuk.blogspot.com/2009/03/netbeans-as-platform-for-software.html' title='NetBeans as a platform for software'/><author><name>BM</name><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-602769459329747644.post-1141840666624039190</id><published>2009-03-08T00:34:00.006+09:00</published><updated>2009-03-08T00:45:32.428+09:00</updated><title type='text'>Usability From Redmond</title><content type='html'>I've just installed Microsoft Vista (fouling my holy CV) to make sure Java Swing GUI looks nearly as close as possible to this taste-less Mac OS X cloning failure. OK, one thing makes me happy: it is a virtual machine (easier to delete it all).&lt;div&gt;&lt;br /&gt;&lt;div&gt;One moment that gave me good laugh how these M$ folks are trying to think about usability. OK, I do not need those ritzy widgets, maybe I even do not need anymore that quite big ribbon at the right side that serves them. So what I did: tried to close by clicking either "-&gt;" button or just dragging it away. Right?..&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Wrong! Vista "knows better". They probably spent one more million dollars on a research how to handle what user wants to do and then suggest "right way". In my case, Vista asked: "Do you want to close side-bar?" — and offered me a "right way" how to do that. Of course, it is Microsoft way: you need to right-click on it, select an item from menu "Close side-bar" that is messed up with other items barely readable small font and then get a confirmation bubble that side-bar is closed.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Brain dead. Just brain dead. You've got it, Redmond, as you deserve the most: brain dead.&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/602769459329747644-1141840666624039190?l=maryniuk.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://maryniuk.blogspot.com/feeds/1141840666624039190/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=602769459329747644&amp;postID=1141840666624039190' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/602769459329747644/posts/default/1141840666624039190'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/602769459329747644/posts/default/1141840666624039190'/><link rel='alternate' type='text/html' href='http://maryniuk.blogspot.com/2009/03/usability-from-redmond.html' title='Usability From Redmond'/><author><name>BM</name><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-602769459329747644.post-4179236084979836962</id><published>2009-03-06T23:46:00.003+09:00</published><updated>2009-03-07T00:50:06.278+09:00</updated><title type='text'>OpenSolaris 2008.11 on Virtual Box</title><content type='html'>I've just installed &lt;a href="http://www.opensolaris.com/"&gt;OpenSolaris&lt;/a&gt; (AKA "Slowlaris") on my new MacBook, using &lt;a href="http://www.virtualbox.org/"&gt;VirtualBox&lt;/a&gt; (screw you, VmWare!).&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Overall, everything fubar, exactly as expected: now it finally boots from GRUB and does not hangs as before, trying to use AMD on Core Duo; network is OK and won't suck anymore, as it did in "Nevada" build; video barely works in a simple mode and VBox Additions won't help you out of the box. &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;To fix video working full-screen and seamless mode, it is needed to be &lt;a href="http://static.howstuffworks.com/gif/clearing-a-clogged-toilet-with-a-plunger.jpg"&gt;manually fixed&lt;/a&gt;, by simply removing away all of those display resolution modes from &lt;code&gt;/etc/X11/xorg.conf&lt;/code&gt; file and also setting up virtual machine with 64Mb of video memory.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Second step is audio that won't work anyway anywhere, unless you manually debug it again (as described above). First, throw away slim_install package, a waste of space dependency that keeps root of all evil: SUNWaudiohd package. After those two gone, get &lt;a href="http://www.4front-tech.com/release/oss-solaris-v4.1-1051-i386.pkg"&gt;OSS driver for Slowlaris&lt;/a&gt; and install it (&lt;code&gt;pkgadd -d package-file.pkg&lt;/code&gt;):&lt;/div&gt;&lt;div&gt;&lt;pre&gt;Open Sound System installation complete&lt;br /&gt;You can use osstest command to test audio playback in your system.&lt;br /&gt;&lt;b&gt;It may be necessary to reboot the system&lt;/b&gt; before all devices get properly detected by the system.&lt;br /&gt;Installation of OSS was successful.&lt;/pre&gt;Damn great! Unix follows now the most popular trends, exactly like in good-old WinNT times: install a driver, reboot the system...&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;P.S. Sound still sucks on Solaris big time and also randomly crashes (&lt;code&gt;/usr/sbin/soundoff&lt;/code&gt; and &lt;code&gt;/usr/sbin/soundon&lt;/code&gt; cures current random crash). Well, never mind, I don't need sound during packaging software and, besides, I use iTunes on my Mac anyway... :-)&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/602769459329747644-4179236084979836962?l=maryniuk.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://maryniuk.blogspot.com/feeds/4179236084979836962/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=602769459329747644&amp;postID=4179236084979836962' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/602769459329747644/posts/default/4179236084979836962'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/602769459329747644/posts/default/4179236084979836962'/><link rel='alternate' type='text/html' href='http://maryniuk.blogspot.com/2009/03/opensolaris-200811-on-virtual-box.html' title='OpenSolaris 2008.11 on Virtual Box'/><author><name>BM</name><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-602769459329747644.post-3219304304279134437</id><published>2009-03-03T09:51:00.005+09:00</published><updated>2009-03-04T11:20:57.933+09:00</updated><title type='text'>Swing and Hibernate (feedback)</title><content type='html'>I've found an &lt;a href="http://www.netbeans.org/kb/docs/java/hibernate-java-se.html"&gt;example&lt;/a&gt; how to use Hibernate in Swing.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Not to mention weird existence of HQL entity in general, you have to use it for the very trivial SQL request. Why?.. Oh, that's a "short-cut" to automatically generate &lt;s&gt;very inefficient and wrong&lt;/s&gt; SQL query, I see.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;You also need a pile of XML to configure your ORM. Then you need another pile of XML to map your database stuff to the objects through these entities. Ah, right, you also need those excellent entities themselves just to hard-design your application, thus making it rock-stubborn against any minimum changes, removing any possible flexibility without whole recoding and recompilation. After all at the end, you also need to hard-code your QUERIES_BASED_ON_VARIOUS_CRITERIA (look at the code in the example to understand what I am talking about).&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;*Sigh*... It is just all pathetic... Disappoints even more, than that anyone could expect. Hey, folks, wake up! ORM supposed to make life &lt;i&gt;easier&lt;/i&gt;, not harder!.. Therefore, if ORM concept does not makes your life any easier but generates a mess of general hodgepodge, maybe quite correct logical conclusion would be to &lt;i&gt;do not use it&lt;/i&gt; at all?&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Legacy databases solves legacy problems. We need new databases and new approach to the data management. Thus having it simple and understandable: &lt;b&gt;keep sets away from objects&lt;/b&gt;. &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Moral: Keep it simple, stupid.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/602769459329747644-3219304304279134437?l=maryniuk.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://maryniuk.blogspot.com/feeds/3219304304279134437/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=602769459329747644&amp;postID=3219304304279134437' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/602769459329747644/posts/default/3219304304279134437'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/602769459329747644/posts/default/3219304304279134437'/><link rel='alternate' type='text/html' href='http://maryniuk.blogspot.com/2009/03/swing-and-hibernate-feedback.html' title='Swing and Hibernate (feedback)'/><author><name>BM</name><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-602769459329747644.post-4602200693886849305</id><published>2009-02-16T10:29:00.004+09:00</published><updated>2009-02-18T00:06:34.193+09:00</updated><title type='text'>Java + Groovy</title><content type='html'>If you do not need a blazing rocket-science performance, but just need to toss up some prototype or even production software in Java platform, but you really-really-really do not waste time on Java language verbosity, you may consider using Groovy as a dynamic language extension to the Java platform.&lt;br /&gt;&lt;br /&gt;Let's do something silly, but to see how the things are interacting between each other. For example, let's read our "/etc/passwd" into a list and display a first element of it from a plain Java, omitting an empty lines and/or commented ones. :-) Here how it is done in NetBeans IDE:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Make sure Groovy support is in your NetBeans 6+. Usually it is there out of the box, but maybe some plugins must be installed. Check it by Plugin Manager, navigating to "Menu→Tools→Plugins" and see maybe you need some tweaks in Preferences for Groovy specifically.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Create new Java Application project. Let's call it "JavaAndGroovy".&lt;/li&gt;&lt;li&gt;In your package, called now "javaandgroovy" create a Groovy Class. Since it is an example, let's call it "Grovample".&lt;br /&gt;&lt;/li&gt;&lt;/ol&gt;Great. Now is a time to read the file with one codeline, as a text and return a list of the lines. Here you go:&lt;br /&gt;&lt;pre&gt;&lt;span style="font-weight: bold;"&gt;package&lt;/span&gt; javaandgroovy&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;class&lt;/span&gt; Grovample {&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;    def&lt;/span&gt; readfile(filename) {&lt;br /&gt;      List data = []&lt;br /&gt;  &lt;span style="font-weight: bold;"&gt;    for&lt;/span&gt; (line &lt;span style="font-weight: bold;"&gt;in new&lt;/span&gt; File(filename).readLines()) {&lt;br /&gt;          line = line.trim()&lt;br /&gt;      &lt;span style="font-weight: bold;"&gt;    if&lt;/span&gt; (line &amp;amp;&amp;amp; !line.startsWith("#")) {&lt;br /&gt;              data.add(line)&lt;br /&gt;          }&lt;br /&gt;      }&lt;br /&gt;&lt;br /&gt;      &lt;span style="font-weight: bold;"&gt;return&lt;/span&gt; data&lt;br /&gt;  }&lt;br /&gt;}&lt;/pre&gt;Now, to use this class in the plain Java, just... use this class! Like this:&lt;br /&gt;&lt;pre&gt;&lt;span style="font-weight: bold;"&gt;package&lt;/span&gt; javaandgroovy;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;import&lt;/span&gt; java.util.List;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;public&lt;/span&gt; &lt;span style="font-weight: bold;"&gt;class&lt;/span&gt; Main {&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;    public&lt;/span&gt; &lt;span style="font-weight: bold;"&gt;static&lt;/span&gt; &lt;span style="font-weight: bold;"&gt;void&lt;/span&gt; main(String[] args) {&lt;br /&gt;      List passwd= (List) new Grovample().readfile("/etc/passwd");&lt;br /&gt;      System.out.println("Lines: " + passwd.size());&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;        if&lt;/span&gt; (passwd.size() &gt; 0) {&lt;br /&gt;          System.out.println("First line: \n" + passwd.get(0));&lt;br /&gt;      } &lt;span style="font-weight: bold;"&gt;else&lt;/span&gt; {&lt;br /&gt;          System.err.println("Well, you're on Windows. :-P");&lt;br /&gt;      }&lt;br /&gt;  }&lt;br /&gt;}&lt;/pre&gt;As a result, I am getting the following output:&lt;br /&gt;&lt;pre&gt;Lines: 40&lt;br /&gt;First line:&lt;br /&gt;nobody:*:-2:-2:Unprivileged User:/var/empty:/usr/bin/false&lt;br /&gt;&lt;/pre&gt;Now, let's look how the distribution looks like. Press "Clean and Build" button or simply navigate to your project directory in the terminal and run "ant" command. In a "dist" subdirectory, here is the following tree:&lt;br /&gt;&lt;pre&gt;.&lt;br /&gt;./JavaAndGroovy.jar&lt;br /&gt;./lib&lt;br /&gt;./lib/groovy-all.jar&lt;br /&gt;./README.TXT&lt;/pre&gt;File "groovy-all.jar" has a weight of 2.7Mb. Not so small for very tiny apps, but not so big for bigger ones. You might consider put this lib in your GlassFish somewhere, in order to do not deploy it every time with your WAR/EAR. :-)&lt;br /&gt;&lt;br /&gt;Keep in mind: Groovy is significantly slower than plain Java. Really slow. Check out it &lt;a href="http://www.christianschenk.org/blog/performance-comparison-between-groovy-and-java/"&gt;how much slower&lt;/a&gt;. Still, it does not means that we can not use Groovy for many-many tasks around and simplify our Java code.&lt;br /&gt;&lt;br /&gt;Happy Grooving! :-)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/602769459329747644-4602200693886849305?l=maryniuk.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://maryniuk.blogspot.com/feeds/4602200693886849305/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=602769459329747644&amp;postID=4602200693886849305' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/602769459329747644/posts/default/4602200693886849305'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/602769459329747644/posts/default/4602200693886849305'/><link rel='alternate' type='text/html' href='http://maryniuk.blogspot.com/2009/02/java-groovy.html' title='Java + Groovy'/><author><name>BM</name><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-602769459329747644.post-5918606558994253173</id><published>2009-01-25T14:47:00.001+09:00</published><updated>2009-01-25T14:47:11.184+09:00</updated><title type='text'>Beast 666</title><content type='html'>&lt;div style="text-align: left; padding: 3px;"&gt;&lt;a href="http://www.flickr.com/photos/marblebutterfly/3224799994/" title="photo sharing"&gt;&lt;img src="http://farm4.static.flickr.com/3509/3224799994_53d9837e0d.jpg" style="border: solid 2px #000000;" alt="" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="font-size: 0.8em; margin-top: 0px;"&gt;&lt;a href="http://www.flickr.com/photos/marblebutterfly/3224799994/"&gt;Beast 666&lt;/a&gt;, originally uploaded by &lt;a href="http://www.flickr.com/people/marblebutterfly/"&gt;I.S.B.M.&lt;/a&gt;.&lt;/span&gt;&lt;/div&gt;&lt;p&gt;In this Sunday, on a street I saw very weird car, made out of various different parts. That's was a real beast! :-)&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/602769459329747644-5918606558994253173?l=maryniuk.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://maryniuk.blogspot.com/feeds/5918606558994253173/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=602769459329747644&amp;postID=5918606558994253173' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/602769459329747644/posts/default/5918606558994253173'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/602769459329747644/posts/default/5918606558994253173'/><link rel='alternate' type='text/html' href='http://maryniuk.blogspot.com/2009/01/beast-666.html' title='Beast 666'/><author><name>BM</name><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><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://farm4.static.flickr.com/3509/3224799994_53d9837e0d_t.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-602769459329747644.post-6744466989517162628</id><published>2009-01-21T14:52:00.014+09:00</published><updated>2009-01-21T22:52:25.113+09:00</updated><title type='text'>Why Ajax is evil</title><content type='html'>&lt;span style="font-weight: bold;"&gt;"Ajax or not Ajax?"&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Making my yet another Swing app on Java, I've been thinking on an answer to a question: &lt;span style="font-style: italic;"&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;div style="text-align: center;"&gt;&lt;span style="font-style: italic;"&gt;Honestly, what the hell Ajax thing is so special, so many people&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;are rushing in to use it just right everywhere&lt;/span&gt;?&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;So much time went away since ESR wrote his excellent "&lt;a href="http://catb.org/esr/html-hell.html"&gt;HTML Hell&lt;/a&gt;" page. I am just wondering who is reading this?..&lt;br /&gt;&lt;br /&gt;I found this Ajax thing is not just mostly bad idea, but actually it is &lt;span style="font-style: italic;"&gt;that&lt;/span&gt; evil. To the company of public resources it is not yet that much harmful, but for the enterprise it is. Because it simply has no future, whilst your enterprise is already poisoned by this stuff, probably. Hence you have to support it or spend some more money to rewrite your project. Here a list of main issues (too lazy to write much):&lt;br /&gt;&lt;ul&gt;&lt;li&gt;There is no real integration with a desktop, but through a web browser. Hence, your application acquires all the limitations.&lt;/li&gt;&lt;li&gt;While Ajax website is more fun to use, yet you're nearly have to pray for your browser worked properly with a particular website.&lt;/li&gt;&lt;li&gt;Issues with off-line and on-line modes. To write entire application in a JavaScript that sits in a memory of the browser is not really a thing you want to go.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Your browser is not working as designed: history issues, refresh will destroy everything etc. Of course, there are (expensive) workarounds to avoid state loss on refresh, but history won't work anyway.&lt;/li&gt;&lt;li&gt;Google won't index your website much, once your HTML has nearly one tag, like: &lt;code&gt;&amp;lt;script&amp;gt;EntireWebsite.build()&amp;lt;/script&amp;gt;&lt;/code&gt;&lt;/li&gt;&lt;li&gt;There are no real widgets, except standard HTML ones. There is an &lt;span style="font-style: italic;"&gt;emulation&lt;/span&gt; of such.&lt;/li&gt;&lt;li&gt;It suppose to deliver only an user interface. However, in practice it often takes place much wider scope, thus interfere with other paradigms.&lt;/li&gt;&lt;li&gt;Quirky, full of hacks and tricks JavaScript code and CSS stylesheets. Once browser's vendor changes something that breaks your page, you have to fix it.&lt;/li&gt;&lt;li&gt;It is very expensive ("time" equals "money", you know) because of its heterogeneity. Typical Ajax application is a hodgepodge of various stuff: XML, CSS, HTML, JavaScript and a thing on a server-side (call it yourself: Java, Python, PHP, Ruby... whatever).&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;But the main issue with Ajax is:&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;span style="font-weight: bold;"&gt;There are NO standards&lt;/span&gt;&lt;span style="font-size:180%;"&gt;&lt;span style="font-weight: bold;"&gt;!&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;Very "good" at enterprises, right? You might say: there IS a standard specs: ECMA Script, CSS, XHTML etc. Yes. You're completely right till the point of... different browsers differently spits on those specs. Look at the reality: today we have 21th century, while the best open source browser (Firefox) can not hit even 80% of Acid 3 test! What browser is the most popular at a regular Windows box and how much percents this thing can hit of Acid 3 test?..&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;&lt;/span&gt;When you select a technology for your online perfume shop, then maybe you have to think how often your site random people are going to use. At that time Ajax DHTML stuff with plain alternative would be OK. However, if it is an enterprise under controlled network, I doubt any browser is the best Virtual Machine for scripting.&lt;br /&gt;&lt;br /&gt;The future is quite different. If you increment that O'Reilly's buzzword one more time up to "Web 3.0", you will find that there is just no Ajax. There is JavaFX. There is Java Swing and a Java Web Start. There is Adobe Air and all the rest of Adobe multimedia streaming magic. There is even Microsoft Silverlight that works pretty well. But there are no Ajax...&lt;br /&gt;&lt;br /&gt;If tomorrow there is no Ajax, maybe you should not bother much with it, but go to the next level? Thus, before you rush to follow everybody's hype and bubble just &lt;span style="font-style: italic;"&gt;"to be as everybody else"&lt;/span&gt;, better really think about it twice. Or more.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;"I hate what you just saying, it's all lame!"&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;OK, dear social networker, to raise a finger on a problem is not a big deal, I agree with that. Thus some solution should  be proposed. I could drop you a few lines why I would choose Java Swing + web services versus Ajax stuff at enterprise. As well as why I would choose JavaFX, if I need funky RIA for fun. Keep in mind for yet your perfume shop can be just as damn great without any Ajax thing, you know... — simply look at &lt;span style="font-weight: bold;"&gt;Amazon.com&lt;/span&gt; and take it as an example for yourself. :-)&lt;br /&gt;&lt;br /&gt;Here you go:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;You anyway want to go SOA, no matter what type of UI you have in a front.&lt;/li&gt;&lt;li&gt;Java Swing has a rock solid internal standards and runs identically on various platforms.&lt;/li&gt;&lt;li&gt;Swing is homogeneous. Your employees can be specific to Java only and do not need to know a mixture of various stuff and be proficient in each.&lt;/li&gt;&lt;li&gt;You can make whatever hell widgets you want with any possible shapes and behaviour, because the whole thing is just a plain canvas, that simply listens to input events, after all.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;You can use only Ruby or only Python as well (JRuby or Jython), if you really like to do so.&lt;/li&gt;&lt;li&gt;You can create Swing GUI literally in minutes in front of your customer's or manager's eyes, using NetBeans and Matisse editor.&lt;/li&gt;&lt;li&gt;You still have clear MVC and you distinguish what is business data, and what is just a way to deliver it to user.&lt;/li&gt;&lt;li&gt;You have clear desktop integration.&lt;/li&gt;&lt;li&gt;Your internal company network is highly controlled, so you do not need to worry something is randomly missing on random machines (otherwise fire your system administrators ASAP because they are just morons).&lt;/li&gt;&lt;li&gt;...I can continue this list till you fall asleep. :-)&lt;/li&gt;&lt;/ol&gt;&lt;br /&gt;&lt;br /&gt;If I would have say what is the future of Ajax, then I would say:&lt;br /&gt;&lt;i&gt;&lt;b&gt;Ajax is a very expensive way to pimp your business network resource&lt;/b&gt; and this way of data delivery will eventually die on web applications market.&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;Have a fun!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/602769459329747644-6744466989517162628?l=maryniuk.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://maryniuk.blogspot.com/feeds/6744466989517162628/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=602769459329747644&amp;postID=6744466989517162628' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/602769459329747644/posts/default/6744466989517162628'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/602769459329747644/posts/default/6744466989517162628'/><link rel='alternate' type='text/html' href='http://maryniuk.blogspot.com/2009/01/why-ajax-is-evil.html' title='Why Ajax is evil'/><author><name>BM</name><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-602769459329747644.post-3116439238022966811</id><published>2009-01-15T13:02:00.010+09:00</published><updated>2009-01-15T14:04:07.289+09:00</updated><title type='text'>Me on Architects</title><content type='html'>&lt;div style="text-align: right;"&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;“Trust me that looks good, I'm an architect!!!”&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: right;"&gt;&lt;span style="font-style: italic;"&gt;— Any pretentious architect, or any for that matter&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;I've been often asked very &lt;s&gt;stupid&lt;/s&gt; strange question:&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;span style="font-style: italic;"&gt;"Should architects write a code?"&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;Should father take care of his child as deeply as possible? Should surgeons operate? Should Rudolf Christian Karl Diesel be aware of principles of physics for analysis, design, manufacturing, and maintenance of his great engine?&lt;br /&gt;&lt;br /&gt;Let me tell you something here. See, in IT world, actually, &lt;span style="font-weight: bold;"&gt;there is no such thing as "architect"&lt;/span&gt;. There are &lt;span style="font-style: italic;"&gt;software engineers&lt;/span&gt;. Some of them are so serious about software, that they're building their own hardware.&lt;br /&gt;&lt;br /&gt;So what does they do? They do know what to expect from some certain hardware. They do also know how their and related software works and what to expect. They also do everything actually, hands on. Just close your eyes and imagine a senior architect of any (nuclear) submarine, just has no idea about very details in the machine room or navigation system and does not getting how it all works, what to expect from certain modules and what these little things does in different places inside the submarine. Remembering that everybody else will simply follow the instructions of such senior architect, how far this submarine will go, you think?..&lt;br /&gt;&lt;br /&gt;However, all times in IT there are plenty of parasites like in my example above. Typically, they are &lt;a href="http://www.catb.org/%7Eesr/jargon/html/H/heatseeker.html"&gt;heatseekers&lt;/a&gt; and speaks damn really a lot of buzzwords or (recently) simply abbreviations (often they turn to change a topic, if you ask about one some specific details). Since they say a bunch of cryptic words, everybody else thinks: "Oh, he is a God!". No, he is not. Not at all.&lt;br /&gt;&lt;br /&gt;They mostly spending their time on (useless) meetings, making them as long as possible and as much as they can per a day: to blah-blah-blah is much easier than type-type-type-compile. Instead to code, they do prefer to draw boxes and join them with arrows in some drawing software or (better) on a board in front of those, who thinks he/she is a God. On top of this, they mostly have zero of real hands on experience. More advanced parasites can work only on prototypes and usually they deadly sticking exclusively to one single technology, making no steps forward to look around. One will bluntly repeat you: "Perl! Perl! Perl! Perl! Perl!", another: "Java! Java! Java! Java! Java!", yet another: ".Net! .Net! .Net! .Net! .Net!" and so on and so forth.&lt;br /&gt;&lt;br /&gt;In real life, especially when company is big, they will avoid any real full-scale coding participation, but will switch to paperwork and e-mail broadcasting. More advanced will try to give a born to simply CGI scripts or similar prototyping.&lt;br /&gt;&lt;br /&gt;Why it happens so? Obviously, because they are too dumb to learn something new, hence they do have ZERO CLUE what is going around and how industry is trying to break the walls. Thus they do not know current problems and are not passionate to SOLVE them once and forever, simply because they are not really a geeks. Therefore, as a consequence, only what they can do apart of saying abstract incomplete "just ideas", they WILL do dirty politics things, disturb real engineers with brain-less directives and environment changes, will go write [useless] documents with a stupid injunctions, make moronic rules, release crazy instructions, do not care about company, but simply suck money as much as possible, fill their LinkedIn.com profile with best recommendations from their friends they drinking with and then disappear, moving to another victim company.&lt;br /&gt;&lt;br /&gt;But the company will continue to live with completely brainless bullshit solutions that are quite useless or in real full-scale enterprise. So if you are employer and someone call himself/herself "trained architect" and "prefer to design, rather to implement" — simply avoid such candidate as soon as you can, no matter what his BranBench results and a bunch of other certificates/diplomas says.&lt;br /&gt;&lt;br /&gt;Shortly: &lt;span style="font-weight: bold;"&gt;either you provide or you are politician&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;Have a good day!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/602769459329747644-3116439238022966811?l=maryniuk.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://maryniuk.blogspot.com/feeds/3116439238022966811/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=602769459329747644&amp;postID=3116439238022966811' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/602769459329747644/posts/default/3116439238022966811'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/602769459329747644/posts/default/3116439238022966811'/><link rel='alternate' type='text/html' href='http://maryniuk.blogspot.com/2009/01/me-on-architects.html' title='Me on Architects'/><author><name>BM</name><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-602769459329747644.post-4479117216623247633</id><published>2009-01-14T15:03:00.007+09:00</published><updated>2009-01-14T21:20:30.275+09:00</updated><title type='text'>X11 + Gnome with Bugs = Kick For Innovation (Part 2)</title><content type='html'>Running Linux Mint on &lt;a href="http://www.virtualbox.org/"&gt;xVM&lt;/a&gt;. Uhmm... Not that bad anymore &lt;a href="http://maryniuk.blogspot.com/2009/01/x11-and-gnome-bugs-is-engine-for.html"&gt;as it was before&lt;/a&gt;!&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_cl8InCNq5jI/SW2AhL702LI/AAAAAAAAAMU/V8HklcullvQ/s1600-h/Picture+2.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 271px;" src="http://4.bp.blogspot.com/_cl8InCNq5jI/SW2AhL702LI/AAAAAAAAAMU/V8HklcullvQ/s400/Picture+2.png" alt="" id="BLOGGER_PHOTO_ID_5291026444857956530" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Still window borders and bluish title bar on a standard JInternalFrame looks very bad (in my opinion), but this is not really what user will pay attention at. The only one thing left: remove Java logo icon on the left side of title bar.&lt;br /&gt;&lt;br /&gt;Ah, and I've added fade-in and fade-out effects when my modded window appears and/or disappears. Not really important, but just feels more smooth.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Update:&lt;/span&gt; I had to go across the code a bit to make sure now it works as should be on Slowlaris (2008.11, running on the same xVM). Nimbus default theme from Gnome looks pretty clear and not that bad. Default Java 6, Update 10 is a pleasant thing. Yet I am not getting why there on &lt;code&gt;JInternalFrame&lt;/code&gt; that small Java logo is rendered *twice* on a title bar: once crappy, with extra-garbage pixels (on left) and once pretty good, near the title actually. Well, probably must be a Sun advertisement of their flagship trend...&lt;br /&gt;&lt;br /&gt;Here how it looks like (no change much from previous shot above):&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_cl8InCNq5jI/SW3XHRiUAtI/AAAAAAAAAMc/XytEtwkgRs0/s1600-h/Picture+3.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 301px;" src="http://1.bp.blogspot.com/_cl8InCNq5jI/SW3XHRiUAtI/AAAAAAAAAMc/XytEtwkgRs0/s400/Picture+3.png" alt="" id="BLOGGER_PHOTO_ID_5291121657196577490" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;P.S. Damn, anybody wants to make it works on Windows?... :-(&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/602769459329747644-4479117216623247633?l=maryniuk.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://maryniuk.blogspot.com/feeds/4479117216623247633/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=602769459329747644&amp;postID=4479117216623247633' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/602769459329747644/posts/default/4479117216623247633'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/602769459329747644/posts/default/4479117216623247633'/><link rel='alternate' type='text/html' href='http://maryniuk.blogspot.com/2009/01/x11-gnome-with-bugs-kick-for-innovation.html' title='X11 + Gnome with Bugs = Kick For Innovation (Part 2)'/><author><name>BM</name><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><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_cl8InCNq5jI/SW2AhL702LI/AAAAAAAAAMU/V8HklcullvQ/s72-c/Picture+2.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-602769459329747644.post-6038698726229689807</id><published>2009-01-14T00:32:00.007+09:00</published><updated>2009-01-14T01:16:09.727+09:00</updated><title type='text'>X11 + Gnome with Bugs = Kick For Innovation</title><content type='html'>In my Java-based backup software that I am working on now, in the GUI (Swing) I have to pop-up a history of a file that has to be restored. Everything should be very simple: you click on an icon of the file you want to restore, pop-up with a table appears. Then you select the date you need and this little window disappears, file gets restored.&lt;br /&gt;&lt;br /&gt;Window originally was implemented as typical JFrame, undecorated, always on top. Works fine on Mac OS X with native LaF (of course! who wants that fugly Java Metal LaF to see!?).&lt;br /&gt;&lt;br /&gt;But when it comes to X11 and Gnome... :-( For some reason "always on top" gets to be "always on bottom" or "always depends on Moon phase and Solar interference with UPS". If I call it "window.toFront()" it takes only once-per-entire-software-session, and then gets down again. To fix the thing, I had switched to JInternalFrame. But then I found that native GTK look and feel looks acceptable only on Mac OS X with native LaF or Quaqua.&lt;br /&gt;&lt;br /&gt;But on typical Gnome, JInternalFrame looks just that nasty and horrible on several want-to-be-default themes, especially on Linux Mint and Linux Ubuntu. Borders are mangled and of course there is no shadow at all. Title bar of the window on some themes is one pixel narrower than entire window (or sometimes one pixel wider that makes entire border make a vertical gap per window). Dragging performance is usually crappy and slow, especially on Mac OS X.&lt;br /&gt;&lt;br /&gt;Trying on OpenSolaris's default theme that looks like new Nimbus theme, overall impression is also could be quite better. Additionally, I've got some very strange errors, when I am adding a reference of the window to current working space.&lt;br /&gt;&lt;br /&gt;Rule: if you are GUI designer/programmer, you are responsible&lt;span style="font-weight: bold;"&gt; for each pixel&lt;/span&gt; user see.&lt;br /&gt;&lt;br /&gt;Change native LaF and go with Metal is "No-no-no, hell, no-no-no-no-no!!". The people, who was made Metal LaF has no taste, no understanding what style is, no feeling of beauty, use always an axe even to cut an orange and probably it's graphical design was made by a programmer at Sun that was working for Microsoft before... I've decided to make my own hack and here how it looks like (same everywhere):&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_cl8InCNq5jI/SWy5uMXZmDI/AAAAAAAAAMM/6_LacibDDpo/s1600-h/internal_window_mod.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 292px;" src="http://4.bp.blogspot.com/_cl8InCNq5jI/SWy5uMXZmDI/AAAAAAAAAMM/6_LacibDDpo/s400/internal_window_mod.png" alt="" id="BLOGGER_PHOTO_ID_5290807865497983026" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;It is completely glassy, translucent and smooth. I think, it looks much better, performs really fast and has no nasty bugs I faced before.&lt;br /&gt;&lt;br /&gt;Great, time to go to sleep finally. :-)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/602769459329747644-6038698726229689807?l=maryniuk.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://maryniuk.blogspot.com/feeds/6038698726229689807/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=602769459329747644&amp;postID=6038698726229689807' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/602769459329747644/posts/default/6038698726229689807'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/602769459329747644/posts/default/6038698726229689807'/><link rel='alternate' type='text/html' href='http://maryniuk.blogspot.com/2009/01/x11-and-gnome-bugs-is-engine-for.html' title='X11 + Gnome with Bugs = Kick For Innovation'/><author><name>BM</name><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><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_cl8InCNq5jI/SWy5uMXZmDI/AAAAAAAAAMM/6_LacibDDpo/s72-c/internal_window_mod.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-602769459329747644.post-4515025158090586388</id><published>2009-01-06T12:11:00.001+09:00</published><updated>2009-01-06T12:11:30.476+09:00</updated><title type='text'>Tokyo Winter</title><content type='html'>&lt;div style="text-align: left; padding: 3px;"&gt;&lt;a href="http://www.flickr.com/photos/marblebutterfly/3144105956/" title="photo sharing"&gt;&lt;img src="http://farm4.static.flickr.com/3104/3144105956_fa72070334.jpg" style="border: solid 2px #000000;" alt="" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="font-size: 0.8em; margin-top: 0px;"&gt;&lt;a href="http://www.flickr.com/photos/marblebutterfly/3144105956/"&gt;Tokyo Winter&lt;/a&gt;, originally uploaded by &lt;a href="http://www.flickr.com/people/marblebutterfly/"&gt;I.S.B.M.&lt;/a&gt;.&lt;/span&gt;&lt;/div&gt;&lt;p&gt;I took this picture near my house right before New Year eve. Duh, no snow, no any feeling of a Christmas Tree and New Year celebration. And 16+ C temperature outside.&lt;br /&gt;&lt;br /&gt;But isn't it great? :-)&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/602769459329747644-4515025158090586388?l=maryniuk.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://maryniuk.blogspot.com/feeds/4515025158090586388/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=602769459329747644&amp;postID=4515025158090586388' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/602769459329747644/posts/default/4515025158090586388'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/602769459329747644/posts/default/4515025158090586388'/><link rel='alternate' type='text/html' href='http://maryniuk.blogspot.com/2009/01/tokyo-winter.html' title='Tokyo Winter'/><author><name>BM</name><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><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://farm4.static.flickr.com/3104/3144105956_fa72070334_t.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-602769459329747644.post-4070550666894127530</id><published>2009-01-06T11:05:00.004+09:00</published><updated>2009-01-06T11:56:26.366+09:00</updated><title type='text'>Java and daemons</title><content type='html'>I have to say for Java is pretty much OK for daemons, if you want same daemon to be cross-platform out of the box and you do not mind a thing is eating like 30M of RAM or bit more. It is possible to achieve it, once some certain rules are kept strict. You have to remember: you will get entire Java VM instance for your daemon. Therefore before you go to this area, think twice: maybe C or C++ or even Digital Mars D are much better language choices for you?&lt;br /&gt;&lt;br /&gt;You might want Java daemons in sort of cases, like:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;You want to connect to RDBMS, but you can not use ODBC for some reasons or it is just impossible to install client on current OS. For example, you have OpenBSD but need to connect to Oracle. JDBC would work here just perfect. You will not get HotSpot on OpenBSD, but yet you can use Kaffe VM or Cacao VM or JamVM and GNU/Classpath. I tried them all, works almost great, but JamVM is just really meant to be small for embedded devices, hence performance is not that really great.&lt;/li&gt;&lt;li&gt;You have something very special inside and do not want to waste time porting your daemon separately to Solaris, to Mac OS X, to Linux, to IRIX, to AIX, to HP UX, to FreeBSD etc.&lt;/li&gt;&lt;li&gt;You do not want to waste your time banging your head into the wall, coding with C++, because you realized that library you need either does not exists yet and you have to DIY it or just very bad and you need make it good yourself, before you write your desired daemon.&lt;/li&gt;&lt;li&gt;etc.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;Your daemon must be really small, simple and clean at implementation. To get that, you definitely have to throw away mostly all Java crappy design patterns. They &lt;span style="font-style: italic;"&gt;sucks&lt;/span&gt; anyway. Forget about those stupid adapters, bridges, factories and other layered crap, but just do directly what you have to and think like you're coding almost in plain C.&lt;br /&gt;&lt;br /&gt;Since Java sucks hard at system programming, because it's VM is almost like an OS itself, there is no such things as &lt;code&gt;.fork()&lt;/code&gt;, unfortunately. Therefore, for plain Unix you might use &lt;a href="http://tldp.org/LDP/LGNET/issue49/misc/beekmans/LFS-HOWTO-10.html"&gt;init.d&lt;/a&gt;, using shell script with regular running in background task technique would do the trick. For Mac OS X you definitely want to use &lt;a href="http://developer.apple.com/MacOsX/launchd.html"&gt;launchd&lt;/a&gt; and it is opposite: your script should &lt;span style="font-weight: bold;"&gt;not&lt;/span&gt; detach, otherwise launchd will think your daemon is dead. For Windows... well, there is daemon stuff from &lt;a href="http://commons.apache.org/daemon/"&gt;Apache Commons&lt;/a&gt;. They also have wrapper for Java on Linux, but as much as I tried, it works horrible and unstable, in my opinion. Additionally, you want to read &lt;a href="http://barelyenough.org/blog/2005/03/java-daemon/"&gt;this article&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;The Windows thing... Well, honestly I dunno much what else you can use for Windows, since I am not big fan of this strange OS and have no one around: my servers are all Unix and for desktop I still prefer Mac. But there are must be some wrappers, registry keys for automatically booting it up on start-up or so and other things though...&lt;br /&gt;&lt;br /&gt;Happy coding! :-)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/602769459329747644-4070550666894127530?l=maryniuk.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://maryniuk.blogspot.com/feeds/4070550666894127530/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=602769459329747644&amp;postID=4070550666894127530' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/602769459329747644/posts/default/4070550666894127530'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/602769459329747644/posts/default/4070550666894127530'/><link rel='alternate' type='text/html' href='http://maryniuk.blogspot.com/2009/01/java-and-daemons.html' title='Java and daemons'/><author><name>BM</name><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-602769459329747644.post-8717579741405748208</id><published>2009-01-05T15:27:00.004+09:00</published><updated>2009-01-14T01:22:42.164+09:00</updated><title type='text'>Embedded Databases in Java</title><content type='html'>As I am developing "Better Time Machine :-) ©", I am looking for various embedded databases. Each database has good and bad sides. I even tried JDBM (ripped off from W3C Jigsaw and bit fixed inside — it is just few classes). All I need is very fast and embeddable engine (means, very small at footprint and memory consumption).&lt;br /&gt;&lt;br /&gt;Here is a list of what I've tried (since software is written in Java, so I tried pure 100% Java solutions):&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Apache Derby (AKA JavaDB)&lt;/li&gt;&lt;li&gt;Oracle Berkeley DB for Java&lt;/li&gt;&lt;li&gt;db4o for Java (sort of ZODB for Python, but much better)&lt;br /&gt;&lt;/li&gt;&lt;li&gt;W3C JDBM (ripped off from Jigsaw)&lt;/li&gt;&lt;li&gt;Some JNI wrappers around GDBM (JDBM and JavaDBM).&lt;br /&gt;&lt;/li&gt;&lt;li&gt;HSQLDB&lt;/li&gt;&lt;li&gt;H2&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;So shortly, you want to play with these rubber toys &lt;span style="font-weight: bold;"&gt;only in the case&lt;/span&gt; when your database is no more than just a storage for reasonable amount of data that is used by desktop application or a daemon or a server software (here be careful with concurrent access for write). In any other situation, you definitely want to go with a solid server database solution. Use PostgreSQL if you want good stuff for free, MySQL if you want to screw yourself or Oracle if you can buy.&lt;br /&gt;&lt;br /&gt;If you want objects, use db4o. Very neat database. &lt;s&gt;But footprint is not any small: about 30M. Think about it.&lt;/s&gt; You can also go with W3C JDBM, store entry key as a string and entire object as a byte array of serialized object. Crappy, but works well in some certain cases, if you do not need funky searches (otherwise go back to db4o).&lt;br /&gt;&lt;br /&gt;If you want embedded SQL, then definitely H2. It is RDBMS from the same author of HSQLDB, just simply faster and better. It has lots of features and very nicely coded. Performance is very high, it supports very large databases, in-memory databases and works in server mode. Footprint is very small and it is 100% pure Java open source software. It also supports ORMs, if you need this thing. But I am not sure how you could install 120M of ORM, then make cumbersome XML mappings, then use weird HQL (as for Hibernate, for example) and stay happy because your database engine footprint is just 500K library... Go real stuff: use plain JDBC with few more codelines and plain SQL that you can write best! It will reduce size of your application hundred times and increase performance at least as twice, no mention perfect maintainability of code, since it is small, easy, simple and very well understandable to anybody.&lt;br /&gt;&lt;br /&gt;Apache Derby is the last thing you need. It is actually IBM Cloudscape, if you remember one. Amount of bugs is so big and it coded so nasty, that to open source and change its name is the only way to hope someone will use it. At performance it is slowest and footprint is twice bigger than H2. Additionally, database might get easily corrupted or just suddenly stop booting. Apache Derby is "No Go" for you and you want to avoid it.&lt;br /&gt;&lt;br /&gt;Happy New Year! :)&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Update:&lt;/span&gt; Hooray, I have an alpha version of my "Better Time Machine © :-)" working! And it works really amazing for me: saves disk space, fast, customizable, yet very simple in use. I am going to put it on public domain, once I am sure it will not break &lt;span style="font-style: italic;"&gt;your&lt;/span&gt; backups. :-)&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Some more update:&lt;/span&gt; db4o is not 30Mb footprint, sorry. So do not think about it. :-)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/602769459329747644-8717579741405748208?l=maryniuk.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://maryniuk.blogspot.com/feeds/8717579741405748208/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=602769459329747644&amp;postID=8717579741405748208' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/602769459329747644/posts/default/8717579741405748208'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/602769459329747644/posts/default/8717579741405748208'/><link rel='alternate' type='text/html' href='http://maryniuk.blogspot.com/2009/01/embedded-databases-in-java.html' title='Embedded Databases in Java'/><author><name>BM</name><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-602769459329747644.post-4970152889203836310</id><published>2009-01-02T00:08:00.004+09:00</published><updated>2009-01-06T11:04:08.628+09:00</updated><title type='text'>Better Time Machine</title><content type='html'>I was very upset by an Apple Time Machine. Looks like Apple has no idea how to be loser-friendly. Suppose, you have a Mac and all your data Time Machine put in your external USB hard drive. Now your Mac is very dead. What you suppose to do with your hard drive?.. Your friend with Windows will not be able to read the drive. Your another friend with OpenSolaris installed with shrug and ask "You want me format this thing?". Well, yes, you can mount HFS+ in Linux if support of this file system is in certain distribution or if you install MacDrive third-party software on Windows. After that you will find something very same what &lt;a href="http://www.rsnapshot.org/"&gt;rsnapshot&lt;/a&gt; does for years to everyone over the world. That's great, but still: how to backup my Linux desktop? How about those, who on Windows? — see, rsync is not very good idea and is not meant to work on Windows, although there is &lt;a href="http://www.itefix.no/i2/node/10650"&gt;cwRsync&lt;/a&gt; thing.&lt;br /&gt;&lt;br /&gt;The whole idea of backups is to restore your data &lt;span style="font-weight: bold;"&gt;AS SOON AS POSSIBLE WITH ANY DEVICE YOU HAVE&lt;/span&gt;. It might be Nokia Tablet or that useless Asus Eee PC with custom Linux or very limited Windows XP inside, it might be an OpenSolaris laptop (hell, why not?) etc.&lt;br /&gt;&lt;br /&gt;So when I wanted to setup some backup solution for my heterogeneous desktops at my home to make same backups to one standard place, I did not find anything good on freshmeat.net and sourceforge.net as well. These things are usually too complicated and over-engineered or they're just closed source freeware with free licence. To buy a proprietary software by a geek with more than 10 computers at home?.. WTF?..&lt;br /&gt;&lt;br /&gt;Shortly, it took for me 5 hours to write a core for my own thing, like Apple Time Machine, from very scratch. It supports any sort of Network Attached Storages without any nasty hacks (iTimeMachine comes in mind) as well as support flash memory cards, USB drives etc. It supports anything anywhere, because it is, simply saying, stores files into a folder you choose. Simply mount your writable share (or "map to a drive" in windozers language) and point software to it.&lt;br /&gt;&lt;br /&gt;Backups are just regular ZIP files. Every more-less useful OS has unzip thing, even already dead BeOS or not-yet-born Haiku OS. So as long as you've mounted your drive or flash card to any device (let's say it is FAT32, readable by mostly everything on this planet), you're completely safe to read it by something else at any time with standard tools.&lt;br /&gt;&lt;br /&gt;To save your space in storage, it makes incremental backups, of course. First time it makes full backup, storing everything to ZIP file. Compression is optional, but preferred to save your disk space, since smallest ZIP file with few bytes file inside takes nearly 4Kb. However, you may turn compression off, in the case if your machine does not really likes CPU load and you want just to store your files in one file, like a Tar. Again, on my MacBook 2.16GHz Intel Core 2 Duo it performs very nice with full compression and saves lots of space (unlike Apple Time Machine). Next backups contains only new or changed files. To restore all your environment, once your Mac died and you have none of &lt;a href="http://images.apple.com/macosx/features/images/timemachine_gallery01_20071016.jpg"&gt;pimp GUI&lt;/a&gt;, just simply unzip base ZIP file, then take latest update ZIP file and unzip on top of it, overwriting previous files from base ZIP. You're done!&lt;br /&gt;&lt;br /&gt;I am going to put GUI on top of it and make it more fancy and easy to use for users. Basically, it will ask you what to backup where and that's pretty it. Everything else it will decide by itself automatically. To restore files, users will see something very similar to Mac OS X Finder and simply point to the missing file. I do not have finished concept of the GUI for file restore, but I want to do it very intuitive and simple.&lt;br /&gt;&lt;br /&gt;Since all stuff is written in Java, it is already working on Linux, Windows and OpenSolaris as well. So for those, who needs personal backup system on other desktop — this stuff might be useful. I am going to keep it very tiny, throwing all the bloatware, that is very typical for Java programs. Will see what we will get finally... :-)&lt;br /&gt;&lt;br /&gt;Ugghh... Apple... :-(&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/602769459329747644-4970152889203836310?l=maryniuk.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://maryniuk.blogspot.com/feeds/4970152889203836310/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=602769459329747644&amp;postID=4970152889203836310' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/602769459329747644/posts/default/4970152889203836310'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/602769459329747644/posts/default/4970152889203836310'/><link rel='alternate' type='text/html' href='http://maryniuk.blogspot.com/2009/01/better-time-machine.html' title='Better Time Machine'/><author><name>BM</name><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-602769459329747644.post-4495575285513530475</id><published>2009-01-01T12:51:00.003+09:00</published><updated>2009-01-01T13:01:33.723+09:00</updated><title type='text'>Apple Safari is a disaster browser</title><content type='html'>Well, after long time trying to use Apple Safari exclusively (WebKit too), trying to love it as much as possible etc, I've concluded finally: this is a &lt;span style="font-weight: bold;"&gt;disaster browser&lt;/span&gt;, if we talk about &lt;span style="font-weight: bold;"&gt;memory management&lt;/span&gt;. It will eat all your memory available and will constantly read your hard drive (I guess, for swap space). The more you use it, the less memory you have. In my case, if I open 20 or more tabs and try see output of &lt;span style="font-style: italic;"&gt;fs_usage&lt;/span&gt;, almost only Safari process is seen and it is doing something by accessing my disk for some strange reasons. Sometimes hard drive is going so mad that everything is "frozen" and Safari desperatively reading and writing something.&lt;br /&gt;&lt;br /&gt;I've took Firefox 3 and it is much much better in this aspect. Additionally, I can not normally make a posting to this blog, using Safari anyway.&lt;br /&gt;&lt;br /&gt;P.S. iChat is also &lt;span style="font-weight: bold;"&gt;disaster chat&lt;/span&gt;, so I use Adium instead. And IRC, recently...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/602769459329747644-4495575285513530475?l=maryniuk.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://maryniuk.blogspot.com/feeds/4495575285513530475/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=602769459329747644&amp;postID=4495575285513530475' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/602769459329747644/posts/default/4495575285513530475'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/602769459329747644/posts/default/4495575285513530475'/><link rel='alternate' type='text/html' href='http://maryniuk.blogspot.com/2009/01/apple-safari-is-disaster-browser.html' title='Apple Safari is a disaster browser'/><author><name>BM</name><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-602769459329747644.post-83738414702756722</id><published>2008-12-23T15:16:00.001+09:00</published><updated>2008-12-23T15:16:24.854+09:00</updated><title type='text'>Tokyo Winter</title><content type='html'>&lt;div style="text-align: left; padding: 3px;"&gt;&lt;a href="http://www.flickr.com/photos/marblebutterfly/3130274402/" title="photo sharing"&gt;&lt;img src="http://farm4.static.flickr.com/3213/3130274402_ef1b704da4.jpg" style="border: solid 2px #000000;" alt="" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="font-size: 0.8em; margin-top: 0px;"&gt;&lt;a href="http://www.flickr.com/photos/marblebutterfly/3130274402/"&gt;Tokyo Winter&lt;/a&gt;, originally uploaded by &lt;a href="http://www.flickr.com/people/marblebutterfly/"&gt;I.S.B.M.&lt;/a&gt;.&lt;/span&gt;&lt;/div&gt;&lt;p&gt;That's how Winter in Tokyo looks like. No snow, no ice, no trembling dogs near metro stations.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/602769459329747644-83738414702756722?l=maryniuk.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://maryniuk.blogspot.com/feeds/83738414702756722/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=602769459329747644&amp;postID=83738414702756722' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/602769459329747644/posts/default/83738414702756722'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/602769459329747644/posts/default/83738414702756722'/><link rel='alternate' type='text/html' href='http://maryniuk.blogspot.com/2008/12/tokyo-winter.html' title='Tokyo Winter'/><author><name>BM</name><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><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://farm4.static.flickr.com/3213/3130274402_ef1b704da4_t.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-602769459329747644.post-5761773941422273460</id><published>2008-10-04T13:13:00.003+09:00</published><updated>2008-10-04T13:20:02.529+09:00</updated><title type='text'>OpenOffice.org 3 Release Candidate 2 on Mac OSX</title><content type='html'>Just installed OpenOffice.org Release Candidade 2 on my Mac, where I am running Leopard 10.5.5. I was really surprised when it starts just within 4.03 seconds! In compare to Microsoft Office 2008, it takes really a long time to make it start and open some document.&lt;br /&gt;&lt;br /&gt;Check it out: http://porting.openoffice.org/mac/download/aqua-Intel.html&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/602769459329747644-5761773941422273460?l=maryniuk.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://maryniuk.blogspot.com/feeds/5761773941422273460/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=602769459329747644&amp;postID=5761773941422273460' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/602769459329747644/posts/default/5761773941422273460'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/602769459329747644/posts/default/5761773941422273460'/><link rel='alternate' type='text/html' href='http://maryniuk.blogspot.com/2008/10/openofficeorg-3-release-candidate-2-on.html' title='OpenOffice.org 3 Release Candidate 2 on Mac OSX'/><author><name>BM</name><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-602769459329747644.post-3599481348927509695</id><published>2008-10-03T11:32:00.003+09:00</published><updated>2008-10-03T12:42:38.877+09:00</updated><title type='text'>Proxy And Java Web Start</title><content type='html'>When running on client environent, Java Web Start is using JavaScript PAC file (proxy auto-config), completely ignoring system environment settings, for example, like "&lt;i&gt;(protocol)&lt;/i&gt;.&lt;code&gt;nonProxyHosts&lt;/code&gt;" etc. In my case, users are not authorized to change their own default proxy settings and everybody are enforced to use some specific address.&lt;br /&gt;&lt;br /&gt;The problem occurs, when you need something, like a different port for a web service that is running with SSL. In that case Proxy server will return an error, encouraging client to connect only through defined ports.&lt;br /&gt;&lt;br /&gt;Here is a cure how to turn off proxy settings within Java Web Start, having no deal with the system configuration (including &lt;code&gt;javaws.cfg&lt;/code&gt;):&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;ProxySelector.setDefault(&lt;b&gt;new&lt;/b&gt; ProxySelector() {&lt;br /&gt;    @Override&lt;br /&gt;    &lt;b&gt;public&lt;/b&gt; List&amp;lt;Proxy&amp;gt; &lt;b&gt;select&lt;/b&gt;(URI uri) {&lt;br /&gt;        List&amp;lt;Proxy&amp;gt; proxyList = &lt;b&gt;new&lt;/b&gt; ArrayList&amp;lt;Proxy&amp;gt;();&lt;br /&gt;        proxyList.add(Proxy.NO_PROXY);&lt;br /&gt;        &lt;span style="font-weight: bold;"&gt;return&lt;/span&gt; proxyList;&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    @Override&lt;br /&gt;    &lt;span style="font-weight: bold;"&gt;public&lt;/span&gt; &lt;span style="font-weight: bold;"&gt;void&lt;/span&gt; connectFailed(URI uri,&lt;br /&gt;                             SocketAddress socketAddress,&lt;br /&gt;                             IOException ioException) {&lt;br /&gt;    }&lt;br /&gt;});&lt;/pre&gt;&lt;br /&gt;The object &lt;i&gt;ProxySelector&lt;/i&gt; is a global object that is used by all the handlers. Now in this case it will return a default Proxy object that is &lt;code&gt;DIRECT&lt;/code&gt; connection. It is equivalent to setting &lt;code&gt;javaws.cfg.proxy.setting=NONE&lt;/code&gt; in &lt;code&gt;javaws.cfg&lt;/code&gt; file.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/602769459329747644-3599481348927509695?l=maryniuk.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://maryniuk.blogspot.com/feeds/3599481348927509695/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=602769459329747644&amp;postID=3599481348927509695' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/602769459329747644/posts/default/3599481348927509695'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/602769459329747644/posts/default/3599481348927509695'/><link rel='alternate' type='text/html' href='http://maryniuk.blogspot.com/2008/10/proxy-and-java-web-start.html' title='Proxy And Java Web Start'/><author><name>BM</name><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-602769459329747644.post-8445398816495198199</id><published>2008-09-26T20:19:00.003+09:00</published><updated>2008-09-26T20:30:17.424+09:00</updated><title type='text'>Writing a Standalone Client For Secure Web Service</title><content type='html'>Today I was puzzled writing a standalone Java client (going to be Swing app) that "talks" to the remote server, which serves a secure Web Service. Looking around various blogs and other stuff, I made it. It even works as expected. :-) &lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;But I want now put it all together to make it very clear and up to date. The process is all undocumented properly and successfully allows everybody hit the wall with the forehead. Therefore, to avoid others had the same sad experience googling around for a half a day, soon I am going to make a end-to-end document with a screenshots and detail explanations.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Uugghhh... Now is Friday and 8:30PM. Maybe tomorrow...&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/602769459329747644-8445398816495198199?l=maryniuk.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://maryniuk.blogspot.com/feeds/8445398816495198199/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=602769459329747644&amp;postID=8445398816495198199' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/602769459329747644/posts/default/8445398816495198199'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/602769459329747644/posts/default/8445398816495198199'/><link rel='alternate' type='text/html' href='http://maryniuk.blogspot.com/2008/09/writing-standalone-client-for-secure.html' title='Writing a Standalone Client For Secure Web Service'/><author><name>BM</name><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-602769459329747644.post-7500859347193814900</id><published>2008-09-25T10:20:00.003+09:00</published><updated>2008-09-25T10:45:42.449+09:00</updated><title type='text'>Writing a Secure Swing Client For a Web Service</title><content type='html'>Using NetBenans IDE, I've tried to write a Swing GUI client for a secure web service that I've made. While web-based servlet works great, Swing standalone application spits weird errors and won't even run. One of the interesting exceptions is:&lt;br /&gt;&lt;pre&gt;javax.xml.ws.soap.SOAPFaultException: ERROR: No security header found in the message&lt;br /&gt;...&lt;/pre&gt;The problem is that NetBeans is using "old" JAX-WS libraries instead using WSIT. Solution is to remove all the JAX-WS &lt;version&gt; jar libraries that NetBeans added automatically, when created Web Service Client reference and replace them with the libraries from GlassFish application server.&lt;br /&gt;&lt;br /&gt;To those, who need step-by-step instructions:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;In NetBeans IDE, right-click on the client project and select "Properties". "Project Properties" dialog appears.&lt;/li&gt;&lt;li&gt;From the "Categories" tree at the left side of the dialog, select "Libraries" item.&lt;/li&gt;&lt;li&gt;Remove all the JAX-WS libraries—do not worry, your project is completely broken anyways. :-)&lt;br /&gt;&lt;/li&gt;&lt;li&gt;On the right side of the dialog, click on "Add JAR/Folder" button. "Add JAR/Folder" dialog appears.&lt;/li&gt;&lt;li&gt;Browse to &lt;code&gt;$GLASSFISH_HOME/lib&lt;/code&gt; folder (and subfolders) in order to select all the libraries, listed below.&lt;/li&gt;&lt;li&gt;Click OK.&lt;/li&gt;&lt;li&gt;Have fun. :-)&lt;br /&gt;&lt;/li&gt;&lt;/ol&gt;If everything else is correctly configured (e.g. your X509 and/or SSL cert's etc) then it should work now fine. Here a full list of the libraries you want to add (some of them are in &lt;code&gt;lib/endorsed&lt;/code&gt; subfolder):&lt;br /&gt;&lt;/version&gt;&lt;ul&gt;&lt;li&gt;activation.jar&lt;/li&gt;&lt;li&gt;appserv-deployment-client.jar&lt;/li&gt;&lt;li&gt;appserv-launch.jar&lt;/li&gt;&lt;li&gt;appserv-admin.jar&lt;/li&gt;&lt;li&gt;appserv-ext.jar&lt;/li&gt;&lt;li&gt;appserv-rt.jar&lt;br /&gt;&lt;/li&gt;&lt;li&gt;javaee.jar (oh my...)&lt;/li&gt;&lt;li&gt;webservices-rt.jar&lt;/li&gt;&lt;li&gt;webservices-tools.jar&lt;/li&gt;&lt;li&gt;webservices-api.jar&lt;/li&gt;&lt;/ul&gt;It will eat you 34 megabytes of disk space and 40 megabytes when running. While it looks fat, still I am much more satisfied using Swing over Java Web Start (JNLP) rather than use web browser based DHTML pages (current buzzword for DHTML now is "Ajax"). Ajax UI "eats" much more memory actually. It is significant performance problem on the Enterprise, when terminal servers for lots of users are in use.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/602769459329747644-7500859347193814900?l=maryniuk.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://maryniuk.blogspot.com/feeds/7500859347193814900/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=602769459329747644&amp;postID=7500859347193814900' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/602769459329747644/posts/default/7500859347193814900'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/602769459329747644/posts/default/7500859347193814900'/><link rel='alternate' type='text/html' href='http://maryniuk.blogspot.com/2008/09/writing-secure-swing-client-for-web.html' title='Writing a Secure Swing Client For a Web Service'/><author><name>BM</name><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-602769459329747644.post-8589379898504695842</id><published>2008-09-21T23:01:00.003+09:00</published><updated>2008-09-21T23:04:01.760+09:00</updated><title type='text'>16 Million Of Terabytes On a Laptop</title><content type='html'>Apple did great OS! Mac OSX supports 16 million of terabytes of virtual memory on... single small laptop! I am serious. Here is the evidence:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_cl8InCNq5jI/SNZUHUF1bdI/AAAAAAAAAIs/1S5gKQ75PG8/s1600-h/Picture+2.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://3.bp.blogspot.com/_cl8InCNq5jI/SNZUHUF1bdI/AAAAAAAAAIs/1S5gKQ75PG8/s400/Picture+2.png" alt="" id="BLOGGER_PHOTO_ID_5248474900375891410" border="0" /&gt;&lt;/a&gt;Awesome, isn't it? :-)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/602769459329747644-8589379898504695842?l=maryniuk.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://maryniuk.blogspot.com/feeds/8589379898504695842/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=602769459329747644&amp;postID=8589379898504695842' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/602769459329747644/posts/default/8589379898504695842'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/602769459329747644/posts/default/8589379898504695842'/><link rel='alternate' type='text/html' href='http://maryniuk.blogspot.com/2008/09/16-million-of-terabytes-on-laptop.html' title='16 Million Of Terabytes On a Laptop'/><author><name>BM</name><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><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_cl8InCNq5jI/SNZUHUF1bdI/AAAAAAAAAIs/1S5gKQ75PG8/s72-c/Picture+2.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-602769459329747644.post-8562349157815453855</id><published>2008-08-07T01:01:00.007+09:00</published><updated>2008-08-07T09:45:47.172+09:00</updated><title type='text'>Java Swing Balloon Tip</title><content type='html'>I am developing a GUIs with Java Swing. Awesome, everything fine. Now, today I needed something like tool-tip or balloon pop-up to show various messages. In particular, I find that there are no standard form validation framework, so I created one, ripping off ideas from Zope Formulator. And the validation trigger suppose to pop-up a balloon tip when something wrong and focus the widget. That's fine, validation works perfect, unless you need a balloon tip.&lt;br /&gt;&lt;br /&gt;I found one "decent" balloon tip on &lt;a href="https://balloontip.dev.java.net/"&gt;https://balloontip.dev.java.net/&lt;/a&gt; site. Here how it looks like in Windows with Metal L&amp;amp;F: (pic is taken from the site directly):&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_cl8InCNq5jI/SJnUKLpMfFI/AAAAAAAAAIU/jSYgJttCT2E/s1600-h/balloontip-screenshot_2007-05-14.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://4.bp.blogspot.com/_cl8InCNq5jI/SJnUKLpMfFI/AAAAAAAAAIU/jSYgJttCT2E/s400/balloontip-screenshot_2007-05-14.png" alt="" id="BLOGGER_PHOTO_ID_5231445713556896850" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Well, it's OK. It's Windows and mostly everything looks ugly there even in Vista, so a combination of blue frame on bluish gray with a squarish hint might be OK for environment that lacks taste and design. But what about Mac? — yeah, I am snob-like a--hole here, sorry. OK, what about Gnome or KDE on Linux and/or Sun Solaris? Windows is not the only OS these days anymore. So here how the whole thing looks like in Mac:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_cl8InCNq5jI/SJnVDaI0aWI/AAAAAAAAAIc/teuBAY4EJF0/s1600-h/Picture+2.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://1.bp.blogspot.com/_cl8InCNq5jI/SJnVDaI0aWI/AAAAAAAAAIc/teuBAY4EJF0/s400/Picture+2.png" alt="" id="BLOGGER_PHOTO_ID_5231446696700176738" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Notice ugly corners and quite crappy close button, not mention that a close button does not fits into a balloon tip paradigm. Well, my double-advice to all Java developers who sticks on Windows platform &lt;span style="font-style: italic;"&gt;(there are two messages in one)&lt;/span&gt;: &lt;span style="font-weight: bold;"&gt;&lt;br /&gt;&lt;br /&gt;People, &lt;span style="font-size:180%;"&gt;PLEASE&lt;/span&gt; install Linux and/or Solaris to make sure you are &lt;span style="font-size:180%;"&gt;NOT&lt;/span&gt; providing funny things!..&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;*sigh*&lt;br /&gt;&lt;br /&gt;So and now this is how it should look like &lt;span style="font-style: italic;"&gt;(took for me less than two hours to rework entire source code, throwing lots of things)&lt;/span&gt;:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_cl8InCNq5jI/SJnV9fniiyI/AAAAAAAAAIk/qW4258qBCso/s1600-h/Picture+1.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://3.bp.blogspot.com/_cl8InCNq5jI/SJnV9fniiyI/AAAAAAAAAIk/qW4258qBCso/s400/Picture+1.png" alt="" id="BLOGGER_PHOTO_ID_5231447694603619106" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Now I am happy. :-)&lt;br /&gt;&lt;br /&gt;P.S. And yes, it does not need a close button — just click on it...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/602769459329747644-8562349157815453855?l=maryniuk.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://maryniuk.blogspot.com/feeds/8562349157815453855/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=602769459329747644&amp;postID=8562349157815453855' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/602769459329747644/posts/default/8562349157815453855'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/602769459329747644/posts/default/8562349157815453855'/><link rel='alternate' type='text/html' href='http://maryniuk.blogspot.com/2008/08/java-swing-balloon-tip.html' title='Java Swing Balloon Tip'/><author><name>BM</name><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><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_cl8InCNq5jI/SJnUKLpMfFI/AAAAAAAAAIU/jSYgJttCT2E/s72-c/balloontip-screenshot_2007-05-14.png' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-602769459329747644.post-7765885362178066558</id><published>2008-07-23T12:27:00.006+09:00</published><updated>2008-07-23T12:53:54.120+09:00</updated><title type='text'>Crippled Apple LaF for Java Swing</title><content type='html'>Recently I found very-very unpleasant thing with Apple Look &amp;amp; Feel for Swing on OSX. On &lt;code&gt;JDesktopPane&lt;/code&gt;, to get all the internal frames &lt;code&gt;getAllFrames()&lt;/code&gt; is called. Works fine everywhere except OSX: it does not returns &lt;i&gt;iconified&lt;/i&gt; frames. The reason, because they are not &lt;code&gt;JInternalFrame.JDesktopIcon&lt;/code&gt; instances as normally everybody else in the World does, but are &lt;code&gt;apple.laf.CUIAquaInternalFramePane.Dock&lt;/code&gt; instead. WTF?.. At first, I wanted to abandon OSX LaF and use something else instead. But "Substance" release that works on Java 5 is hell buggy and still very ugly on the same Java 5. New Nimbus LaF is really cool, look great, works and feels awesome, but... looks like an alien in OSX reminding me all this GTK things with X11. Additionally, it does not run on Java 5 at all.&lt;br /&gt;&lt;br /&gt;Why Java 5? Yes, it is old, but thanks to (inaudible) Apple, there is no Java 6 on Tiger that the whole thing should &lt;span style="font-weight: bold;"&gt;also&lt;/span&gt; run. In fact, Apple LaF is the best for Java 5, allows font anti-aliasing, behaves correctly as OSX app should and overall looks great, so I do not really want to abandon entire LaF either.&lt;br /&gt;&lt;br /&gt;Thus ss a consequence, to get code working everywhere without tweaks and if/else uglyness to detect what platform it runs on, I had to implement my own window tracker.&lt;br /&gt;&lt;br /&gt;* * *&lt;br /&gt;&lt;br /&gt;Works fine, but still pisses developers off, when everybody have to have dozen workarounds or class extensions to fix here/there various "broken bones".&lt;br /&gt;&lt;br /&gt;Apple wants to go Enterprise? Steve, which object of your body you use when you are thinking about Java versions interoperability (an enterprise industry standard, no matter somebody wants to accept it or not) between OSX versions? So what should I do if I have heterogeneous environment with various Macs and PCs and want to go with less old stuff (soon we will have Java 7, while Apple is enforcing me to use Java 4 or even 4)?.. Right: throw macs away from the Enterprise, because they are not compatible between each other, install PCs and bite yourself for other things they brings to you... But to get rid of most advanced desktop OSX workstations is what I definitely do NOT want to do either.&lt;br /&gt;&lt;br /&gt;Very stupid.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/602769459329747644-7765885362178066558?l=maryniuk.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://maryniuk.blogspot.com/feeds/7765885362178066558/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=602769459329747644&amp;postID=7765885362178066558' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/602769459329747644/posts/default/7765885362178066558'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/602769459329747644/posts/default/7765885362178066558'/><link rel='alternate' type='text/html' href='http://maryniuk.blogspot.com/2008/07/crippled-apple-laf-for-java-swing.html' title='Crippled Apple LaF for Java Swing'/><author><name>BM</name><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-602769459329747644.post-4988872146751774247</id><published>2008-07-05T19:58:00.003+09:00</published><updated>2008-07-05T20:05:30.103+09:00</updated><title type='text'>HDR Image</title><content type='html'>This is my very first HDR image:&lt;div&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp0.blogger.com/_cl8InCNq5jI/SG9T3sddYfI/AAAAAAAAAIM/d58hbqzqx6k/s1600-h/rezult.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;" src="http://bp0.blogger.com/_cl8InCNq5jI/SG9T3sddYfI/AAAAAAAAAIM/d58hbqzqx6k/s400/rezult.jpg" border="0" alt="" id="BLOGGER_PHOTO_ID_5219482709438325234" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;Nothing really special, except that I found (once again) for buying cheap stuff is always equals to losing your money. In my case I bought a cheap tripod. As a result, HDR image is not really crisp and sharp, because camera slightly change position per each frame. :-(&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/602769459329747644-4988872146751774247?l=maryniuk.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://maryniuk.blogspot.com/feeds/4988872146751774247/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=602769459329747644&amp;postID=4988872146751774247' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/602769459329747644/posts/default/4988872146751774247'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/602769459329747644/posts/default/4988872146751774247'/><link rel='alternate' type='text/html' href='http://maryniuk.blogspot.com/2008/07/hdr-image.html' title='HDR Image'/><author><name>BM</name><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><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp0.blogger.com/_cl8InCNq5jI/SG9T3sddYfI/AAAAAAAAAIM/d58hbqzqx6k/s72-c/rezult.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-602769459329747644.post-2978960080515971869</id><published>2008-06-22T15:50:00.007+09:00</published><updated>2008-06-22T16:09:16.065+09:00</updated><title type='text'>Screenshots Series</title><content type='html'>Few funny (or not) screenshots I took recently.&lt;br /&gt;&lt;br /&gt;First one — Sun Solaris 10 installation. I did not noticed it much before, but that's how bad design of UI installers done. The question is: why do I need to see &lt;span style="font-weight: bold;"&gt;huge&lt;/span&gt; Solaris logo &lt;span style="font-weight: bold;"&gt;twice&lt;/span&gt; and who needs to read stupid useless incomplete Help hint that says for to go to next screen I have have to click on button "next"? Who need this screen and why there are no any functionality on it? They could use this amount of space to do something actually useful: agree to licence or start selecting components etc. No, instead you see this:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp1.blogger.com/_cl8InCNq5jI/SF32av68n-I/AAAAAAAAAHU/aN1c6eQeGIE/s1600-h/Picture+1.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp1.blogger.com/_cl8InCNq5jI/SF32av68n-I/AAAAAAAAAHU/aN1c6eQeGIE/s320/Picture+1.png" alt="" id="BLOGGER_PHOTO_ID_5214594882965643234" border="0" /&gt;&lt;/a&gt;You think it is only this one screen? No. If you go through entire Solaris installation (that is unable to complete on my hardware, unfortunately) you will see lots of things like this everywhere. Instead, OpenSolaris looks indeed very promising and actually cool. Some people have complains for packaging, but that's other topic. :-)&lt;br /&gt;&lt;br /&gt;The next one is on Dell website. Not much comment for this new Linux logo on the left side:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp0.blogger.com/_cl8InCNq5jI/SF33tDDRUEI/AAAAAAAAAHc/9HEOAOCu1AE/s1600-h/Picture+2.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp0.blogger.com/_cl8InCNq5jI/SF33tDDRUEI/AAAAAAAAAHc/9HEOAOCu1AE/s320/Picture+2.png" alt="" id="BLOGGER_PHOTO_ID_5214596296850100290" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;The third one is from apple.com and is interesting. On the site with series of video-based "howto" is a title: "Find out how". While watching a movie, I captured this frame that shows interesting combination. The only question is: find out how what... If the context is "how to configure XRaid with XServer and find why it always does not works properly", then the answer is probably just in front of you on the cover-flow... :-)&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp0.blogger.com/_cl8InCNq5jI/SF34I-0eRFI/AAAAAAAAAHk/tg4_xSzeD6M/s1600-h/Picture+3.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp0.blogger.com/_cl8InCNq5jI/SF34I-0eRFI/AAAAAAAAAHk/tg4_xSzeD6M/s320/Picture+3.png" alt="" id="BLOGGER_PHOTO_ID_5214596776750629970" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/602769459329747644-2978960080515971869?l=maryniuk.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://maryniuk.blogspot.com/feeds/2978960080515971869/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=602769459329747644&amp;postID=2978960080515971869' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/602769459329747644/posts/default/2978960080515971869'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/602769459329747644/posts/default/2978960080515971869'/><link rel='alternate' type='text/html' href='http://maryniuk.blogspot.com/2008/06/screenshots-series.html' title='Screenshots Series'/><author><name>BM</name><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><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp1.blogger.com/_cl8InCNq5jI/SF32av68n-I/AAAAAAAAAHU/aN1c6eQeGIE/s72-c/Picture+1.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-602769459329747644.post-8290946931771558392</id><published>2008-06-22T15:46:00.003+09:00</published><updated>2008-06-22T15:48:11.607+09:00</updated><title type='text'>L337 h4x0r spam</title><content type='html'>I've JUST created new mailbox... And it already got L337 amount of spam crap... :-(&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp2.blogger.com/_cl8InCNq5jI/SF31Zx0wmaI/AAAAAAAAAHM/e1qLkmSXgYI/s1600-h/Picture+1.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp2.blogger.com/_cl8InCNq5jI/SF31Zx0wmaI/AAAAAAAAAHM/e1qLkmSXgYI/s320/Picture+1.png" alt="" id="BLOGGER_PHOTO_ID_5214593766785063330" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/602769459329747644-8290946931771558392?l=maryniuk.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://maryniuk.blogspot.com/feeds/8290946931771558392/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=602769459329747644&amp;postID=8290946931771558392' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/602769459329747644/posts/default/8290946931771558392'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/602769459329747644/posts/default/8290946931771558392'/><link rel='alternate' type='text/html' href='http://maryniuk.blogspot.com/2008/06/l337-h4x0r-spam.html' title='L337 h4x0r spam'/><author><name>BM</name><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><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp2.blogger.com/_cl8InCNq5jI/SF31Zx0wmaI/AAAAAAAAAHM/e1qLkmSXgYI/s72-c/Picture+1.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-602769459329747644.post-650350119218189858</id><published>2008-06-22T15:31:00.006+09:00</published><updated>2008-06-22T15:46:08.832+09:00</updated><title type='text'>Beautifully Engineered Opera 9.5</title><content type='html'>I wisited opera.com for an update for Opera browser that likely "won" Acid 3 test from Safari. The website says:&lt;br /&gt;&lt;p&gt;&lt;i&gt;&lt;span style="font-weight: bold;"&gt;beautifully engineered&lt;/span&gt;&lt;br /&gt;Discover the new standard in Web browsing. Download Opera today to get the fastest and most powerful Web browser available and make the most of your time online.&lt;/i&gt;&lt;/p&gt;&lt;p&gt;However, after removing fugly opera's default "Macintosh native" skin and replacing it with something that actually tries to resemble Cocoa, the real beauty looks like this:&lt;/p&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp1.blogger.com/_cl8InCNq5jI/SF3x1MjuMZI/AAAAAAAAAHE/a-YF2fWLAQg/s1600-h/Picture+3.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp1.blogger.com/_cl8InCNq5jI/SF3x1MjuMZI/AAAAAAAAAHE/a-YF2fWLAQg/s320/Picture+3.png" alt="" id="BLOGGER_PHOTO_ID_5214589839771316626" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;I understand it is still better than recently released Firefox 3. But... yet, Opera, you need to try harder... Me? I am just fine with WebKit (Safari) on Mac that is fastest and gets 100/100 with no any problems &lt;span style="font-style: italic;"&gt;(grin here)&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;P.S. The "winner" of Acid 3 was actually Opera 9.0 for some weird reasons...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/602769459329747644-650350119218189858?l=maryniuk.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://maryniuk.blogspot.com/feeds/650350119218189858/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=602769459329747644&amp;postID=650350119218189858' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/602769459329747644/posts/default/650350119218189858'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/602769459329747644/posts/default/650350119218189858'/><link rel='alternate' type='text/html' href='http://maryniuk.blogspot.com/2008/06/beautifully-engineered-opera-95.html' title='Beautifully Engineered Opera 9.5'/><author><name>BM</name><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><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp1.blogger.com/_cl8InCNq5jI/SF3x1MjuMZI/AAAAAAAAAHE/a-YF2fWLAQg/s72-c/Picture+3.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-602769459329747644.post-4107997926369358745</id><published>2008-06-10T00:21:00.004+09:00</published><updated>2008-06-10T00:26:07.702+09:00</updated><title type='text'>Salute To Cisco VPN</title><content type='html'>I just ran &lt;code&gt;find / -perm +00002 -ls &gt; /tmp/world-write&lt;/code&gt; and among other crap I found this hilarious thing:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;731350  0 drwxrwxrwx 13 root wheel &lt;br /&gt;/etc/opt/cisco-vpnclient&lt;br /&gt;&lt;br /&gt;3731351 0 drwxrwxrwx 49 root wheel &lt;br /&gt;/etc/opt/cisco-vpnclient/Certificates&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Great installation, Cisco!&lt;br /&gt;&lt;br /&gt;*morons* :-(&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/602769459329747644-4107997926369358745?l=maryniuk.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://maryniuk.blogspot.com/feeds/4107997926369358745/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=602769459329747644&amp;postID=4107997926369358745' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/602769459329747644/posts/default/4107997926369358745'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/602769459329747644/posts/default/4107997926369358745'/><link rel='alternate' type='text/html' href='http://maryniuk.blogspot.com/2008/06/salute-to-cisco-vpn.html' title='Salute To Cisco VPN'/><author><name>BM</name><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-602769459329747644.post-7349553136058246713</id><published>2008-05-08T12:32:00.007+09:00</published><updated>2008-05-08T15:25:16.970+09:00</updated><title type='text'>Plugins In Java</title><content type='html'>&lt;div&gt;I wanted to implement plugin mechanism in my applications. But the thing is, that the plugins &lt;s&gt;should&lt;/s&gt; could be also a standalone applications with &lt;code&gt;main()&lt;/code&gt; static function inside. This is not very that difficult in principle, just have nice way to do that. Another thing I really want to have, is a call-back mechanism that can get all the arbitrary things, implemented in the parent application. They can be a printing and reporting stuff, authentication, authorization and so on. Finally, I want to have some shared space, where all the plugins can store their arbitrary data and interoperate between each other. What I really do not want to have is a typical bloatware, built on top of some fat framework that does lots of workarounds for specific needs. The thing should be as simple as possible. &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;But the challenge is, that if it would be a, let's say, Groovy or Python, then it is pretty easy to implement is: just pass a class instance. Since it is all dynamic — stuff just works. However, Java is a static language that has lots of goodness over dynamic languages, but also this is the place, where ugly shapes appears too.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;I am not sure I got it completely right, but at least I could shrink entire &lt;a href="http://jpf.sourceforge.net"&gt;http://jpf.sourceforge.net&lt;/a&gt; just up to few methods and thus throw away all the framework with no harm to the functionality.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp1.blogger.com/_cl8InCNq5jI/SCKSVOPJGaI/AAAAAAAAAG0/WT0BKvmrKmo/s1600-h/Callback-implementation-in-java.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;" src="http://bp1.blogger.com/_cl8InCNq5jI/SCKSVOPJGaI/AAAAAAAAAG0/WT0BKvmrKmo/s320/Callback-implementation-in-java.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5197877813235489186" /&gt;&lt;/a&gt;Here above "Plugin Application" is a standalone application that is also a plugin and could be fully acquired by "Base Application". You can run your plugin app, but also you can get it's functionality in the "Base Application" by simply dropping entire JAR file into specified subfolder. That's all it is: just move the JAR and you're done.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;Plugin Application&lt;/span&gt; has a file &lt;code&gt;plugin.properties&lt;/code&gt; that is an XML &lt;span class="Apple-style-span" style="font-style: italic;"&gt;(can not believe for the shame that there are no support for UTF-8 in plain-text properties!!!)&lt;/span&gt; and these props just simply describes what class is main to acquire and how. There also some additional information, like application title, some specific config paths and a menu icon to use. :-)&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;Base Application&lt;/span&gt; simply reads the folder with all the plugins that are subfolders with required libraries and properties file, finds a properties file, parses and registers the plugins. Then once user needs one, launcher actually loads it.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;The most worse part of the whole story is a call-back mechanism. This should be a &lt;span class="Apple-style-span" style="font-style: italic;"&gt;third&lt;/span&gt; external package, that is available for both main application and all the plugins. There are two things: an interface and dummy class that implements basically nothing. Real implementation is inside the main application that inherits that dummy class and implements the interface of the call-back. Base Application passes the type of the dummy class something like this:&lt;/div&gt;&lt;pre&gt;Class paramType [] = {third.external.package.DummyCallback.class};&lt;br /&gt;Class remoteObject = Class.forName("your.remote.object");&lt;br /&gt;Method meth = remoteObject.getMethod("remoteMethod", paramType);&lt;/pre&gt;Above is how you prepare things. Now, call them, where RealCallback class is actually an instance of implemented call-back. In this example I create new one on the fly, but probably in your application it is commonly accessed field that has better constructor and does some real things:&lt;br /&gt;&lt;pre&gt;Object params [] = {new ReallCallback()};&lt;br /&gt;meth.invoke(remoteObject.newInstance(), params);&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;That's it. Base Application has been found remote object, a method and invoked it. Now, on the other side of the whole chain, the following thing is done:&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;pre&gt;import third.external.package.DummyCallback;&lt;br /&gt;public void remoteMethod(DummyCallback callback) {&lt;br /&gt;    callback.dosomething();&lt;br /&gt;}&lt;/pre&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;This is probably the whole idea that already works for me pretty fine.&lt;/div&gt;&lt;div&gt;&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/602769459329747644-7349553136058246713?l=maryniuk.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://maryniuk.blogspot.com/feeds/7349553136058246713/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=602769459329747644&amp;postID=7349553136058246713' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/602769459329747644/posts/default/7349553136058246713'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/602769459329747644/posts/default/7349553136058246713'/><link rel='alternate' type='text/html' href='http://maryniuk.blogspot.com/2008/05/plugins-in-java.html' title='Plugins In Java'/><author><name>BM</name><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><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp1.blogger.com/_cl8InCNq5jI/SCKSVOPJGaI/AAAAAAAAAG0/WT0BKvmrKmo/s72-c/Callback-implementation-in-java.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-602769459329747644.post-3489231557478150182</id><published>2008-05-07T16:47:00.004+09:00</published><updated>2008-05-07T16:56:33.747+09:00</updated><title type='text'>NetBeans 6.1 on OSX</title><content type='html'>Decided to try NetBeans 6.1 Final.&lt;div&gt;Shortly: everything fine, except one very disturbing thing that makes entire IDE dead. Right after default installation, IDE runs fine. But I've decided to put all required extensions and after restart IDE refused to run, saying that some buggy Xalan version appeared in IDE's class path, sending me to the Wiki, where I've got very strange suggestion to cripple my entire JRE by removing a Xalan from there.&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Since this problem appeared after modules installation, obviously, some module brought it to me in addition. Real "Bad Guy ©" appeared in my &lt;code&gt;~/.netbeans/6.1/ext/&lt;/code&gt; directory. After removing it away, everything runs fine. But ugly crap remains: after this one removed, IDE's class path overall still contains few &lt;code&gt;xalan.jar&lt;/code&gt; files, that are just different versions.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;No idea where it belonged to, but was too lazy to figure out. :-)&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/602769459329747644-3489231557478150182?l=maryniuk.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://maryniuk.blogspot.com/feeds/3489231557478150182/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=602769459329747644&amp;postID=3489231557478150182' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/602769459329747644/posts/default/3489231557478150182'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/602769459329747644/posts/default/3489231557478150182'/><link rel='alternate' type='text/html' href='http://maryniuk.blogspot.com/2008/05/netbeans-61-on-osx.html' title='NetBeans 6.1 on OSX'/><author><name>BM</name><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-602769459329747644.post-391084588771387172</id><published>2008-05-01T10:14:00.002+09:00</published><updated>2008-05-01T10:18:29.495+09:00</updated><title type='text'>Hacker Key</title><content type='html'>We do all remember Geek Code, that is somewhat now not updated for a long time. More neat toy for geeks appeared: a &lt;a href="http://www.hackerkey.com/"&gt;Hacker Key&lt;/a&gt; that looks kinda interesting. You can take a walk through generator of the &lt;a href="http://www.hackerkey.com/"&gt;Hacker Key&lt;/a&gt; or decrypt someone's.&lt;br /&gt;&lt;br /&gt;Here is my hacker key:&lt;br /&gt;&lt;a href="http://www.hackerkey.com/decrypt.php?hackerkey=v4sw7JUYhw4ln3pr7AOck4ma3u7BLMNOSw2m7l5ADEFRUVi63Ce4t3b4Len9a3Xs0r5g3"&gt;v4sw7JUYhw4ln3pr7AOck4ma3u7BLMNOSw2m7l5ADEFRUVi63Ce4t3b4Len9a3Xs0r5g3&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/602769459329747644-391084588771387172?l=maryniuk.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://maryniuk.blogspot.com/feeds/391084588771387172/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=602769459329747644&amp;postID=391084588771387172' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/602769459329747644/posts/default/391084588771387172'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/602769459329747644/posts/default/391084588771387172'/><link rel='alternate' type='text/html' href='http://maryniuk.blogspot.com/2008/05/hacker-key.html' title='Hacker Key'/><author><name>BM</name><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-602769459329747644.post-6211027414634057596</id><published>2008-04-17T08:25:00.002+09:00</published><updated>2008-04-17T08:35:02.222+09:00</updated><title type='text'>IBM now loves Macs</title><content type='html'>Interesting point: &lt;a href="http://www.roughlydrafted.com/2008/04/16/ibm-launches-pilot-program-for-migrating-to-macs/"&gt;IBM is now researching what user impact while migrating to Macs&lt;/a&gt;:&lt;div&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-style: italic;"&gt;A summary of the pilot program, detailed in a IBM document obtained by RoughlyDrafted, revealed that IBM is actively working to move away from its dependence upon Microsoft Windows and toward a heterogeneous cross-platform future.&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Wait a second. IBM makes their laptops no more, right? So do not really cares about their future. Personally I am not very sure this move will bring value in a physical items, but this move from IBM, as a father of all PCs is very clear symbolic/spiritual/political/charismatic/call-it-whatever sign to others sign to which way corporate standard shall go.&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;That's pretty much it: no more &lt;s&gt;IBM&lt;/s&gt; Lenovo laptops as &lt;s&gt;corportate&lt;/s&gt; de-facto standard.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&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/602769459329747644-6211027414634057596?l=maryniuk.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://maryniuk.blogspot.com/feeds/6211027414634057596/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=602769459329747644&amp;postID=6211027414634057596' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/602769459329747644/posts/default/6211027414634057596'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/602769459329747644/posts/default/6211027414634057596'/><link rel='alternate' type='text/html' href='http://maryniuk.blogspot.com/2008/04/ibm-now-loves-macs.html' title='IBM now loves Macs'/><author><name>BM</name><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-602769459329747644.post-8718355059222552142</id><published>2008-04-09T21:06:00.003+09:00</published><updated>2008-04-09T21:15:12.363+09:00</updated><title type='text'>Safari 3 passes Acid 3 test</title><content type='html'>&lt;div&gt;Safari 3 passes Acid 3 test. Despite of Opera "won" it faster getting all bits of the test, still it is available only in 9.0 version and still performs more poorly than Safari WebKit. Here I updated the engine of the browser. That's pretty it on a screenshot, nothing else to add:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp3.blogger.com/_cl8InCNq5jI/R_yxVu-vTuI/AAAAAAAAAGs/fM2oQMFW5JY/s1600-h/Picture+2.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;" src="http://bp3.blogger.com/_cl8InCNq5jI/R_yxVu-vTuI/AAAAAAAAAGs/fM2oQMFW5JY/s320/Picture+2.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5187215857770516194" /&gt;&lt;/a&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Safari rulez! :-P&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;The real life still is quite different: MSIE still keeps huge market-share and it still can squeeze only ~17% of the test. Firefox still quite far from the ideal status too. So let's forget about really good AJAX applications and back to the reality... or... Java WebStart?..&lt;/div&gt;&lt;div&gt;&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/602769459329747644-8718355059222552142?l=maryniuk.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://maryniuk.blogspot.com/feeds/8718355059222552142/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=602769459329747644&amp;postID=8718355059222552142' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/602769459329747644/posts/default/8718355059222552142'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/602769459329747644/posts/default/8718355059222552142'/><link rel='alternate' type='text/html' href='http://maryniuk.blogspot.com/2008/04/safari-3-passes-acid-3-test.html' title='Safari 3 passes Acid 3 test'/><author><name>BM</name><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><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp3.blogger.com/_cl8InCNq5jI/R_yxVu-vTuI/AAAAAAAAAGs/fM2oQMFW5JY/s72-c/Picture+2.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-602769459329747644.post-4409631501379843805</id><published>2008-04-06T12:17:00.004+09:00</published><updated>2008-04-06T13:01:42.337+09:00</updated><title type='text'>How To Modify Classpath At Runtime?</title><content type='html'>I am designing a quite large system that one of the user interfaces is based on Java Swing GUI library. Each subsystem is a standalone application itself that can be used separately if appropriate conditions issued, however they also are plugins within the central UI infrastructure.&lt;br /&gt;&lt;br /&gt;If application is standalone, authentication is its own and other applications are not visible. If application is connected as a plugin within the infrastructure, then common authentication mechanism is used and tight integration with other applications appears.&lt;br /&gt;&lt;br /&gt;Whatever, during some investigations, I needed to modify my $CLASSPATH at JVM runtime. For curious people how it is done, here is a source below. Enjoy:&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;import java.io.File;&lt;br /&gt;import java.io.IOException;&lt;br /&gt;import java.lang.reflect.Method;&lt;br /&gt;import java.net.URL;&lt;br /&gt;import java.net.URLClassLoader;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;public class ClassPathModificator {&lt;br /&gt;   private static final Class[] urlParams =&lt;br /&gt;       new Class[]{URL.class};&lt;br /&gt;   public static void appendPath(URL newURL) throws&lt;br /&gt;       IOException {&lt;br /&gt;       URLClassLoader classLoader = (URLClassLoader)&lt;br /&gt;           ClassLoader.getSystemClassLoader();&lt;br /&gt;       try {&lt;br /&gt;           Method meth = URLClassLoader.class.&lt;br /&gt;               getDeclaredMethod("addURL", urlParams);&lt;br /&gt;           meth.setAccessible(true);&lt;br /&gt;           meth.invoke(classLoader, new Object []&lt;br /&gt;           {newURL});&lt;br /&gt;       } catch (Throwable err) {&lt;br /&gt;           throw new IOException();&lt;br /&gt;       }&lt;br /&gt;   }&lt;br /&gt;&lt;br /&gt;   public static void appendPath(String newPath)&lt;br /&gt;       throws IOException {&lt;br /&gt;       appendPath(new File(newPath));&lt;br /&gt;   }&lt;br /&gt;&lt;br /&gt;   public static void appendPath(File fileObj)&lt;br /&gt;       throws IOException {&lt;br /&gt;       appendPath(fileObj.toURL());&lt;br /&gt;   }&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;&lt;br /&gt;&lt;i&gt;P.S. Extremely stupid Blogger's interface does not allows me to make it nicer, so I had to give up colorize the code and had to wrap it that ugly... :-(&lt;/i&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/602769459329747644-4409631501379843805?l=maryniuk.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://maryniuk.blogspot.com/feeds/4409631501379843805/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=602769459329747644&amp;postID=4409631501379843805' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/602769459329747644/posts/default/4409631501379843805'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/602769459329747644/posts/default/4409631501379843805'/><link rel='alternate' type='text/html' href='http://maryniuk.blogspot.com/2008/04/how-to-modify-classpath-at-runtime.html' title='How To Modify Classpath At Runtime?'/><author><name>BM</name><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-602769459329747644.post-2055334347944220223</id><published>2008-03-29T22:43:00.023+09:00</published><updated>2008-04-14T20:04:48.777+09:00</updated><title type='text'>AsiaBSDCon 2008</title><content type='html'>&lt;span style="font-size:130%;"&gt;&lt;span style="font-weight: bold;"&gt;Asia BSD Conference 2008&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;Today, in 水道橋グラヌドホテル (Suidobashi Grand Hotel) was a third day of Asia BSD Conference, 2008. It was full of interesting geeks that came to Tokyo from different places of the Earth. They has been amazed by japanese culture, food, quality and please.&lt;br /&gt;&lt;br /&gt;This is the entrance to the conference (no alcohol, sorry):&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp2.blogger.com/_cl8InCNq5jI/R-5N8--vTpI/AAAAAAAAAGE/edhfq5WUX7E/s1600-h/IMG_0024.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp2.blogger.com/_cl8InCNq5jI/R-5N8--vTpI/AAAAAAAAAGE/edhfq5WUX7E/s320/IMG_0024.jpg" alt="" id="BLOGGER_PHOTO_ID_5183165931243654802" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;This is the real entrance (alcohol and girls included), after the conference:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp1.blogger.com/_cl8InCNq5jI/R-5N4u-vToI/AAAAAAAAAF8/tN-xZrLHFA8/s1600-h/IMG_0023.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp1.blogger.com/_cl8InCNq5jI/R-5N4u-vToI/AAAAAAAAAF8/tN-xZrLHFA8/s320/IMG_0023.jpg" alt="" id="BLOGGER_PHOTO_ID_5183165858229210754" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;There was not so many people, as I could expect, because Japan still mostly bound to Microsoft Windows. Linux and Sun Solaris is only a server-side and Apple Mac only recently got a huge boost in market thanks to well-designed MS Vista that can not even handle properly a 4GB RAM. Thus Mac here getting up to 65% of sales vs 2.5% of Microsoft Vista. The rest is fast and reliable Windows XP that now, after MS Vista everybody started to love. Desperately.&lt;br /&gt;&lt;br /&gt;OK, anyway with the Vista and other things. Here is FreeBSD conference!!! Yay!!!&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;&lt;span style="font-size:130%;"&gt;Brief history&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-style: italic;"&gt;(Note: copied from very truthful source)&lt;/span&gt;. The FreeLSD project was started at Berkeley Community College in Caledonia by a group of devil worshippers who built the first kernel by running the contents of the Necronomicon through a C compiler. The project was so named because of the FreeLSD tradition of giving free LSD to all contributors. However, after the threat of a lawsuit from a competing angel of death, Darl McBride, for stealing his hallucinations of grandeur, the project ceased the practice, and renamed to FreeBSD. Libraries and system tools were later adopted and integrated from other systems such as FreeTIBET, FreeMUMIA, and GNU/Windows.&lt;br /&gt;&lt;br /&gt;Today, FreeBSD is continually being improved by contributors all over the world (and the underworld). Its source code is chanted at black masses and cross-burnings on every continent.&lt;br /&gt;&lt;br /&gt;One of the very interesting part of the FreeBSD system is a UFS, &lt;span style="font-weight: bold;"&gt;the Unholy File System&lt;/span&gt;. It is the native file system of FreeBSD. The most prominent feature of UFS is called 'Soft-updates', which achieves high levels of file I/O performance at the application level by holding pending disk read/write operations up in a kernel buffer for weeks on end while the system solves fourth-order differential equations to figure out which operations can safely be performed first.&lt;br /&gt;&lt;br /&gt;UFS is a replacement for FFS, or FAT File System, which was used in the earliest versions of FreeBSD. The former FFS was known as FAT8 File System, which was later copied by Microsoft and originated FAT16.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-weight: bold;"&gt;Conference and speakers&lt;/span&gt; &lt;/span&gt;As it is very common and usual in FreeBSD world, all technical part was in its the best traditions and spirit: strongly promoting FreeBSD OS, using all advanced recent BSD inventions and technologies, such as Mac OSX, Microsoft Power Point, sometimes Microsoft Windows, and rarely Ubuntu Linux.&lt;br /&gt;&lt;br /&gt;On this conference was also accepted new logo for upcoming FreeBSD 8.0 release:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp0.blogger.com/_cl8InCNq5jI/R-5OSe-vTtI/AAAAAAAAAGk/0nPtb6vjPag/s1600-h/Apple-logo.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp0.blogger.com/_cl8InCNq5jI/R-5OSe-vTtI/AAAAAAAAAGk/0nPtb6vjPag/s320/Apple-logo.png" alt="" id="BLOGGER_PHOTO_ID_5183166300610842322" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;M. Warner Losh (photo below) presents Tracking FreeBSD in a Commercial Setting, using advanced presentation technology, such as Microsoft Power Point and Mac OSX Tiger 10.4.10 (not the very last update, BTW). He strongly believes, that if commercial organizations wishing to use FreeBSD in their products must be aware of this significant policy. And the policy itself supposed that each 3 years FreeBSD OS should be terminated and hardware disposed, replacing with more CPU, more RAM and totally new version of totally new OS release. Kind of cool: no matter what happened, you SHOULD kill you server after 3 years of use, even if version of multi-million Enterprise software supports only &lt;span style="font-style: italic;"&gt;that&lt;/span&gt; version of OS.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp2.blogger.com/_cl8InCNq5jI/R-5Mj--vTgI/AAAAAAAAAE8/6LDR6aNjd6E/s1600-h/IMG_0003.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp2.blogger.com/_cl8InCNq5jI/R-5Mj--vTgI/AAAAAAAAAE8/6LDR6aNjd6E/s320/IMG_0003.jpg" alt="" id="BLOGGER_PHOTO_ID_5183164402235297282" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Here Peter Losher (Internet Systems Consortium, Inc.) is using his totally FreeBSD hardware with manufacturer OS a presentation, that intended to be promote IPv4 bubble, bashing IPv6. No, sorry, maybe opposite... Anyway. His additional friendly statements was completely deny such internet services like BIND, SMTP, XMPP, XXX, PR0N. He also had a 15 minutes to scare people about firewall and security:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp1.blogger.com/_cl8InCNq5jI/R-5Mqu-vThI/AAAAAAAAAFE/oQocXUYU9Ag/s1600-h/IMG_0004.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp1.blogger.com/_cl8InCNq5jI/R-5Mqu-vThI/AAAAAAAAAFE/oQocXUYU9Ag/s320/IMG_0004.jpg" alt="" id="BLOGGER_PHOTO_ID_5183164518199414290" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Once started his speech, Peter was surprised by advanced firewall security of upcoming experimental FreeBSD 9.0 Pre-Alpha, saying: "WTF?", which (I think) probably means "Web The Foundation!":&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp0.blogger.com/_cl8InCNq5jI/R-5NBe-vTkI/AAAAAAAAAFc/cZyfNHXa5BM/s1600-h/IMG_0015.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp0.blogger.com/_cl8InCNq5jI/R-5NBe-vTkI/AAAAAAAAAFc/cZyfNHXa5BM/s320/IMG_0015.jpg" alt="" id="BLOGGER_PHOTO_ID_5183164909041438274" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;The rocket science guy, who actually never used PostgreSQL more than two tables and totally dislikes Trac, still creates his stunning presentation about how those two amazing products advanced technologies and environment, so how can they fit in Enterprise at all it's best:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp1.blogger.com/_cl8InCNq5jI/R-5M3u-vTiI/AAAAAAAAAFM/vRdPIBexYWk/s1600-h/IMG_0005.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp1.blogger.com/_cl8InCNq5jI/R-5M3u-vTiI/AAAAAAAAAFM/vRdPIBexYWk/s320/IMG_0005.jpg" alt="" id="BLOGGER_PHOTO_ID_5183164741537713698" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Jörg Sönnënbërgër (left), an author of German version of ÜFß file system in NetBSD OS with his personal bodyguard Krištopz Dzonsonz (right) from Lathuinia, city of Riga-Vilniškės. He's hobby is to totally bastardize the only still left clean product on the market that is sane and simple by code and design: the NetBSD kernel, re-calling it with very innovative name: MULTIX. The idea is to copy the kernel multiple hundred times on one single machine and call them simultaneously, burning out CPUs and running out of the memory, as it successfully happened on the demo here. More about this fantastic project you can find here: &lt;a href="http://mult.bsd.lv/"&gt;http://mult.bsd.lv&lt;/a&gt;. Codename of the project is "Mooltixux Moolt Moolter". It is all written in the most innovative and clean, aspect-oriented language: Perl and some areas are written in Visual Basic for more visual low-level system support.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp3.blogger.com/_cl8InCNq5jI/R-5NrO-vTnI/AAAAAAAAAF0/xQUEDlntMx0/s1600-h/IMG_0017.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp3.blogger.com/_cl8InCNq5jI/R-5NrO-vTnI/AAAAAAAAAF0/xQUEDlntMx0/s320/IMG_0017.jpg" alt="" id="BLOGGER_PHOTO_ID_5183165626300976754" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Other peaceful folks are trying to get used latest FreeBSD hardware, such as MacBook Air, MacBook Pro and the most free and competitive open-source software from GNU/Microsoft and Debian Symbian:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp0.blogger.com/_cl8InCNq5jI/R-5NPe-vTmI/AAAAAAAAAFs/oO7pCFFZHIs/s1600-h/IMG_0019.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp0.blogger.com/_cl8InCNq5jI/R-5NPe-vTmI/AAAAAAAAAFs/oO7pCFFZHIs/s320/IMG_0019.jpg" alt="" id="BLOGGER_PHOTO_ID_5183165149559606882" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp1.blogger.com/_cl8InCNq5jI/R-5NHu-vTlI/AAAAAAAAAFk/C4Qc-F_QJo8/s1600-h/IMG_0018.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp1.blogger.com/_cl8InCNq5jI/R-5NHu-vTlI/AAAAAAAAAFk/C4Qc-F_QJo8/s320/IMG_0018.jpg" alt="" id="BLOGGER_PHOTO_ID_5183165016415620690" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp0.blogger.com/_cl8InCNq5jI/R-5M8e-vTjI/AAAAAAAAAFU/MJ3uOqENthw/s1600-h/IMG_0014.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp0.blogger.com/_cl8InCNq5jI/R-5M8e-vTjI/AAAAAAAAAFU/MJ3uOqENthw/s320/IMG_0014.jpg" alt="" id="BLOGGER_PHOTO_ID_5183164823142092338" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;What else? Sakura! In Tokyo now Sakura everywhere. Almost like a winter in Kristop's Latvia, just bit wormer with the difference of just few 15-20 degrees:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp0.blogger.com/_cl8InCNq5jI/R-5OOe-vTsI/AAAAAAAAAGc/UVocT4_GF1w/s1600-h/IMG_0034.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp0.blogger.com/_cl8InCNq5jI/R-5OOe-vTsI/AAAAAAAAAGc/UVocT4_GF1w/s320/IMG_0034.jpg" alt="" id="BLOGGER_PHOTO_ID_5183166231891365570" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp2.blogger.com/_cl8InCNq5jI/R-5OI--vTrI/AAAAAAAAAGU/qHBzyQcRU00/s1600-h/IMG_0033.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp2.blogger.com/_cl8InCNq5jI/R-5OI--vTrI/AAAAAAAAAGU/qHBzyQcRU00/s320/IMG_0033.jpg" alt="" id="BLOGGER_PHOTO_ID_5183166137402085042" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp3.blogger.com/_cl8InCNq5jI/R-5OFO-vTqI/AAAAAAAAAGM/DiC3o4MuFpg/s1600-h/IMG_0028.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp3.blogger.com/_cl8InCNq5jI/R-5OFO-vTqI/AAAAAAAAAGM/DiC3o4MuFpg/s320/IMG_0028.jpg" alt="" id="BLOGGER_PHOTO_ID_5183166072977575586" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/602769459329747644-2055334347944220223?l=maryniuk.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://maryniuk.blogspot.com/feeds/2055334347944220223/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=602769459329747644&amp;postID=2055334347944220223' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/602769459329747644/posts/default/2055334347944220223'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/602769459329747644/posts/default/2055334347944220223'/><link rel='alternate' type='text/html' href='http://maryniuk.blogspot.com/2008/03/asiabsdcon-2008.html' title='AsiaBSDCon 2008'/><author><name>BM</name><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><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp2.blogger.com/_cl8InCNq5jI/R-5N8--vTpI/AAAAAAAAAGE/edhfq5WUX7E/s72-c/IMG_0024.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-602769459329747644.post-8109351242610408339</id><published>2008-03-23T22:34:00.014+09:00</published><updated>2008-03-24T01:38:16.463+09:00</updated><title type='text'>MacBook Air</title><content type='html'>New hardware at my home: meet MacBook Air.&lt;br /&gt;&lt;br /&gt;I've got from postman neat plastic wrapped box. You can understand the dimensions of entire package how it looks like:&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp1.blogger.com/_cl8InCNq5jI/R-Zczu-vTZI/AAAAAAAAAEE/YRNbhNNuoaE/s1600-h/IMG_0182.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp1.blogger.com/_cl8InCNq5jI/R-Zczu-vTZI/AAAAAAAAAEE/YRNbhNNuoaE/s320/IMG_0182.JPG" alt="" id="BLOGGER_PHOTO_ID_5180930465190595986" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;After I've removed cover of the package, notebook was just on top. Take it, power it on and just use. Packaging of Air is also very different from all previous Apple packaging. There are no more bulky boxes that is hard to dispose. This means that transportation of this sort of product will take less fuel and thus contamination to the environment. Here how it looks like:&lt;div&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp3.blogger.com/_cl8InCNq5jI/R-ZdUO-vTaI/AAAAAAAAAEM/L32zvme3naU/s1600-h/IMG_0184.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp3.blogger.com/_cl8InCNq5jI/R-ZdUO-vTaI/AAAAAAAAAEM/L32zvme3naU/s320/IMG_0184.JPG" alt="" id="BLOGGER_PHOTO_ID_5180931023536344482" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Under the laptop all needed accessories: a short manual how to use the thing, two DVD with OSX and utilities, some cables and a power adapter that use 45W at its best:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp3.blogger.com/_cl8InCNq5jI/R-ZdyO-vTbI/AAAAAAAAAEU/_7E3r2dIYts/s1600-h/IMG_0185.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp3.blogger.com/_cl8InCNq5jI/R-ZdyO-vTbI/AAAAAAAAAEU/_7E3r2dIYts/s320/IMG_0185.JPG" alt="" id="BLOGGER_PHOTO_ID_5180931538932420018" border="0" /&gt;&lt;/a&gt;Width and depth dimensions are the same as MacBook. This is not very surprising because MB Air has 13" display. However all of what MacBook Air is about, is a thickness and a weight. The device is really thin and lightweight. Imagine your laptop weights just nearly 1 kilogram and fits between your documents.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp1.blogger.com/_cl8InCNq5jI/R-ZeOu-vTcI/AAAAAAAAAEc/v0suPiBFibI/s1600-h/IMG_0187.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp1.blogger.com/_cl8InCNq5jI/R-ZeOu-vTcI/AAAAAAAAAEc/v0suPiBFibI/s320/IMG_0187.JPG" alt="" id="BLOGGER_PHOTO_ID_5180932028558691778" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Thickness is really different. Here I put it on top of MacBook Pro machine and you can find that lid of the MacBook Pro is more thick than the base of MacBook Air:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp2.blogger.com/_cl8InCNq5jI/R-ZeZ--vTdI/AAAAAAAAAEk/lX8b8qIe5VA/s1600-h/IMG_0193.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp2.blogger.com/_cl8InCNq5jI/R-ZeZ--vTdI/AAAAAAAAAEk/lX8b8qIe5VA/s320/IMG_0193.JPG" alt="" id="BLOGGER_PHOTO_ID_5180932221832220114" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Here how it is opened:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp1.blogger.com/_cl8InCNq5jI/R-Zemu-vTeI/AAAAAAAAAEs/E8sHWQHzzHc/s1600-h/IMG_0194.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp1.blogger.com/_cl8InCNq5jI/R-Zemu-vTeI/AAAAAAAAAEs/E8sHWQHzzHc/s320/IMG_0194.JPG" alt="" id="BLOGGER_PHOTO_ID_5180932440875552226" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;It is really thin:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp2.blogger.com/_cl8InCNq5jI/R-Ze0--vTfI/AAAAAAAAAE0/fh3c8rIDzKc/s1600-h/IMG_0196.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp2.blogger.com/_cl8InCNq5jI/R-Ze0--vTfI/AAAAAAAAAE0/fh3c8rIDzKc/s320/IMG_0196.JPG" alt="" id="BLOGGER_PHOTO_ID_5180932685688688114" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Now, what can I say, especially after Lenovo X300 has been released. As usually, Apple hardware is beautiful and slick, unlike everything else. This machine is just different. Different in style, look and feel and approach to entire sub-notebook computing. It enforces you to get rid of cables and do everything through WiFi.&lt;br /&gt;&lt;br /&gt;What you get with MacBook Air?&lt;br /&gt;&lt;ul&gt;&lt;li&gt;A decent keyboard. The keyboard just phenomenal. I did not see anything similar somewhere. You need to spend some time to feel the difference, but once you got it, you understand the meaning of the beauty.&lt;/li&gt;&lt;li&gt;Nice screen. LED. Slim. Bright. Crisp. Cool.&lt;/li&gt;&lt;li&gt;1.8GHz Intel Core 2 Duo and 2M RAM.&lt;/li&gt;&lt;li&gt;Very slow HDD with only 4200 rpm. :-)&lt;/li&gt;&lt;li&gt;1 USB (for your iPod or iPhone), 1 micro DVI to wow your customers with cool presentation and 1 headphone out to do not hear their feedback. :-)&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;Machine works fast enough as for its class. Never gets hot even on heavy software compilations. You can play 3D games. For fun I tried few, for example, Sauerbraten. It is brilliant there and works great. You can do your programming: C/C++, Java, Python... You can write your documents with iWork '08 or MS Office 2008. Remote CD/DVD solves all the problems with installations. The rest you take to or put from the network storage you probably already have for backups. :-)&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/602769459329747644-8109351242610408339?l=maryniuk.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://maryniuk.blogspot.com/feeds/8109351242610408339/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=602769459329747644&amp;postID=8109351242610408339' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/602769459329747644/posts/default/8109351242610408339'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/602769459329747644/posts/default/8109351242610408339'/><link rel='alternate' type='text/html' href='http://maryniuk.blogspot.com/2008/03/macbook-air.html' title='MacBook Air'/><author><name>BM</name><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><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp1.blogger.com/_cl8InCNq5jI/R-Zczu-vTZI/AAAAAAAAAEE/YRNbhNNuoaE/s72-c/IMG_0182.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-602769459329747644.post-8584546532661311559</id><published>2008-03-09T18:32:00.007+09:00</published><updated>2008-03-09T22:13:32.926+09:00</updated><title type='text'>Home Theater and PLC Adaptor</title><content type='html'>Previously, half a year ago, I've built a home theater based on top of &lt;s&gt;FreeVO&lt;/s&gt; MythTV. Few shell scripts does the rest: movies pre-buffering from the storage, managing music etc. Hardware is relatively small and very silent while works. Power consumption takes 50W at its best, but usually 45W. I have two machines like this, another just has twice more memory and twice better CPU (read: twice bigger power consumption). Here how the thing looks in all its glory (cover removed, as usual):&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp0.blogger.com/_cl8InCNq5jI/R9Ou-xmEQPI/AAAAAAAAADk/v-KjTVkZiyI/s1600-h/IMG_0189.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp0.blogger.com/_cl8InCNq5jI/R9Ou-xmEQPI/AAAAAAAAADk/v-KjTVkZiyI/s320/IMG_0189.JPG" alt="" id="BLOGGER_PHOTO_ID_5175672790266953970" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Now, the thing is to actually connect it to the network. First what comes to mind: WiFi on cheap PCMCIA card (I've got two of them free as a gift). After spending &lt;s&gt;hours&lt;/s&gt; evenings to figure out why NDISWrapper turns the box from "not connected by WiFi mode" to "brick mode" issuing  friendly Linux kernel panic, finally I've got a connection. My Linux installation was bit screwed up by several user-friendly kernel recompilations (thanks to its nice monolithic design) and some libraries updates, thus packages turned to be inconsistent. Well, at least it works... At all its best it was slow, bad and chunked, since WiFi router quite far from the TV installation.&lt;br /&gt;&lt;br /&gt;I've decided to make it better and drop WiFi idea. But along with that, I hate cables to be visible across my apartments. So decision was made to go with PLC. Preference was given to Panasonic BL-PA100. This is a kit of two devices, where Panasonic already has prepared a starter kit (BL-PA100KT) for ease of installation. The kit includes two preconfigured BL-PA100 adaptors - one is used as the Master and the other as a Terminal adaptor.&lt;br /&gt;&lt;br /&gt;The kit allows the average person to easily establish a secure network without using a PC. Simply plug in the Master adaptor into a power outlet and connect a broadband router/modem to the adaptor. Then plug in the Terminal adaptor to a wall outlet in another room where you want to access the network. PC and other network "clients," such as Panasonic IP network camera, can be connected to the Ethernet port of the Terminal adaptor.&lt;br /&gt;&lt;br /&gt;Adding another Terminal adaptor is also simple. Plug a second Terminal adaptor, (sold individually), to the same power outlet as the Master and press the "Setup" buttons on both units simultaneously to register the Terminal. Once registered, the adaptor can be placed in power outlets anywhere in the house. Also, the clients can be connected to any Terminal adaptors in the house to communicate on the network. A total of 15 Terminal adaptors can be connected to the system.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp3.blogger.com/_cl8InCNq5jI/R9PbwhmEQQI/AAAAAAAAADs/O-3Mr-qcptA/s1600-h/IMG_0187.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp3.blogger.com/_cl8InCNq5jI/R9PbwhmEQQI/AAAAAAAAADs/O-3Mr-qcptA/s320/IMG_0187.JPG" alt="" id="BLOGGER_PHOTO_ID_5175722023477068034" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Despite of the fact that HD-PLC Ethernet Adapter has a 190Mbps bandwidth, which is &lt;span style="font-weight: bold;"&gt;really&lt;/span&gt; enough to accommodate my needs, adding new Terminal adaptor will "eat" bandwidth too. The more adaptors you have, the less bandwidth you get. So the final solution of my LAN upgrade was adding more WiFi access points over apartments by combining PLC adaptor in Terminal mode with a WiFi router without NAT that works just like an access point. For the WiFi router I use La Fonera device, which is hackable by re-flashing it with OpenWRT firmware. Installing OpenWRT is simple and configuration is just trivial. La Fonera router is very small, can fit in your palm easily. Here is a picture of how two devices looks together:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp3.blogger.com/_cl8InCNq5jI/R9PcEhmEQRI/AAAAAAAAAD0/l25E_12SY1o/s1600-h/IMG_0188.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp3.blogger.com/_cl8InCNq5jI/R9PcEhmEQRI/AAAAAAAAAD0/l25E_12SY1o/s320/IMG_0188.JPG" alt="" id="BLOGGER_PHOTO_ID_5175722367074451730" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;So now my home theater works great and fast and also I have one more access point with 80-97% of signal available between near rooms.&lt;br /&gt;&lt;br /&gt;More information about Panasonic BL-PA100 PLC Adaptor you can find here: http://panasonic.co.jp/pcc/products/en/plc/sp/lineup/index.html&lt;br /&gt;&lt;br /&gt;If you want La Fonera for ridiculous price :-) get it here: http://www.fon.com/en/&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/602769459329747644-8584546532661311559?l=maryniuk.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://maryniuk.blogspot.com/feeds/8584546532661311559/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=602769459329747644&amp;postID=8584546532661311559' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/602769459329747644/posts/default/8584546532661311559'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/602769459329747644/posts/default/8584546532661311559'/><link rel='alternate' type='text/html' href='http://maryniuk.blogspot.com/2008/03/home-theater-and-plc-adaptor.html' title='Home Theater and PLC Adaptor'/><author><name>BM</name><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><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp0.blogger.com/_cl8InCNq5jI/R9Ou-xmEQPI/AAAAAAAAADk/v-KjTVkZiyI/s72-c/IMG_0189.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-602769459329747644.post-9168347806480303584</id><published>2008-02-20T19:07:00.005+09:00</published><updated>2008-02-23T14:00:38.452+09:00</updated><title type='text'>Java Swing UI and MacOS X</title><content type='html'>I wrote an application using Swing UI library, but it does not fits to MacOS X by default. So here is a small tip how to bring main menu to MacOS. So, in your Java Swing application, if you need this:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp2.blogger.com/_cl8InCNq5jI/R7v9kQtoIAI/AAAAAAAAADM/ri8xEiXn8cU/s1600-h/Picture+2.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;" src="http://bp2.blogger.com/_cl8InCNq5jI/R7v9kQtoIAI/AAAAAAAAADM/ri8xEiXn8cU/s320/Picture+2.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5169003796741234690" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;...to be done like this:&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp2.blogger.com/_cl8InCNq5jI/R7v90QtoIBI/AAAAAAAAADU/ETpN_ihNV1Y/s1600-h/Picture+4.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;" src="http://bp2.blogger.com/_cl8InCNq5jI/R7v90QtoIBI/AAAAAAAAADU/ETpN_ihNV1Y/s400/Picture+4.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5169004071619141650" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;div&gt;...set &lt;code&gt;com.apple.macos.useScreenMenuBar&lt;/code&gt; to &lt;b&gt;true&lt;/b&gt;. It is possible to do as JVM parameter (-D is your friend), but better within the application somewhere at the beginning in the &lt;code&gt;main()&lt;/code&gt; as follows:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;        &lt;code&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;System.setProperty("com.apple.macos.useScreenMenuBar","true");&lt;/code&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;This is one more step toward Apple MacOSX integreation. However, this is good for Java 1.3 and less. These days we use 1.5 or 1.6 developers preview. :-) It is quite sad that Apple Java releases takes a gap for about a year, but on the other hand Java on Mac really that stable and reliable. Well, anyway, here is the list of deprecated values system properties that were available in Java 1.3.1 but are likely trying to be no longer supported since Java 1.4.1. This is not very true due to they &lt;span class="Apple-style-span" style="font-weight: bold;"&gt;are&lt;/span&gt; supported in Java 1.6, though it is nice to get rid of them ASAP:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;1. &lt;code&gt;"com.apple.macos.use-file-dialog-packages"&lt;/code&gt; and &lt;code&gt;"com.apple.macos.useScreenMenuBar"&lt;/code&gt; are replaced with &lt;code&gt;"apple.laf.useScreenMenuBar"&lt;/code&gt;.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;2. &lt;code&gt;"com.apple.macos.useSmallTabs"&lt;/code&gt; and &lt;code&gt;"com.apple.macosx.AntiAliasedTextOn"&lt;/code&gt; are replaced with &lt;code&gt;"apple.awt.textantialiasing"&lt;/code&gt;.&lt;br /&gt;&lt;br /&gt;3. &lt;code&gt;"com.apple.mrj.application.growbox.intrudes"&lt;/code&gt; replaced with &lt;code&gt;"apple.awt.showGrowBox"&lt;/code&gt;.&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&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/602769459329747644-9168347806480303584?l=maryniuk.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://maryniuk.blogspot.com/feeds/9168347806480303584/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=602769459329747644&amp;postID=9168347806480303584' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/602769459329747644/posts/default/9168347806480303584'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/602769459329747644/posts/default/9168347806480303584'/><link rel='alternate' type='text/html' href='http://maryniuk.blogspot.com/2008/02/i-wrote-application-using-swing-ui.html' title='Java Swing UI and MacOS X'/><author><name>BM</name><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><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp2.blogger.com/_cl8InCNq5jI/R7v9kQtoIAI/AAAAAAAAADM/ri8xEiXn8cU/s72-c/Picture+2.png' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-602769459329747644.post-2766695049113462881</id><published>2008-02-17T01:07:00.006+09:00</published><updated>2008-02-17T01:27:19.613+09:00</updated><title type='text'>Bye-bye ReportLab</title><content type='html'>Recently I am having fun playing with my new toy: porting my Python project "OpenRML" to Java. Python's OpenRML is using ReportLab library as a PDF generator. Among it is relatively slow, also there are number of features I really missing. Also it is quite expensive by time to add third-party stuff. So I've decided to say "bye-bye" to ReportLab.&lt;div&gt;First thought was to re-implement stuff in Jython or Groovy, because these are dynamic languages. But then I've decided to go with plain Java to avoid troubles in a future.&lt;br /&gt;&lt;div&gt;In this project, will no more ReportLab's RML markup for documents for a number of reasons. In short: I want markup to be small, cute, flexible and extendable, unlike RML. I had implemented a reporting middle-ware in Aozora Bank and now I see why RML is quite clunky idea.&lt;/div&gt;&lt;div&gt;Now, the project is in very early stage, no any RPC server yet and data integration. But it already can produce something: rich text paragraphs, coloring, fancy tables, clickable table of contents, insert images from URL or file etc. &lt;/div&gt;&lt;div&gt;Today I had implemented Japanese QRCode barcode. It is amazing data encoding, which is damage-resistant and can contain lots of data on quite small print-out size. We have plenty of them everywhere and we need them on a paper too. I also working on mobile application, which scans the code from a camera or any image and decodes it back to text.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Screenshot below shows what my current newly ported from Python library produces:&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp0.blogger.com/_cl8InCNq5jI/R7cKXwtoH_I/AAAAAAAAADE/1IuCunNC-r8/s1600-h/Picture+1.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;" src="http://bp0.blogger.com/_cl8InCNq5jI/R7cKXwtoH_I/AAAAAAAAADE/1IuCunNC-r8/s320/Picture+1.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5167610500760477682" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Tomorrow I am going to implement SVG support. :-)&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/602769459329747644-2766695049113462881?l=maryniuk.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/602769459329747644/posts/default/2766695049113462881'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/602769459329747644/posts/default/2766695049113462881'/><link rel='alternate' type='text/html' href='http://maryniuk.blogspot.com/2008/02/recently-i-am-having-fun-playing-with.html' title='Bye-bye ReportLab'/><author><name>BM</name><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><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp0.blogger.com/_cl8InCNq5jI/R7cKXwtoH_I/AAAAAAAAADE/1IuCunNC-r8/s72-c/Picture+1.png' height='72' width='72'/></entry><entry><id>tag:blogger.com,1999:blog-602769459329747644.post-8385104756735733939</id><published>2007-11-28T10:34:00.000+09:00</published><updated>2007-11-28T10:45:10.241+09:00</updated><title type='text'>Java 6 Port on Leopard</title><content type='html'>&lt;div&gt;Recently latest Java has been partially ported to MacOSX. Still no sound support, UI libraries still require X11, no mach thread priority and other odds. However, if you run JRuby or JPython on top of it, it works &lt;span class="Apple-style-span" style="font-style: italic;"&gt;faster&lt;/span&gt; than originally written implementations on C++.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;I did not tested JRuby, but latest JPython 2.2.1 runs Fibonacci test 10% faster than CPython 2.5.1 on the same machine.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Links:&lt;/div&gt;1. Java 6 port for MacOSX: &lt;a href="http://landonf.bikemonkey.org/code/macosx/"&gt;http://landonf.bikemonkey.org/code/macosx/&lt;/a&gt; &lt;div&gt;2. Jython: &lt;a href="http://jython.org/"&gt;http://jython.org/&lt;/a&gt;&lt;/div&gt;&lt;div&gt;3. JRuby: &lt;a href="http://jruby.codehaus.org/"&gt;http://jruby.codehaus.org/&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/602769459329747644-8385104756735733939?l=maryniuk.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://maryniuk.blogspot.com/feeds/8385104756735733939/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=602769459329747644&amp;postID=8385104756735733939' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/602769459329747644/posts/default/8385104756735733939'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/602769459329747644/posts/default/8385104756735733939'/><link rel='alternate' type='text/html' href='http://maryniuk.blogspot.com/2007/11/java-6-port-on-leopard.html' title='Java 6 Port on Leopard'/><author><name>BM</name><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-602769459329747644.post-6590456209253274789</id><published>2007-11-27T21:09:00.000+09:00</published><updated>2007-11-27T21:15:48.860+09:00</updated><title type='text'>Input Switch For Leopard</title><content type='html'>In Leopard 10.5 my option for International support that stays for "Allow a different input source for each document" no longer exists.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Why, Apple, why?! Steve, along with 3D dock you gave me that I pimp myself, what's wrong with multi-language support on each window separately and why I have to switch between four keyboard layouts all the time?..&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Here is a cure: &lt;a href="http://limechat.net/inputswitcher/"&gt;http://limechat.net/inputswitcher/&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/602769459329747644-6590456209253274789?l=maryniuk.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://maryniuk.blogspot.com/feeds/6590456209253274789/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=602769459329747644&amp;postID=6590456209253274789' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/602769459329747644/posts/default/6590456209253274789'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/602769459329747644/posts/default/6590456209253274789'/><link rel='alternate' type='text/html' href='http://maryniuk.blogspot.com/2007/11/input-switch-for-leopard.html' title='Input Switch For Leopard'/><author><name>BM</name><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-602769459329747644.post-5367658729198022675</id><published>2007-11-26T23:56:00.000+09:00</published><updated>2007-11-27T00:02:20.150+09:00</updated><title type='text'>Pimp Your Dock</title><content type='html'>I've just found yet another pimpizer for things and this time it had pimped my dock. Twice. Maybe previous arrows was better?&lt;div&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp0.blogger.com/_cl8InCNq5jI/R0re5hRayrI/AAAAAAAAAC0/vub5jza7YWw/s1600-h/Picture+1.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;" src="http://bp0.blogger.com/_cl8InCNq5jI/R0re5hRayrI/AAAAAAAAAC0/vub5jza7YWw/s320/Picture+1.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5137163404734810802" /&gt;&lt;/a&gt;&lt;div&gt; &lt;/div&gt;&lt;div&gt;Mmm... No, I am not sure. This one is slightly better try:&lt;/div&gt;&lt;div&gt; &lt;/div&gt;&lt;div&gt; &lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp1.blogger.com/_cl8InCNq5jI/R0rfXxRaysI/AAAAAAAAAC8/zWuuCBfMDos/s1600-h/Picture+2.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;" src="http://bp1.blogger.com/_cl8InCNq5jI/R0rfXxRaysI/AAAAAAAAAC8/zWuuCBfMDos/s320/Picture+2.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5137163924425853634" /&gt;&lt;/a&gt;&lt;br /&gt;Now, if you want, go and pimp up yourself. ;-) Here is the link: &lt;a href="http://www.malcom-mac.com/pimpmydock/"&gt;http://www.malcom-mac.com/pimpmydock/&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/602769459329747644-5367658729198022675?l=maryniuk.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://maryniuk.blogspot.com/feeds/5367658729198022675/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=602769459329747644&amp;postID=5367658729198022675' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/602769459329747644/posts/default/5367658729198022675'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/602769459329747644/posts/default/5367658729198022675'/><link rel='alternate' type='text/html' href='http://maryniuk.blogspot.com/2007/11/pimp-your-dock.html' title='Pimp Your Dock'/><author><name>BM</name><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><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp0.blogger.com/_cl8InCNq5jI/R0re5hRayrI/AAAAAAAAAC0/vub5jza7YWw/s72-c/Picture+1.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-602769459329747644.post-4739856805397890911</id><published>2007-11-03T02:00:00.000+09:00</published><updated>2007-11-03T11:49:45.582+09:00</updated><title type='text'>Personal DNA</title><content type='html'>&lt;script src="http://personaldna.com/t/?k=vhrgIRwPTthWNbb-GN-DAADA-95c6&amp;amp;t=Attentive+Inventor"&gt;&lt;/script&gt;&lt;br /&gt;Here is my &lt;a href="http://www.personaldna.com/report.php?k=vhrgIRwPTthWNbb-GN-DAADA-95c6"&gt;&lt;br /&gt;personal DNA report&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/602769459329747644-4739856805397890911?l=maryniuk.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://maryniuk.blogspot.com/feeds/4739856805397890911/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=602769459329747644&amp;postID=4739856805397890911' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/602769459329747644/posts/default/4739856805397890911'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/602769459329747644/posts/default/4739856805397890911'/><link rel='alternate' type='text/html' href='http://maryniuk.blogspot.com/2007/11/personal-dna.html' title='Personal DNA'/><author><name>BM</name><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-602769459329747644.post-6231409180877112510</id><published>2007-11-02T13:18:00.000+09:00</published><updated>2007-11-02T13:26:10.635+09:00</updated><title type='text'></title><content type='html'>&lt;p&gt;If you drink too much, then next morning, after Halloween party...&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp1.blogger.com/_cl8InCNq5jI/RyqmoIrxUUI/AAAAAAAAACs/jO0xsSZvXhY/s1600-h/ATT214076.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;" src="http://bp1.blogger.com/_cl8InCNq5jI/RyqmoIrxUUI/AAAAAAAAACs/jO0xsSZvXhY/s320/ATT214076.jpg" border="0" alt="" id="BLOGGER_PHOTO_ID_5128094334170779970" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/602769459329747644-6231409180877112510?l=maryniuk.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://maryniuk.blogspot.com/feeds/6231409180877112510/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=602769459329747644&amp;postID=6231409180877112510' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/602769459329747644/posts/default/6231409180877112510'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/602769459329747644/posts/default/6231409180877112510'/><link rel='alternate' type='text/html' href='http://maryniuk.blogspot.com/2007/11/if-you-drink-too-much-then-next-morning.html' title=''/><author><name>BM</name><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><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp1.blogger.com/_cl8InCNq5jI/RyqmoIrxUUI/AAAAAAAAACs/jO0xsSZvXhY/s72-c/ATT214076.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-602769459329747644.post-2368586041947131066</id><published>2007-10-30T15:50:00.000+09:00</published><updated>2007-10-30T15:53:32.787+09:00</updated><title type='text'>MacOSX Leopard BSOD</title><content type='html'>&lt;div&gt;My newly installed MacOSX 10.5 Leopard operating system just showed me a BSOD: Blue Screen Of Death, while I tried to connect to some Windows machine over SMB protocol. Here how it looks like in Finder's Quick View:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp1.blogger.com/_cl8InCNq5jI/RybUjIrxUTI/AAAAAAAAACk/0oojc8QQvmU/s1600-h/Picture+1.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;" src="http://bp1.blogger.com/_cl8InCNq5jI/RybUjIrxUTI/AAAAAAAAACk/0oojc8QQvmU/s320/Picture+1.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5127018925899469106" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;div&gt;:-)&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/602769459329747644-2368586041947131066?l=maryniuk.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://maryniuk.blogspot.com/feeds/2368586041947131066/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=602769459329747644&amp;postID=2368586041947131066' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/602769459329747644/posts/default/2368586041947131066'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/602769459329747644/posts/default/2368586041947131066'/><link rel='alternate' type='text/html' href='http://maryniuk.blogspot.com/2007/10/macosx-leopard-bsod.html' title='MacOSX Leopard BSOD'/><author><name>BM</name><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><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp1.blogger.com/_cl8InCNq5jI/RybUjIrxUTI/AAAAAAAAACk/0oojc8QQvmU/s72-c/Picture+1.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-602769459329747644.post-2006942149083907608</id><published>2007-10-14T01:00:00.000+09:00</published><updated>2007-10-14T01:53:15.581+09:00</updated><title type='text'>Mixing Hardware: Yamaha MW8 CX</title><content type='html'>Another piece of hardware just arrived today:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp2.blogger.com/_cl8InCNq5jI/RxDxK-z9JMI/AAAAAAAAACc/hBQV8TCHFNU/s1600-h/visual_front_mw8cx_l.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp2.blogger.com/_cl8InCNq5jI/RxDxK-z9JMI/AAAAAAAAACc/hBQV8TCHFNU/s320/visual_front_mw8cx_l.jpg" alt="" id="BLOGGER_PHOTO_ID_5120857947282154690" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;I've researched what kind of mixing hardware fits the best and found that this one feels really good at small recording studio.&lt;br /&gt;&lt;br /&gt;Pros:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Ridiculously small price for such brilliant quality. Surprised indeed.&lt;/li&gt;&lt;li&gt;Comes with Cubase AI4 for Mac (Windoze too, if so) and connects easily. Cubase AI4 seems to be way better sequencer in terms of "ease of use" than even Logic Express. You just connect cables, you just run it and it just works (unlike Logic Express).&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Very lightweight, can be mounted on stand (very useful).&lt;/li&gt;&lt;li&gt;Clean, nice effects built-in with possibility to connect external module for master effect and two insertion effects for two monaural channels.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;Cons:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Lightweight case might be easily broken on gigs. Be careful.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;No FireWire. USB bit slow and eats CPU on your machine.&lt;/li&gt;&lt;li&gt;8th channel does not have middle frequency equalizer.&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;But for me it is the very optimal piece of hardware: light, cheap and nice quality with good effects. Nothing more is needed for small studio recordings.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/602769459329747644-2006942149083907608?l=maryniuk.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://maryniuk.blogspot.com/feeds/2006942149083907608/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=602769459329747644&amp;postID=2006942149083907608' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/602769459329747644/posts/default/2006942149083907608'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/602769459329747644/posts/default/2006942149083907608'/><link rel='alternate' type='text/html' href='http://maryniuk.blogspot.com/2007/10/mixing-hardware-yamaha-mw8-cx.html' title='Mixing Hardware: Yamaha MW8 CX'/><author><name>BM</name><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><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp2.blogger.com/_cl8InCNq5jI/RxDxK-z9JMI/AAAAAAAAACc/hBQV8TCHFNU/s72-c/visual_front_mw8cx_l.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-602769459329747644.post-944261430595052486</id><published>2007-10-12T22:42:00.000+09:00</published><updated>2007-10-13T00:32:15.750+09:00</updated><title type='text'>Anti-Vibration Stage for Your e-Drums</title><content type='html'>&lt;h2&gt;Ha-ha!&lt;/h2&gt;&lt;br /&gt;Two days before I've purchased &lt;a href="http://maryniuk.blogspot.com/2007/10/roland-drum-kit.html"&gt;my e-drum kit&lt;/a&gt;, I had to build an anti-vibration stage for them. Otherwise I shall had to sit in Lotus figure and repeat the mantra of the following: &lt;span style="font-style: italic;"&gt;"Drums are not for apartments, drums are not for apartments..."&lt;/span&gt;. Here I want to show what I've got and what is the final result of my personal research, experiments and calculations...&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;h2&gt;The Problem And The Destination&lt;/h2&gt;&lt;br /&gt;No one else instrument in entire World can be so dynamic as drums and percussion. It is possible to produce dynamic range from &lt;span style="font-style: italic;"&gt;PPPP&lt;/span&gt; (illimitato pianissimo) even lighter than ice crystal sounds itself, up to &lt;span style="font-style: italic;"&gt;FFFF&lt;/span&gt; (pazzo fortissimo) and blow away somebody along with the chair. There is no any other instrument available to produce this range of dynamics.&lt;br /&gt;&lt;br /&gt;With the pianissimo performance everything OK: you simply touch things very gently. No suffering to neighbors downstairs. But what about fortissimo or just good fat forte as usual? Then you are doomed to forte your neighbors hard, which will not be enjoyable for them indeed.&lt;br /&gt;&lt;br /&gt;Also keep in mind, that electric kit is only &lt;span style="font-weight: bold;"&gt;relatively&lt;/span&gt; silent. If on stage and turned off, then yes — perfectly silent. But if somebody is sleeping and you can hear a mosquito flying somewhere, then e-drum is definitely noisy and will raise up everybody around. You have real kick pedals, real hi-hat, real cymbals, real pads for real hits from real sticks. Mesh-heads solute problem only 40% or even less: still you have rubber cymbals, still your hardware transfers vibration downstairs, still kick-pedal shakes the floor and still &lt;span style="font-weight: bold;"&gt;nasty&lt;/span&gt; hi-hat shakes your downstairs neighbor's piece.&lt;br /&gt;&lt;br /&gt;Now, the problem is to prevent your room shaking and your neighbors crying, while still allow all that bulky  expensive hardware to produce the range of dynamics, what it is actually designed for...&lt;br /&gt;&lt;br /&gt;My apartments has relatively tiny walls between neighbors, paper walls between rooms and building is made monolithic concrete &lt;span style="font-style: italic;"&gt;(often earthquakes in Tokyo won't allow make it from bricks)&lt;/span&gt;. Each concrete apartments are very good to collect and transfer any kind of sound everywhere anytime. If you are living in more sound-proof apartments, then you are even luckier than me. If you live in less sound proof apartments (wooden house, for example), then you are... well... less luckier than me. In other words, there is always enough room to improve this assembly.&lt;br /&gt;&lt;br /&gt;&lt;h2&gt;Before You Do&lt;/h2&gt;&lt;br /&gt;&lt;br /&gt;Go to your neighbors and tell them what you already bought &lt;span style="font-style: italic;"&gt;(on purpose omitting the word "electric" to let they accept shock in place)&lt;/span&gt; tell them what you are going to do &lt;span style="font-style: italic;"&gt;(probably till that time they will understand already)&lt;/span&gt;. Yes, the law is &lt;span style="font-style: italic;"&gt;on your side&lt;/span&gt; and basically you can ignore them totally. But it is rude, not friendly and actually does not means that you are an a-hole who wants to screw up tired neighbors. Be kind to people and people will be kind to you. Go tell them when you are going to play and when you are going to finish. Keep the time and schedule accurately.&lt;br /&gt;&lt;br /&gt;But don't be over-kind to them: otherwise they will suspect for you are extremely bad. :-)&lt;br /&gt;&lt;br /&gt;&lt;h2&gt;The Recipe&lt;/h2&gt;&lt;br /&gt;The stage I've built exclusively for &lt;a href="http://maryniuk.blogspot.com/2007/10/roland-drum-kit.html"&gt;my drum-kit&lt;/a&gt; and fits well for it. However, if you have another kit featuring another size of the stage, you have to try to adjust size yourself, but I think it still applicable for mostly any popular drum kit. This stage is NOT applicable for kits on original hardware (components are mounted on their own stands), but only for "one-piece" frame-based mounted systems.&lt;br /&gt;&lt;br /&gt;Here is parts required (metrics, sorry USA reader):&lt;br /&gt;&lt;ul&gt;&lt;li&gt;6 bath mats, 85x60 cm with grid of holes on them. You will appreciate it later or make holes yourself, which is probably not what you want to do.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;9 bicycle tubes, 40 cm in diameter.&lt;/li&gt;&lt;li&gt;3 foam-rubber pieces 60x60 with sound-absorption surface &lt;span style="font-style: italic;"&gt;(preferred, but not necessary)&lt;/span&gt;. A bunch of toilet sponges is good enough, if it is so critical to get right one. :-)&lt;br /&gt;&lt;/li&gt;&lt;li&gt;12 light rubber pieces 120x120x25 mm of each. Rubber shall be like a sponge with a microscopic cells,  light in weight but very hard to be compressed to solid stage.&lt;/li&gt;&lt;li&gt;80 m of plastic rope.&lt;/li&gt;&lt;li&gt;One Japanese tatami 190x80 cm or approximately same size piece of thick plywood.&lt;/li&gt;&lt;li&gt;Soft floor foam cover. I used cork puzzles with foamish base.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;A striped carpet.&lt;/li&gt;&lt;li&gt;4 striped rubber disks, 10 cm in diameter.&lt;/li&gt;&lt;li&gt;Double-sided glue ribbon to join rubber elements together.&lt;/li&gt;&lt;li&gt;An iPod with headphones, lot of patience and two different hands (left and right), properly placed as originally designed by God. :-)&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;Remember: soft materials absorbs sound, hard — opposite, transfers them. Empty spaces generates resonance and reinforces the sound. In this situation you have to choose materials, that will keep their condition under heavy pressure of kit itself and hairy legs of fat John playing it, excited. :-)&lt;br /&gt;&lt;br /&gt;&lt;h2&gt;OK, Let's Go Do It&lt;/h2&gt;&lt;br /&gt;First, put floor cover on the place where you want to install your drum kit. I've been used it double for the place where stage is going to be placed.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp3.blogger.com/_cl8InCNq5jI/Rw-O5ez9JEI/AAAAAAAAABc/aivpZCTrHPw/s1600-h/IMG_0096.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp3.blogger.com/_cl8InCNq5jI/Rw-O5ez9JEI/AAAAAAAAABc/aivpZCTrHPw/s400/IMG_0096.JPG" alt="" id="BLOGGER_PHOTO_ID_5120468419518211138" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Here how bath mat looks like from the bottom side. It is very good to have such kind of surface, because it will remarkably reduce physical contact with the surface underneath, thus reduces the waves of the vibration.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp3.blogger.com/_cl8InCNq5jI/Rw-PIez9JFI/AAAAAAAAABk/0bfBDCAXcew/s1600-h/IMG_0100.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp3.blogger.com/_cl8InCNq5jI/Rw-PIez9JFI/AAAAAAAAABk/0bfBDCAXcew/s400/IMG_0100.JPG" alt="" id="BLOGGER_PHOTO_ID_5120468677216248914" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Here how bath mat looks like from the top. Notice grid of holes. You will really need almost all of them.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp0.blogger.com/_cl8InCNq5jI/Rw-PUuz9JGI/AAAAAAAAABs/_zl6OwoySkg/s1600-h/IMG_0101.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp0.blogger.com/_cl8InCNq5jI/Rw-PUuz9JGI/AAAAAAAAABs/_zl6OwoySkg/s400/IMG_0101.JPG" alt="" id="BLOGGER_PHOTO_ID_5120468887669646434" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Now, join 3 bath mat into one piece, using plastic rope. Do it tightly, but not much, to do not hurt the mat itself. Repeat the same procedure for another 3 bath mats. So finishing this step you will end up with two big and relatively soft platforms.&lt;br /&gt;&lt;br /&gt;In the next step you are going to put some ugly guts in between of them.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp1.blogger.com/_cl8InCNq5jI/Rw-Pf-z9JHI/AAAAAAAAAB0/SJ4YX9KXw6Q/s1600-h/IMG_0103.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp1.blogger.com/_cl8InCNq5jI/Rw-Pf-z9JHI/AAAAAAAAAB0/SJ4YX9KXw6Q/s400/IMG_0103.JPG" alt="" id="BLOGGER_PHOTO_ID_5120469080943174770" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Inflate bicycle tubes to reasonable condition and tightly mount them as shown on picture, using plastic rope. Tubes shall be mounted quite tightly to prevent stage flow after it build, but do not overdo it either, since it will reduce soundproofing (vibration proofing, actually).&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp2.blogger.com/_cl8InCNq5jI/Rw-PxOz9JII/AAAAAAAAAB8/4FKjme1aNIk/s1600-h/IMG_0109.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp2.blogger.com/_cl8InCNq5jI/Rw-PxOz9JII/AAAAAAAAAB8/4FKjme1aNIk/s400/IMG_0109.JPG" alt="" id="BLOGGER_PHOTO_ID_5120469377295918210" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Now put rubber-foam in between the spaces. It will prevent your stage to sound as yet another drum. :-)  — remember what I said about empty closed space?&lt;br /&gt;&lt;br /&gt;Now, remember those 12 light rubber pieces 120x120x25 mm of each? Group them by two, joining with double-side glue ribbon and make 6 "legs". Put them two in the middle (to support kick-pedal) and four on each corner, fixating with the same double-side ribbon, preventing them float inside the construction. This will make tatami (or piece of plywood) lay solid on top of this thing and also prevent shaking snare and hi-hat, while playing. Picture below does not shows them since it was done after an update of the stage, but you may understand it easily.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp2.blogger.com/_cl8InCNq5jI/Rw-P9Oz9JJI/AAAAAAAAACE/75A08zYipg8/s1600-h/IMG_0112.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp2.blogger.com/_cl8InCNq5jI/Rw-P9Oz9JJI/AAAAAAAAACE/75A08zYipg8/s400/IMG_0112.JPG" alt="" id="BLOGGER_PHOTO_ID_5120469583454348434" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Put another 3-mat joined piece on top of this, making Big Mac hamburger-like thing and sew together with the plastic rope, as on picture. It will prevent disassembling of the stage, while playing.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp1.blogger.com/_cl8InCNq5jI/Rw-QJ-z9JKI/AAAAAAAAACM/ZRB4cpTQPCI/s1600-h/IMG_0114.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp1.blogger.com/_cl8InCNq5jI/Rw-QJ-z9JKI/AAAAAAAAACM/ZRB4cpTQPCI/s400/IMG_0114.JPG" alt="" id="BLOGGER_PHOTO_ID_5120469802497680546" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Put a carpet on top of it. Carpet will do two functions: will hide ugly blue bath mat with guts inside from choosy eyes and also will reduce sound resonance from your kit to bath mats. Here you go:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp3.blogger.com/_cl8InCNq5jI/Rw-QVez9JLI/AAAAAAAAACU/D_EjXVWMYro/s1600-h/IMG_0107.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp3.blogger.com/_cl8InCNq5jI/Rw-QVez9JLI/AAAAAAAAACU/D_EjXVWMYro/s400/IMG_0107.JPG" alt="" id="BLOGGER_PHOTO_ID_5120470000066176178" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Done!&lt;br /&gt;&lt;br /&gt;Now put two front legs of the frame (pads side) of the kit on the stage and two legs (from drummer side) out the stage. Put those 4 rubber disks underneath the legs of the frame. Maybe additional something underneath those legs might be needed, if your drum kit wants to be tall. Stage is 12 cm tall, which is not so thin. Chair might be put on something similar, like custom wooden platform, specially for throne only (50x50x12 cm) — it is very easy to assemble from the already done parts in any DIY shop.&lt;br /&gt;&lt;br /&gt;Entire price for this stage: approximately $270 USD.&lt;br /&gt;&lt;br /&gt;&lt;h2&gt;Afterword&lt;/h2&gt;&lt;br /&gt;So far, neighbors confirmed very-very-very a little sound from kick and hi-hat while playing wild, if they very carefully trying to catch the sound. Snare and hi-hat does not shakes at all even during double-bass, following Mike Portnoy. Stage is pretty solid for that.&lt;br /&gt;&lt;br /&gt;If you want and stay calm, then everything is possible.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Enjoy and have a lot of fun, happily drumming! :-)&lt;/span&gt; &lt;h2 style="font-weight: bold;"&gt;&lt;/h2&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/602769459329747644-944261430595052486?l=maryniuk.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://maryniuk.blogspot.com/feeds/944261430595052486/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=602769459329747644&amp;postID=944261430595052486' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/602769459329747644/posts/default/944261430595052486'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/602769459329747644/posts/default/944261430595052486'/><link rel='alternate' type='text/html' href='http://maryniuk.blogspot.com/2007/10/anti-vibration-stage-for-your-e-drums.html' title='Anti-Vibration Stage for Your e-Drums'/><author><name>BM</name><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><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp3.blogger.com/_cl8InCNq5jI/Rw-O5ez9JEI/AAAAAAAAABc/aivpZCTrHPw/s72-c/IMG_0096.JPG' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-602769459329747644.post-1903453171669150443</id><published>2007-10-12T21:06:00.000+09:00</published><updated>2007-10-12T22:41:55.726+09:00</updated><title type='text'>Roland Drum Kit</title><content type='html'>&lt;h2&gt;The news&lt;/h2&gt;Recently I've got my "Roland TD-20 Pro" drum kit. Finally!.. 8-)&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp1.blogger.com/_cl8InCNq5jI/Rw94U-z9JDI/AAAAAAAAABU/2r59Iu8-YjI/s1600-h/IMG_0121.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp1.blogger.com/_cl8InCNq5jI/Rw94U-z9JDI/AAAAAAAAABU/2r59Iu8-YjI/s400/IMG_0121.JPG" alt="" id="BLOGGER_PHOTO_ID_5120443603197174834" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;h2&gt;Why "Roland"&lt;/h2&gt;The decision was made actually after really long research and sniffing around over all kits available. Basically there was two kits competitive against each other: Roland V-Drums and Yamaha DTX. Everything else is just really a joke in compare to those two.&lt;br /&gt;&lt;br /&gt;I used many ways and criteria shuffling together to find the kit: get features first, then price; get price first, then features and so on. At the very end of each iteration I always end up with Roland — wanted it or not.&lt;br /&gt;&lt;br /&gt;It is the very true: you get exactly what you pay for. If you pay a little, you will get cheap thing and as result you will barely enjoy cheap stuff. Roland kit is great example of this rule. This kit offers you excellent design and extremely close feeling to real acoustic kit. It is built that solid and pads are mostly metallic.&lt;br /&gt;&lt;br /&gt;Sound is very natural and really very close to real acoustic kit. Once you close your eyes and listening, you will have hard time to distinguish it from real drums. Pads are very responsive and never (again: NEVER) cross-talk to each other, no matter how strongly I hit them. Even I hit stand — it still never cause a cross-talk from one pad to another. Sweet.&lt;br /&gt;&lt;br /&gt;Hi-hat is a killer of all other manufacturer's hi-hats. Here is nothing much to say: simply resembles real hi-hat with real touch and feel. Apart from you can open/close it, you can also tightly close it (sound changes as on real hi-hat) and you can semi-open it, or open for 3/4 or 1/4... It all realistic. If you play very sensitive jazz or you need semi-opened hi-hat for your hard rock — you will understand what I am talking about.&lt;br /&gt;&lt;br /&gt;Cymbals are awesome. They are very responsive. They never overlap each other's sound. Their bell/bow/edge/chop techniques are just natural in its behavior.&lt;br /&gt;&lt;br /&gt;Mesh pads itself feels like real drums. I expected a bit effect of "tennis  racket", when stick is bounced back too fast and too strongly. However, it is not like this at all. Amazed.&lt;br /&gt;&lt;h2&gt;&lt;br /&gt;&lt;/h2&gt;&lt;h2&gt;Why not something else&lt;/h2&gt;So the only competitor from other companies was the only one line of e-drums: "Yamaha DTX". I've tried shortly look at Alesis and other vendors, but left those products very shortly.&lt;br /&gt;&lt;br /&gt;Seriously reviewed was three models: DTXPlorer, DTXPress III and DTXPress IV. I have to say, for it is not bad kits either if you looking with policy of "price first, then features". All DTX modules are really sophisticated, having nice and clean interface to operate them. You can never read any documentation about the module synth and just start working with that very quickly.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;DTXPlorer&lt;/span&gt;. Very basic. Pads are single-triggered, except hi-hat, double-triggered. Module is very simple, sounds are basic, editing is minimal.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;DTXPress III/IV&lt;/span&gt;. Still basic. Pads are same as DTXPlorer, just snare is tree-zone pad. However, I disliked "natural" hi-hat of Yamaha DTXPress IV. First, it is too noisy as for practice — neighbors will not enjoy your playing, I am sure. I also not-so-much liked snare. Snares are &lt;span style="font-style: italic;"&gt;zone-defined&lt;/span&gt;, not trigger-driven, where different sounds are mixing together to produce third sound in result, depending on the velocity of the triggers on the pad. It means, that you can attach different waves to different zones and whatever you play — they will respond with originally attached sounds. This is cool, cheap hack to simulate rim-shots and so forth, but yet not enough to feel real drum kit, if you need to...&lt;br /&gt;&lt;br /&gt;Additionally, DTXPress IV expected to be &lt;span style="font-style: italic;"&gt;better&lt;/span&gt; than DTXPress III, as never version of the same level. However, the MIDI is only "OUT", but "IN" — gone in piece... How to trigger this kit from an external sequencer?!&lt;br /&gt;&lt;br /&gt;DTXPress III actually discontinued...&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;DTXTreme II&lt;/span&gt;. Discontinued. I never been able to find this one somewhere and put my sticks on it. But as far as I can see, hi-hat is the same, all pads are three-zones triggers and sounds are pretty same as in DTXPress IV, with the only ability to make samples. This winter Yamaha maybe will introduce any better kit?&lt;br /&gt;&lt;br /&gt;My personal overall summary for all existing Yamaha drums are below.&lt;br /&gt;&lt;br /&gt;Pros:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Pads has nice responsive rubber.&lt;/li&gt;&lt;li&gt;Nice sounds.&lt;/li&gt;&lt;li&gt;I &lt;u&gt;love&lt;/u&gt; those large cymbals! I want them for same size for Roland kit! Why Roland makes cymbals so ridiculously small in diameter? 15" for Ride? 8" for Dark China?.. You kiddin me?...&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Pretty cheap!&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;Cons:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Very noisy kick pad.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Very-very noisy tom pads.&lt;/li&gt;&lt;li&gt;Very-very-very noisy hi-hat pad.&lt;/li&gt;&lt;li&gt;Sounds still has plastic taste at their background and, frankly, too "Nintendoish". So far...&lt;/li&gt;&lt;li&gt;No MIDI "IN", only MIDI "OUT". That sucks.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Quite minimum in editing sounds, quite small memory.&lt;/li&gt;&lt;li&gt;32 note polyphony sounds sad. Even after editing the kit to increase polyphony, still when I've played DTX IV, I found that in some cases next sound erases previous one. So if to hit a cymbal (crash or chine, for example) strong-then-weak, it is quite often happes then previous strong sound was totally erased by following weak one. That sucks too.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Who use those GMs?..&lt;/li&gt;&lt;/ul&gt;If you:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Living in your own house&lt;/li&gt;&lt;li&gt;Need a kit for just practice or not serious gigs&lt;/li&gt;&lt;li&gt;Consider a price first of all and looking for "cheap first"&lt;/li&gt;&lt;/ol&gt;...then DTX line is for you. It is good kit for beginners and advanced hobbyists.&lt;br /&gt;&lt;h2&gt;&lt;br /&gt;&lt;/h2&gt;&lt;h2&gt;Minorities/Majorities&lt;/h2&gt;The very top minority is kit's price. Yes, it is expensive. It is VERY expensive...&lt;br /&gt;&lt;br /&gt;Another minority that this kit is not an "unfold-connect-play"  while assembling it. For me, to assemble mine, took "just" 7 hours in a raw from the pile of new boxes brought from the shop, to end up with clean room and assembled kit working. Size of this hardware is also not small. Drum set is quite bulky to move, heavy to drag and big enough to occupy majority of the space in the room. Once installed, forget about beautiful feel of your well-designed room: kit widely contains massive amount of black striped pieces of rubber, blocks of metal, heavy-looking main frame for all pads and quite bulky synthesizer (drums brain). All these details will strike out your home feelings entirely. If you are married: try setup your wife to do not enter your room ever (for her own safety to do not get shocked). :-)&lt;br /&gt;&lt;br /&gt;Maybe some more minority will be synthesizer navigation and how it works. For me, who IT guy, it is well-understandable and pretty fine. But for those, who not "well-computerized" this module might look bit odd and difficult to learn. Navigation is not that simple and module itself is not that intuitive to understand without reading the manual. Good side of this module that it can do really a lot! — exactly enough for upcoming 5-10 years to work with.&lt;br /&gt;&lt;br /&gt;Well, but majority of the instrument is actually everything else you can think about. This electric kit brings you much more that you can expect from an electric kit actually.&lt;br /&gt;&lt;br /&gt;Moreover, if you want really good kit,  you will spend approximately same amount of money for same real custom acoustic kit, frankly talking. Along with the disadvantage practicing at home for the acoustic kit is actually &lt;span style="font-style: italic;"&gt;an acoustic kit&lt;/span&gt;, you will also have to beer with the fact for acoustic cymbals are changing their sound with the time, cracks etc. To get same amount of sounds, you will need to buy new apartment only for the kit and running around, while performing. :-)&lt;br /&gt;&lt;h2&gt;&lt;br /&gt;&lt;/h2&gt;&lt;h2&gt;Afterword&lt;/h2&gt;Roland kit is pricey. But if you look for professional e-kit for gigs, quiet home practicing, studio records, live perfomance — there is nothing else better-or-same... Roland kit is winner here, hands down.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/602769459329747644-1903453171669150443?l=maryniuk.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://maryniuk.blogspot.com/feeds/1903453171669150443/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=602769459329747644&amp;postID=1903453171669150443' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/602769459329747644/posts/default/1903453171669150443'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/602769459329747644/posts/default/1903453171669150443'/><link rel='alternate' type='text/html' href='http://maryniuk.blogspot.com/2007/10/roland-drum-kit.html' title='Roland Drum Kit'/><author><name>BM</name><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><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp1.blogger.com/_cl8InCNq5jI/Rw94U-z9JDI/AAAAAAAAABU/2r59Iu8-YjI/s72-c/IMG_0121.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-602769459329747644.post-3105767794247364485</id><published>2007-08-31T11:21:00.000+09:00</published><updated>2007-08-31T11:24:02.114+09:00</updated><title type='text'>Yay! Now you will reboot as all of us!</title><content type='html'>&lt;p&gt;Finally we see the end of the day, when Linux never rebooted after update:&lt;/p&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp1.blogger.com/_cl8InCNq5jI/Rtd7ossSXyI/AAAAAAAAABM/imrz-prhM-I/s1600-h/Picture+1.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;" src="http://bp1.blogger.com/_cl8InCNq5jI/Rtd7ossSXyI/AAAAAAAAABM/imrz-prhM-I/s400/Picture+1.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5104684641769643810" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/602769459329747644-3105767794247364485?l=maryniuk.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://maryniuk.blogspot.com/feeds/3105767794247364485/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=602769459329747644&amp;postID=3105767794247364485' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/602769459329747644/posts/default/3105767794247364485'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/602769459329747644/posts/default/3105767794247364485'/><link rel='alternate' type='text/html' href='http://maryniuk.blogspot.com/2007/08/yay-now-you-will-reboot-as-all-of-us.html' title='Yay! Now you will reboot as all of us!'/><author><name>BM</name><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><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp1.blogger.com/_cl8InCNq5jI/Rtd7ossSXyI/AAAAAAAAABM/imrz-prhM-I/s72-c/Picture+1.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-602769459329747644.post-5450606413966639564</id><published>2007-08-22T21:48:00.001+09:00</published><updated>2007-08-23T00:02:56.900+09:00</updated><title type='text'>Boring Hollywood Incompetence</title><content type='html'>I am wondering: Hollywood keep you stupid, or &lt;span style="font-style: italic;"&gt;they&lt;/span&gt; &lt;span style="font-style: italic;"&gt;are&lt;/span&gt; stupid? Today I am talking about nice Bruce Willis's performance in "Die Hard 4". So what happened, actually?&lt;br /&gt;&lt;br /&gt;Well, nothing particular. As usual, two bags of gun bullets into one police car with no injure to passengers, destroying flying helicopter with a police car and soaring jet without working engine with Bruce on top — quite trivial, usual things from Hollywood. :-)&lt;br /&gt;&lt;br /&gt;But information technologies was just amazing. Uploading map files to Nokia phone with network down was tricky, but I love much more hi-tech innovations. Here they are:&lt;br /&gt;&lt;br /&gt;Transferring over WiFi connection... 500 TiB. Let me repeat: five hundred terabytes over wireless connection. Moreover, they actually do know the final destination: 500 TiB. No, dude, not 499, not 501, not 523 TiB and 56Gib and 453 MiB... No. Round, clean, exact 500 TiB. No more, no less. And they do not just copying it. They do graphic output for &lt;span style="font-style: italic;"&gt;each file&lt;/span&gt; they copy — maybe to make the process faster? Here how the technology looks like:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp3.blogger.com/_cl8InCNq5jI/Rsw1l8sSXsI/AAAAAAAAAAc/V7XRDNakybU/s1600-h/Picture+1.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp3.blogger.com/_cl8InCNq5jI/Rsw1l8sSXsI/AAAAAAAAAAc/V7XRDNakybU/s400/Picture+1.png" alt="" id="BLOGGER_PHOTO_ID_5101511403967241922" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;You see it? Really?&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp2.blogger.com/_cl8InCNq5jI/Rsw12ssSXtI/AAAAAAAAAAk/zk8K_AVQ-Yw/s1600-h/Picture+2.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp2.blogger.com/_cl8InCNq5jI/Rsw12ssSXtI/AAAAAAAAAAk/zk8K_AVQ-Yw/s400/Picture+2.png" alt="" id="BLOGGER_PHOTO_ID_5101511691730050770" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Next, the &lt;span style="font-style: italic;"&gt;“bad guys”&lt;/span&gt; went to shut down entire Power Plant. Great. To do that, they needed a bunch of aluminum trunks of equipment. Some of equipment are three laptops, one of them even like sub-trunk with armored laptop inside, three keyboards and cheap Chinese webcam for few buks. Even not an Apple iSight with autofocus. Great equipment though. Hey, but what the hell?.. They do shutting down the Power Plant with... a Palm pilot? Yes, they do! You can notice how that sexy hacker-woman barely types with the same middle finger which she shows usually to others when she is angry:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp1.blogger.com/_cl8InCNq5jI/Rsw35csSXuI/AAAAAAAAAAs/ZgD6s_FxtVE/s1600-h/Picture+3.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp1.blogger.com/_cl8InCNq5jI/Rsw35csSXuI/AAAAAAAAAAs/ZgD6s_FxtVE/s400/Picture+3.png" alt="" id="BLOGGER_PHOTO_ID_5101513937997946594" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;And again:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp3.blogger.com/_cl8InCNq5jI/Rsw4E8sSXvI/AAAAAAAAAA0/EA_HygSNoKw/s1600-h/Picture+5.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp3.blogger.com/_cl8InCNq5jI/Rsw4E8sSXvI/AAAAAAAAAA0/EA_HygSNoKw/s400/Picture+5.png" alt="" id="BLOGGER_PHOTO_ID_5101514135566442226" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;But no, she could not do this, because the funnier trickier policeman kills her in a room, using jeep 60 km/h. Being whacked stronger than jumped from ninth floor, she still able to fight Bruce in the elevator well. But OK, this is another story, not IT-related... So asshole was killed by Bruce, and now time to power up partly shut down Power Plant. To do this, &lt;span style="font-style: italic;"&gt;“good hacker TM”&lt;/span&gt; first decide to kick away &lt;span style="font-style: italic;"&gt;“bad hackers TM”&lt;/span&gt; out his network. Here how he is doing: putting stupid ads to bad guy's screen. It looks like this &lt;span style="font-style: italic;"&gt;(for bad guy TM)&lt;/span&gt;:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp3.blogger.com/_cl8InCNq5jI/Rsw5a8sSXwI/AAAAAAAAAA8/H3PJILRsvzI/s1600-h/Picture+6.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp3.blogger.com/_cl8InCNq5jI/Rsw5a8sSXwI/AAAAAAAAAA8/H3PJILRsvzI/s400/Picture+6.png" alt="" id="BLOGGER_PHOTO_ID_5101515613035192066" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;But now I am thinking: what the hell “special software” (c) Americans are using in their Power Plants, that it is so easy add such kind of ads?.. Probably this is very innovative technologies, yet unknown.&lt;br /&gt;&lt;br /&gt;The encryption all finance information was real fun. They done it with... a screensaver:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp2.blogger.com/_cl8InCNq5jI/RsxP9ssSXxI/AAAAAAAAABE/OERvomck3h4/s1600-h/Picture+4.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp2.blogger.com/_cl8InCNq5jI/RsxP9ssSXxI/AAAAAAAAABE/OERvomck3h4/s400/Picture+4.png" alt="" id="BLOGGER_PHOTO_ID_5101540399291457298" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/602769459329747644-5450606413966639564?l=maryniuk.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://maryniuk.blogspot.com/feeds/5450606413966639564/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=602769459329747644&amp;postID=5450606413966639564' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/602769459329747644/posts/default/5450606413966639564'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/602769459329747644/posts/default/5450606413966639564'/><link rel='alternate' type='text/html' href='http://maryniuk.blogspot.com/2007/08/boring-hollywood-incompetence.html' title='Boring Hollywood Incompetence'/><author><name>BM</name><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><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp3.blogger.com/_cl8InCNq5jI/Rsw1l8sSXsI/AAAAAAAAAAc/V7XRDNakybU/s72-c/Picture+1.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-602769459329747644.post-4153453218836886394</id><published>2007-07-19T23:03:00.000+09:00</published><updated>2007-07-19T23:16:45.809+09:00</updated><title type='text'>Meet Domo-kun</title><content type='html'>I just have a new friend on my desk: &lt;a href="http://en.wikipedia.org/wiki/Domo-kun"&gt;Domo-kun&lt;/a&gt;. &lt;span style="font-weight: normal;"&gt;In Japanese it is written as どうもくん&lt;i&gt; Dōmo-ku&lt;span style="text-decoration: underline;"&gt;n&lt;/span&gt;&lt;/i&gt;. His name is like this, because only the word he knows is from greeting "Domo!" &lt;/span&gt;どうも、こんにちは (dōmo konnichiwa), which means something nearly "Well, hello there!".&lt;br /&gt;&lt;br /&gt;Domo-kun has one unexplained mystery of his DNA: a strong dislike of apples. However, it is not true at least so far. As you may see on a picture, Domo-kun looks quite happy on my Apple laptop. :-) Machine works fine and I am writing this blog entry using it. There is also another one Domo-kun, much smaller. He is standing on my Apple external drive and drive still works fine too. :-)&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp0.blogger.com/_cl8InCNq5jI/Rp9yGhktDjI/AAAAAAAAAAU/sNMUi-dbwPw/s1600-h/IMG_0008.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp0.blogger.com/_cl8InCNq5jI/Rp9yGhktDjI/AAAAAAAAAAU/sNMUi-dbwPw/s400/IMG_0008.JPG" alt="" id="BLOGGER_PHOTO_ID_5088911560369049138" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;He looks happy, eh? :-)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/602769459329747644-4153453218836886394?l=maryniuk.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://maryniuk.blogspot.com/feeds/4153453218836886394/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=602769459329747644&amp;postID=4153453218836886394' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/602769459329747644/posts/default/4153453218836886394'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/602769459329747644/posts/default/4153453218836886394'/><link rel='alternate' type='text/html' href='http://maryniuk.blogspot.com/2007/07/meet-domo-kun.html' title='Meet Domo-kun'/><author><name>BM</name><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><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp0.blogger.com/_cl8InCNq5jI/Rp9yGhktDjI/AAAAAAAAAAU/sNMUi-dbwPw/s72-c/IMG_0008.JPG' height='72' width='72'/><thr:total>0</thr:total></entry></feed>
