<?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-1237205646217514303</id><updated>2011-10-14T14:32:17.886-07:00</updated><title type='text'>nowaq blog</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://nowaqblog.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1237205646217514303/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://nowaqblog.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>nowaq</name><uri>http://www.blogger.com/profile/08806571090770196172</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://4.bp.blogspot.com/-nYXlmlodpxE/Td-vG6fTF_I/AAAAAAAADD8/Gxf_LXLfgTQ/s220/adam_for_id_head.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>56</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-1237205646217514303.post-1941176060518862849</id><published>2011-10-06T04:15:00.000-07:00</published><updated>2011-10-06T04:15:57.953-07:00</updated><title type='text'>Hero who will never be forgotten</title><content type='html'>Today is a sad day. Steve Jobs passed away. He is and always will be an inspiration to me.&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;a href="http://1.bp.blogspot.com/-lBrLlw3PLBE/To2NMgWHWDI/AAAAAAAADM4/CIqh6jEd2dI/s1600/hero.jpg" imageanchor="1" style=""&gt;&lt;img border="0" height="269" width="400" src="http://1.bp.blogspot.com/-lBrLlw3PLBE/To2NMgWHWDI/AAAAAAAADM4/CIqh6jEd2dI/s400/hero.jpg" /&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/1237205646217514303-1941176060518862849?l=nowaqblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nowaqblog.blogspot.com/feeds/1941176060518862849/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1237205646217514303&amp;postID=1941176060518862849' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1237205646217514303/posts/default/1941176060518862849'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1237205646217514303/posts/default/1941176060518862849'/><link rel='alternate' type='text/html' href='http://nowaqblog.blogspot.com/2011/10/hero-who-will-never-be-forgotten.html' title='Hero who will never be forgotten'/><author><name>nowaq</name><uri>http://www.blogger.com/profile/08806571090770196172</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://4.bp.blogspot.com/-nYXlmlodpxE/Td-vG6fTF_I/AAAAAAAADD8/Gxf_LXLfgTQ/s220/adam_for_id_head.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/-lBrLlw3PLBE/To2NMgWHWDI/AAAAAAAADM4/CIqh6jEd2dI/s72-c/hero.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1237205646217514303.post-7390462988738226710</id><published>2011-09-01T12:52:00.000-07:00</published><updated>2011-09-01T12:52:13.104-07:00</updated><title type='text'>Just passed the DKIM</title><content type='html'>Just one very short comment: &lt;b&gt;I hate email!!!!&lt;/b&gt; (and anything related to it)&lt;br /&gt;&lt;br /&gt;But now I am able to send some! ;-)&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;==========================================================&lt;br /&gt;Summary of Results&lt;br /&gt;==========================================================&lt;br /&gt;SPF check:          pass&lt;br /&gt;DomainKeys check:   neutral&lt;br /&gt;DKIM check:         pass&lt;br /&gt;DKIM check:         pass&lt;br /&gt;Sender-ID check:    pass&lt;br /&gt;SpamAssassin check: ham&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Can your software do that good? Send an email to &lt;a href="mailto:check-auth@verifier.port25.com"&gt;check-auth@verifier.port25.com&lt;/a&gt; and see for yourself.&lt;br /&gt;&lt;br /&gt;Not sure what I'm talking about? See this: &lt;a href="http://www.codinghorror.com/blog/2010/04/so-youd-like-to-send-some-email-through-code.html"&gt;http://www.codinghorror.com/blog/2010/04/so-youd-like-to-send-some-email-through-code.html&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1237205646217514303-7390462988738226710?l=nowaqblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nowaqblog.blogspot.com/feeds/7390462988738226710/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1237205646217514303&amp;postID=7390462988738226710' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1237205646217514303/posts/default/7390462988738226710'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1237205646217514303/posts/default/7390462988738226710'/><link rel='alternate' type='text/html' href='http://nowaqblog.blogspot.com/2011/09/just-passed-dkim.html' title='Just passed the DKIM'/><author><name>nowaq</name><uri>http://www.blogger.com/profile/08806571090770196172</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://4.bp.blogspot.com/-nYXlmlodpxE/Td-vG6fTF_I/AAAAAAAADD8/Gxf_LXLfgTQ/s220/adam_for_id_head.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1237205646217514303.post-6808385842326982999</id><published>2011-08-31T08:36:00.000-07:00</published><updated>2011-08-31T08:36:05.705-07:00</updated><title type='text'>SOLID by Uncle Bob</title><content type='html'>I've spend a couple of minutes today on listening to the Hanselminutes podcast about SOLID principles. The principles presented and explained by Uncle Bob himself is something you totally need to hear if you're any kind of software developer.&lt;br /&gt;&lt;br /&gt;It's really good stuff so make sure to take a couple minutes to relax and listen the podcast. It's here: &lt;a href="http://www.hanselminutes.com/default.aspx?showID=163"&gt;http://www.hanselminutes.com/default.aspx?showID=163&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;I also summarized them quickly for future reference (but you may like the &lt;a href="http://en.wikipedia.org/wiki/SOLID_%28object-oriented_design%29"&gt;Wikipedia version&lt;/a&gt; better):&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;b&gt;S (Single Responsibility)&lt;/b&gt; - Class and a method should have exactly one reason to change&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;b&gt;O – Open-Close Principle&lt;/b&gt; - Module open for extension, closed for modification. Polymorphism. We use interfaces, extend functionality by using different implementations of that interface. We can add new features by adding new code, not modifying core of the application. Principle of attitude ;-)&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;b&gt;L – Liskov substitution principle&lt;/b&gt; - The user of the interface should not be surprised by the implementation he's using. If you drive Chevrolet you should not be surprised by driving the VW. Square and Rectangle dilemma. No relationship between them. They are both a Shape, but in code, Square is not a Rectangle! (think about setHeight method.)&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;b&gt;I – Interface segregation principle&lt;/b&gt; - Applies to very fat classes, classes that have hundreds of methods and many many clients. Populations of clients that use subsets of the methods of this class. Some of the clients use couple of methods there, the other clients use couple of methods somewhere else. If a signature of one of that methods changes, then you need to recompile the class for all the clients, even that ones who are not affected by the change. You don’t want to depend on something you don’t use.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;b&gt;D – Dependency Inversion Principle&lt;/b&gt; - Depend only at things that are abstract! Don’t depend at anything concrete, anything!!!! Never touch anything concrete! (In reality of course that never happens.. but there is a rule. The rule is that only those who are volatile can ignore the principle a bit. “The things that change frequently are volatile”, e.g. Main function. You need to instantiate come stuff there... but then depend only on abstractions!)&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1237205646217514303-6808385842326982999?l=nowaqblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nowaqblog.blogspot.com/feeds/6808385842326982999/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1237205646217514303&amp;postID=6808385842326982999' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1237205646217514303/posts/default/6808385842326982999'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1237205646217514303/posts/default/6808385842326982999'/><link rel='alternate' type='text/html' href='http://nowaqblog.blogspot.com/2011/08/solid-by-uncle-bob.html' title='SOLID by Uncle Bob'/><author><name>nowaq</name><uri>http://www.blogger.com/profile/08806571090770196172</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://4.bp.blogspot.com/-nYXlmlodpxE/Td-vG6fTF_I/AAAAAAAADD8/Gxf_LXLfgTQ/s220/adam_for_id_head.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1237205646217514303.post-6057944344841236083</id><published>2011-05-23T13:59:00.000-07:00</published><updated>2011-05-26T05:48:26.891-07:00</updated><title type='text'>Say one big NO to all Office applications</title><content type='html'>Office like software is probably the most destructive, demotivating, demoralizing and unproductive tool ever used for documenting software projects. I get sick each time somebody asks me to edit some specification, design document, requirements, etc. It makes me go crazy when I need to find that documents somewhere on the file system or (as people here call it) a "global" share.&lt;br /&gt;&lt;br /&gt;The days when companies were able to manage documentation written that way are long time gone. But why do we still do that? Come on, how crazy and irresponsible is that? &lt;br /&gt;&lt;br /&gt;In the past (as I was told by couple of my older fellow colleagues) developers used to write their code and store it on an ftp server so that the other coders could take a look at the changes and continue with their updates. This meant conflicts, errors, inconsistency and other kind of bullshit making the released product a complete bullshit. People managed to solve this problem with version control systems and the nightmare was over.&lt;br /&gt;&lt;br /&gt;The problem with documents is that they are not code and not being code has a lot of disadvantages these days. &lt;br /&gt;&lt;br /&gt;First of all, there is no IDE which can help you find your stuff in seconds. There is no syntax highlighting, no auto-complete, no integrated API. The docs are also (in most cases) extremely long, specifically structured, contain lots of formatting errors, open slowly, contain useless information and the last but most important.. they are stored as files (one or more) and you never know where to put them when you're finished with the content.&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;C:\Documents\Hmm...&lt;br /&gt;or maybe&lt;br /&gt;C:\Documents and ...\..\My Documents\Hmm..&lt;br /&gt;aaah... there is this share&lt;br /&gt;\\someserver\Docs\... uppss... no, it does not quite fit here&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Some companies use LiveLink (for document versioning) but you don't want to see the screenshot of the directory structure that our fellow managers have build. Maybe I am too dumb for that but I simply can't find anything there!&lt;br /&gt;&lt;br /&gt;If you have a large project which requires documentation (e.g. medical apps do) you will be scrued very quickly if you don't find a good solution for this problems. Thousands of documents which are hard/impossible to find, nobody ever reads them or cares about, edits them only when it's a must. You end up with thousands of tools which are supposed to help you manage all that crap but what the tools do is make it even more complicated and confusing. Be careful, this may also lead to high peeks on your employee burndown chart (and the most precious employees will burn down first!).&lt;br /&gt;&lt;br /&gt;So what to do to finally drop that "standard" document writing/managing crap? People often need to share a *.doc or *.pdf with others, don't they?&lt;br /&gt;&lt;br /&gt;Yes they do, but first of all... think... think more... and more? Go on the net... read, think more... get interested in this subject and do not accept with status quo! Got it?&lt;br /&gt;&lt;br /&gt;I'll give you the solution which has proven to be extremely successful for me. Get yourself a professional Wiki. I don't mean a TFS wiki (which is CRAP), or a 10kb wiki engine that you can start on your localhost. I mean A PROFESSIONAL WIKI!&lt;br /&gt;&lt;br /&gt;Now what can a professional wiki do for you?&lt;br /&gt;&lt;ol style="margin:0;padding:0;"&gt;&lt;br /&gt;&lt;li&gt;It can manage you users so that each user:&lt;/li&gt;&lt;br /&gt;&lt;ul&gt;&lt;br /&gt; &lt;li&gt;has his personal account where he can put his private stuff&lt;/li&gt;&lt;br /&gt; &lt;li&gt;can edit, comment on, review documents (his changes will be visible in th history)&lt;/li&gt;&lt;br /&gt; &lt;li&gt;can blog (yes! blog) about the stuff that he e.g. just discovered, etc.&lt;/li&gt;&lt;br /&gt; &lt;li&gt;has a photo and personality on the wiki&lt;/li&gt;&lt;br /&gt; &lt;li&gt;can communicate directly via Wiki's web interface&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;&lt;li&gt;It can manage your documents so that:&lt;/li&gt;&lt;br /&gt;&lt;ul&gt;&lt;br /&gt; &lt;li&gt;the documents/wikis are searchable&lt;/li&gt;&lt;br /&gt; &lt;li&gt;the documents are easily editable and accessible&lt;/li&gt;&lt;br /&gt; &lt;li&gt;the documents have common structure (templating)&lt;/li&gt;&lt;br /&gt; &lt;li&gt;the documents can be exported to DOC or PDF&lt;/li&gt;&lt;br /&gt; &lt;li&gt;the documents reference the issues in ISSUE management app&lt;/li&gt;&lt;br /&gt; &lt;li&gt;the documents reference the requirements in the requirement management system&lt;/li&gt;&lt;br /&gt; &lt;li&gt;the documents can be easily versioned&lt;/li&gt;&lt;br /&gt; &lt;li&gt;the documents can handle images, movies and media well&lt;/li&gt;&lt;br /&gt; &lt;li&gt;the documents can contain tables, colors, quotes, code samples, charts, sketches, etc.&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;&lt;li&gt;It can manage your projects!&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Improves all the time!&lt;/li&gt;&lt;br /&gt;&lt;/ol&gt;&lt;br /&gt;&lt;br /&gt;Sounds non-realistic? Well, go on Google, type "Confluence" and see for yourself.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/-_gFgqF2TKDA/Td5KnpgJi5I/AAAAAAAADD0/4OsKdqeLj8U/s1600/confluence.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 151px;" src="http://4.bp.blogspot.com/-_gFgqF2TKDA/Td5KnpgJi5I/AAAAAAAADD0/4OsKdqeLj8U/s400/confluence.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5611004230766267282" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;I personally LOVE this product. Atlassian did an extremely good job with their wiki and the book they have published. At the moment it is the tool of my choice for the project that I work on and I am more then happy to use it. It's actually fun to use it which is even cooler! So, say NO to Office apps!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1237205646217514303-6057944344841236083?l=nowaqblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nowaqblog.blogspot.com/feeds/6057944344841236083/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1237205646217514303&amp;postID=6057944344841236083' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1237205646217514303/posts/default/6057944344841236083'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1237205646217514303/posts/default/6057944344841236083'/><link rel='alternate' type='text/html' href='http://nowaqblog.blogspot.com/2011/05/say-one-big-no-to-all-office.html' title='Say one big NO to all Office applications'/><author><name>nowaq</name><uri>http://www.blogger.com/profile/08806571090770196172</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://4.bp.blogspot.com/-nYXlmlodpxE/Td-vG6fTF_I/AAAAAAAADD8/Gxf_LXLfgTQ/s220/adam_for_id_head.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/-_gFgqF2TKDA/Td5KnpgJi5I/AAAAAAAADD0/4OsKdqeLj8U/s72-c/confluence.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1237205646217514303.post-7104225620200311097</id><published>2011-01-13T08:06:00.000-08:00</published><updated>2011-01-13T09:19:08.735-08:00</updated><title type='text'>Three displays... pure luxury!</title><content type='html'>I just came back from my holidays and there it is, my third display waiting for me to power it up! Yes, probably as the first in the office I got to work with 3 monitors on the daily basis to proove the legendary "increase in efficiency when using more desktop space" concept.&lt;br /&gt;&lt;br /&gt;Well, the setup itself was a bit tricky since I needed to get a special graphic card and a special adapter for one of my displays. Currently ATI supports three or more monitors with their FirePro graphic cards and Eyefinity technology. I ordered FirePro V4800 (the very basic and realatively cheap one) for my purposes. This professional card provides 2 DisplayPorts and 1 DVI port that can be used to plug-in 3 displays. But wath out, there is a trick! In order to enjoy your desktop on 3 screens, you would need at least one monitor with DiplayPort input. If you don't have one then there is an option to buy an expensive (~90-100EUR) active DisplayPort to DVI adapter for you VGA or DVI display. Since at my company they get crappy displays by default, I was forced to get one of those adapters for my setup. It works perfectly.. but it is just an uncecessary additional cost you would want to avoid when possible.&lt;br /&gt;&lt;br /&gt;It's to early to say anything about my "performace imporvements" but I already feel great about having my development env in the center, docs on the left side and build results on the right ;-)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1237205646217514303-7104225620200311097?l=nowaqblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nowaqblog.blogspot.com/feeds/7104225620200311097/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1237205646217514303&amp;postID=7104225620200311097' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1237205646217514303/posts/default/7104225620200311097'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1237205646217514303/posts/default/7104225620200311097'/><link rel='alternate' type='text/html' href='http://nowaqblog.blogspot.com/2011/01/three-displays-pure-luxury.html' title='Three displays... pure luxury!'/><author><name>nowaq</name><uri>http://www.blogger.com/profile/08806571090770196172</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://4.bp.blogspot.com/-nYXlmlodpxE/Td-vG6fTF_I/AAAAAAAADD8/Gxf_LXLfgTQ/s220/adam_for_id_head.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1237205646217514303.post-1196950054772172572</id><published>2010-11-23T10:44:00.000-08:00</published><updated>2010-11-23T12:48:04.220-08:00</updated><title type='text'>Do you speak the "programmer's language" well?</title><content type='html'>When you speak your language you usually do not ask yourself if you use it properly, what are it's strength and weakness or if you speak it better or worse than the other people. You simply use the words you know to communicate something. The communication may be faster or slower (read "more efficient" or "less efficient) independent of the communication medium. One may be able to use a rich dictionary to pass the same message using just a few properly put, sophisticated words. The other would describe the same thing with simple words. It would just take more time. Talking is natural to us and being faster or more sophisticated sometimes does not mean better. Why not? The problem with the "smart" speaker may be that there will be not to many listeners who will be able to understand him. It all depends on the environment you are in.&lt;br /&gt;&lt;br /&gt;Now imagine what happens when a PhD. in whatever subject is put in a room with a person who did not even finish a primary school. Are they able to communicate? Well... Yes. Kind of. The problem is that the PhD. guy will use 5% of his communication skills, start building long sentences of simple words just to be explain the other guy some stuff that seems basic to him. I think you already know where I am going... :-)&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_qgJ5ck8WVKo/TOwjZ1fVnEI/AAAAAAAACxw/-o8mSMWYnj8/s1600/dude_wtf.png"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 320px;" src="http://3.bp.blogspot.com/_qgJ5ck8WVKo/TOwjZ1fVnEI/AAAAAAAACxw/-o8mSMWYnj8/s400/dude_wtf.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5542844168148458562" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;The programmers are very much like usual people who instead of "speaking" the "normal, common language", "speak" programming languages, design patterns, recent technologies and some other funky stuff. (Well, at least the real programmers do.). We all know that programmers who know "the sophisticated words" can be much more efficient then those who "speak" the basics. That is mostly the reason why large companies try to hunt down the best to work for them. The problem with programmers however is that it's not that easy to verify their "spoken" skills. To do it correctly, the recruiter must actually be able to speak "the programmer's language" on at least the "considered as minimum of the best need to have" level. Why? Call back the PhD and primary school guy conversation. Accidental addition of a poorly skilled guy to your team of professionals, may (and will) lead to terrifying results. The overall team performance will go down because the communication between the developers will have a bottleneck. In the end paying big money for your experts will make no sense at all since their efficiency will be limited by other group members. The more "average" people are add, the worse the performance is. In the end the company would be better of hiring cheaper developers, as this would not make any difference for the project performance.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_qgJ5ck8WVKo/TOwnZbj_kYI/AAAAAAAACx4/ozvhL4sNoho/s1600/nicer_to_not_understand.png"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 310px;" src="http://3.bp.blogspot.com/_qgJ5ck8WVKo/TOwnZbj_kYI/AAAAAAAACx4/ozvhL4sNoho/s400/nicer_to_not_understand.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5542848559235174786" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Just to illustrate this; imagine a group of developers who all know what a strategy pattern is. Since it's definition is obvious to them, they simply say, "we use the strategy pattern here, and we will use it also there". A guy who does not know what this term means will have no idea of what are they actually talking about.. and thus, can not contribute to the conversation. Asking for explanation is correct but.. it reduces the groups performance. Now instead of simply saying the "strategy pattern" they will need to explain the poor guy what it is what they actually mean step-by-step. Looks like unnecessary effort to me.&lt;br /&gt;&lt;br /&gt;Now, why am I writing about all this well known stuff? It's actually very important to me :-) One of the hints that I'll try to keep in my mind at all times is to make sure I work with great people only! They are the source of the success, nothing else. Motivated, educated and experienced freaks who feel like they want to build something great. Get them, set the free and let them build together!&lt;br /&gt;&lt;br /&gt;B.t.w. Today I learned that knowing "the language" good does not necessarily mean the ability of using it to "discus". You know... even if you knew all the names of the European poisonous mushrooms you would not be able to really discuss about them, right? This is however another subject. For now, just make sure your people know well "the thing" they are building. The fact that they know "how to build" does not mean that they are also able to use this skill to "understand and discuss about" whatever YOU are building. Know that they want to build it too!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1237205646217514303-1196950054772172572?l=nowaqblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nowaqblog.blogspot.com/feeds/1196950054772172572/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1237205646217514303&amp;postID=1196950054772172572' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1237205646217514303/posts/default/1196950054772172572'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1237205646217514303/posts/default/1196950054772172572'/><link rel='alternate' type='text/html' href='http://nowaqblog.blogspot.com/2010/11/do-you-speak-programmers-language-well.html' title='Do you speak the &quot;programmer&apos;s language&quot; well?'/><author><name>nowaq</name><uri>http://www.blogger.com/profile/08806571090770196172</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://4.bp.blogspot.com/-nYXlmlodpxE/Td-vG6fTF_I/AAAAAAAADD8/Gxf_LXLfgTQ/s220/adam_for_id_head.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_qgJ5ck8WVKo/TOwjZ1fVnEI/AAAAAAAACxw/-o8mSMWYnj8/s72-c/dude_wtf.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1237205646217514303.post-8727285986390529852</id><published>2010-07-12T04:44:00.000-07:00</published><updated>2010-07-14T04:54:32.892-07:00</updated><title type='text'>The non-developing developers</title><content type='html'>What I totally like in a well prepared job interviews is that they, without any doubt, reveal the truth about the candiate. The truth which sometimes is unknown/unclear even to the candidate himself!&lt;br /&gt;&lt;br /&gt;Last week the head of one of our development departments asked me to help him with interviewing three people for the Java development positions. The requirements were clear. The perfect candidates had to know what they are doing. Basicaly, they need to be able to think, understand what software development in Java (or any other OO) language is, are able to solve engineering problems, are Agile, etc. Clear stuff. I decided to help. Besides, this was a great oportunity to me as well as I have never interviewed people myself. Usualy it was "them" who interviewd me.&lt;br /&gt;&lt;br /&gt;&lt;h4&gt;The interviewees&lt;/h4&gt;As I already mentioned, I received three CVs to review. Each of them was better then the other. On guy impressed me with his document so much that I felt like an incompetent person to ask him the questions. A whole lot of development expierience, tons of technologies, known programming languages, huge ammount of certifications, OOD, OOA, patterns, etc. Wow! This must be our guy, I thought!&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_qgJ5ck8WVKo/TD2lTxalzhI/AAAAAAAACuQ/DRZ_mdchpLs/s1600/confused.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 300px;" src="http://4.bp.blogspot.com/_qgJ5ck8WVKo/TD2lTxalzhI/AAAAAAAACuQ/DRZ_mdchpLs/s400/confused.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5493728879562837522" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;The other two CV's were not worse. The candidates claimed great Java knowlege. (One guy even attached SCJP6 certificate to his documents.) They all could speek at min. 2 languages (important for the project we have) and of course dreamed of working at our company. One young lady attached her photo to the documents... a big, nice photo! ;-) What more do you need?&lt;br /&gt;&lt;br /&gt;&lt;h4&gt;Preparation&lt;/h4&gt;Well, the candidates prepared themselves so I also had to. Since I did not have much time I decided to build a short list of most fundamental questions to verify the contents of their CVs. The idea was also to check if the candidates are able to think. Asking a question like "Describe Factory Pattern" does not mean that the candidate thinks. It just prooves that he knows what Factory pattern is, but does not proove that the guy will be able to use it when necessary. So, I've prepared my "Evil" question list. (I think I will publish it on this blog as well. It got really popular at our corporation so maybe you could slightly modify and use it too.) &lt;br /&gt;&lt;br /&gt;&lt;h4&gt;The truth&lt;/h4&gt;So, what happend during the interviews? Certainly something I did not expect. I mean, I new that the candidates could overestimate their skills but I totaly did not expect them to have no software engineering skills at all!&lt;br /&gt;&lt;br /&gt;None of the guys could answer a single question completely; some even partially. &lt;br /&gt;The absolute "hit of the day" was the guy who's spoken with/through his nose. His mouth did not even open (maybe a little) and it was extremely hard to understand what he was saying. He's also spoken very fast and had to correct himself from time to time. OK.. a geek maybe, I thought. Let's test!&lt;br /&gt;&lt;br /&gt;He has presentend his SCJP Certificate proudly. Since I also have one... what else could I do then ask a Java Certification question. This appeared to be too much. So I asked the guy to pick up a design pattern he likes (or rather knows best) and describe it. His reaction was: "Hehe.. Singleton". "Singleton... ok, describe it" I asked. So the guy started saying that Singleton is the simplest pattern of all. That this is useful when exactly one object is needed to coordinate actions across the system. This was acceptable answer... wikipedia like. But when I asked about potential problems with Singletons... the guy was gone. (Btw. SCJP6 includes question on threads and synchronization.) He was absolutely clueless! We asked about his other skills, like "How good is your English?". The answer was "Good". So we switched and started speaking english to him. BUM!!! The guy did not understand a word! We decided to finish.&lt;br /&gt;&lt;br /&gt;The other beautiful part was when we asked the candidates if they know anything about the products our company builds. The answer was always "NO". No. How can this be? Why do you apply here then? "Yeah, because I know this corporation, its a well known company... bla bla". Amazing! :-)&lt;br /&gt;&lt;br /&gt;I almost forgot to mention a female candidate. Young, good looking lady, right after her internship at one of our departments. We did not expect much but were interested in what she can do, if she's motivated, if there is any potential there. etc. She did not know what the difference between an interface and an abstract class is. She also could not explain what do we need interfaces for. Sorry. Oh.. and the only thing she could say in English was "Yes" with an extremely strong russian accent.&lt;br /&gt;&lt;br /&gt;&lt;h4&gt;Conclusion&lt;/h4&gt;We should apply "Holywood" principle into the process of recruiting people. "Don't call us, we will call you!". Otherwise, in most of the cases, you only get developers who can't develop.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1237205646217514303-8727285986390529852?l=nowaqblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nowaqblog.blogspot.com/feeds/8727285986390529852/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1237205646217514303&amp;postID=8727285986390529852' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1237205646217514303/posts/default/8727285986390529852'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1237205646217514303/posts/default/8727285986390529852'/><link rel='alternate' type='text/html' href='http://nowaqblog.blogspot.com/2010/07/non-developing-developers.html' title='The non-developing developers'/><author><name>nowaq</name><uri>http://www.blogger.com/profile/08806571090770196172</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://4.bp.blogspot.com/-nYXlmlodpxE/Td-vG6fTF_I/AAAAAAAADD8/Gxf_LXLfgTQ/s220/adam_for_id_head.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_qgJ5ck8WVKo/TD2lTxalzhI/AAAAAAAACuQ/DRZ_mdchpLs/s72-c/confused.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1237205646217514303.post-5399696757317807553</id><published>2010-06-29T04:52:00.000-07:00</published><updated>2010-06-29T05:17:45.343-07:00</updated><title type='text'>Quiet down the frustrating Open Space Office noises</title><content type='html'>I am and always will be the enemy of the "lets have an Open Space office" idea. From multiple articles, blog posts and research I know that Open Space makes us, software developers, sick. In the worst case, we have to share the Open Space office with guys from marketing, management, etc. and this makes us even more sick! I guess that to some guys it's simply not clear that developers need to work in peace if they are to build a good quality software. What talent do you need to have to concentrate on design of you component or some algorithm when 15 of your 50 neighbours run around, speak on the phone or simply talk with each other? If you are able to focus on your work in such an environment then you are either deaf or you have some supernatural skills of shuting down your ears while working. Most project managers can't understand that developers are humans too and can get frustrated from time to time. The fact that people are half effective at work does not seem to be a problem for the management as well.  This results in developers changing their jobs... or simply geting crazy... but who cares anyway? The office must be cheap! (Btw. in reality it isn't, but this is differnt subject and probably even harder for the managers to understand.) Like Scott Ambler once said "Management people are insane!" ... and I agree completely.&lt;br /&gt;&lt;br /&gt;Now, why do I write about it? Well, as you may have guessed, I acctualy work in an Open Space environment. However, instead of chaning my job (which I probably will do sooner or later) I decided to find some other solution to this "unfriendly development environment" problem.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_qgJ5ck8WVKo/TCniiwOPu8I/AAAAAAAACuI/aTbZfoISWGE/s1600/qc15_closeup.jpeg"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 300px; height: 400px;" src="http://2.bp.blogspot.com/_qgJ5ck8WVKo/TCniiwOPu8I/AAAAAAAACuI/aTbZfoISWGE/s400/qc15_closeup.jpeg" border="0" alt=""id="BLOGGER_PHOTO_ID_5488166707615742914" /&gt;&lt;/a&gt;&lt;br /&gt;The Head Phones with Noise Reduction system!&lt;br /&gt;&lt;br /&gt;&lt;h4&gt;Short story&lt;/h4&gt;The Noise Reducing head phones were wandering around my mind for many years before I actually got them. I saw them for the first time when I was flying to US for my high school abroad year (quite a while ago). A small guy wearing the Bose phones was siting in front of me. I remember him reading his book. He looked relaxed and seemed to enjoy the music among all this airplane noise. After few weeks I decided to find out something about his phones on the Internet. (They really must have seemed special to me.) When I saw the description and the price, I understood that they are state-of-the-art technology which I can not afford at the moment.&lt;br /&gt;&lt;br /&gt;The head phones reapeard in my life for the second time when my girlfriend joined the team working in a large Open Space office. She complained about the noise, was frustrated, couldn't concentrate on her work, (paste some other usual stuff here if you like,) etc. Frustration is not helping to build a good relationship so we sat down together and discussed about it... and &lt;br /&gt;... finally... "do you think the noise reducing headphone could help?", "why don't we try it?"&lt;br /&gt;&lt;br /&gt;&lt;h4&gt;The effect&lt;/h4&gt;You would be amazed how much noise this little toy is able to reduce. Just put them on your head, turn them on and wuala, the usual noises are reduced by 70-80% (or even more). Turn some music on at the minimal loudness level and you won't be able to hear anything from outside! Its simply amazing!&lt;br /&gt;&lt;br /&gt;The headphones worked like a cure for the Open Space sickness. After few days there was no frustration anymore, no concentration problems as well. Everyone in the office wanted to check them out and everyone who tried them bought them after some time!&lt;br /&gt;&lt;br /&gt;The only wonder was that the management guys at our corporation who actually were aware of the problem and have seen their employees solve it on their own, did not agree to sponsor this noise reducing head phones to them. The clear efficency gain per person, the low ammount of frustration, etc. were not good enough arguments. What can I say? Stupid.&lt;br /&gt;&lt;br /&gt;&lt;h4&gt;Models&lt;/h4&gt;I don't want to recomment any particular product here. There are many on the market so you can choose whichever you want. They all work very good. My personal pick was Bose QuietComfort 15. My girlfriend has Bose QuietComfort 3 model and is also very satisfied with its performance.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1237205646217514303-5399696757317807553?l=nowaqblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nowaqblog.blogspot.com/feeds/5399696757317807553/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1237205646217514303&amp;postID=5399696757317807553' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1237205646217514303/posts/default/5399696757317807553'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1237205646217514303/posts/default/5399696757317807553'/><link rel='alternate' type='text/html' href='http://nowaqblog.blogspot.com/2010/06/quiet-down-frustrating-open-space.html' title='Quiet down the frustrating Open Space Office noises'/><author><name>nowaq</name><uri>http://www.blogger.com/profile/08806571090770196172</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://4.bp.blogspot.com/-nYXlmlodpxE/Td-vG6fTF_I/AAAAAAAADD8/Gxf_LXLfgTQ/s220/adam_for_id_head.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_qgJ5ck8WVKo/TCniiwOPu8I/AAAAAAAACuI/aTbZfoISWGE/s72-c/qc15_closeup.jpeg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1237205646217514303.post-7331722838020150661</id><published>2010-06-13T09:15:00.000-07:00</published><updated>2010-06-13T09:18:54.423-07:00</updated><title type='text'>The Business of Software</title><content type='html'>No comments, just watch this!&lt;br /&gt;&lt;br /&gt;&lt;embed src="http://blip.tv/play/AYHNtX0C" type="application/x-shockwave-flash" width="480" height="350" allowscriptaccess="always" allowfullscreen="true"&gt;&lt;/embed&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1237205646217514303-7331722838020150661?l=nowaqblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nowaqblog.blogspot.com/feeds/7331722838020150661/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1237205646217514303&amp;postID=7331722838020150661' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1237205646217514303/posts/default/7331722838020150661'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1237205646217514303/posts/default/7331722838020150661'/><link rel='alternate' type='text/html' href='http://nowaqblog.blogspot.com/2010/06/business-of-software.html' title='The Business of Software'/><author><name>nowaq</name><uri>http://www.blogger.com/profile/08806571090770196172</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://4.bp.blogspot.com/-nYXlmlodpxE/Td-vG6fTF_I/AAAAAAAADD8/Gxf_LXLfgTQ/s220/adam_for_id_head.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1237205646217514303.post-3939246411296133542</id><published>2010-03-11T09:09:00.000-08:00</published><updated>2010-03-13T16:08:03.222-08:00</updated><title type='text'>News - why always negative? why always dummy? It's boring!!!</title><content type='html'>&lt;h4&gt;Introduction&lt;/h4&gt;Since a very long time I am totally disgusted by the information broadcast by the public/non-public TV (or newspaper) news. Most of it concentrates on a very negative issues and I think it has a bad influence on people. I feel it has a bad influence on me. That's why I would like to share my opinion concerning this subject with you.  Also, I want to share an idea on how this problem could be solved.&lt;br /&gt;&lt;br /&gt;Common subjects that I see in the Internet news (and simply scroll over them) go like "A politician X said that politician Y is an idiot", "5 people died in a car accident .... bla bla..", "plain crashed.... somewhere near a country I never heard about" . Some of that news are real tragedies that we really need to be familiar with (so that they never happen again). On the other hand some of them are of really minor importance or even just a total bullshit. &lt;br /&gt;&lt;br /&gt;Today I asked myself, why do people need to be informed almost only about this bad and dummy stuff? I don't like to read only about bad things all the time and would really appreciate something positive. Bad news make me feel sad, confused, unhappy ... just bad feelings there. Is there any particular reason why media do this? Why can't they simply balance positive with negative? Do all people simply like to read about bad stuff? If yes (which I don't believe), then why am I so different?&lt;br /&gt;&lt;br /&gt;&lt;h4&gt;The problem with Media&lt;/h4&gt;The problem is that media see (btw. maybe that's what they want) a group of people as a single consumer.  They do not filter their news and present them in the same way to all of us. It does not matter if you are a student, a cook or a Nobel price winner. You will all get to read the same news everybody does. This is a bad approach and I think here is where the problem appears. We all are different! The information presented to us must be personalized, otherwise it may be totally irrelevant and may affect our personality by pushing it out of its balance. This stuff is serious! Irrelevant information may affect our lives quite seriously. How? Keep reading.&lt;br /&gt;&lt;br /&gt;&lt;h4&gt;Unique personalities&lt;/h4&gt;You see, every single one of us has a unique personality, different needs,  desires, expectations, etc. What is interesting to one does not necessarily has to be interesting to the other. Of course, there are some behaviors which are more or less common to all of us. As an example, we all share the desire of staying up to date with the stuff that happens on our planet. The problem is that we are not able to consume all the information that is available to us. It is simply too much data out there and we are only able to process a small fraction of it. Since we consume the data through the process of reading, listening or through the vision, if we concentrate on unimportant data, we loose the time to get familiar with the important one. Therefore we would really appreciate if the information would be filtered according to our criteria an then presented to us so that we don't waste the time to do it ourselves.&lt;br /&gt;&lt;br /&gt;&lt;h4&gt;Staying in balance with yourself&lt;/h4&gt;I stated before that irrelevant information may affect our lives quite seriously. Here's why I think so.&lt;br /&gt;&lt;br /&gt;Lets imagine a simple guy who works all day long for some big company which pays him junk money for his hard job. When he comes back home and reads the news (the unfiltered, bad and dummy information) he probably feels happy! Yes, happy!!! Happy that he has a job, that he is alive, that he has a wife and kids and that they are alive and healthy. The news he just read force his brain to think about stuff he would never think otherwise. Mentally he needs to keep the "good" and the "bad" stuff in his life in balance, otherwise he would go crazy. Bad news he just read magnify the value of the stuff in his life that was not so bad to the levels where it can be accepted as good. The guy is happy with his bullshit salary, crappy job position, wife and kids he does not actually know that well. He's happy because he thinks, hey, there are people on this planet who don't even have what I do! That's something to be proud of. What I have is enough and makes me happy. His brain will stay in this balance until it receives the next portion of the some sort of data (e.g. a portion of "positive" news).&lt;br /&gt;&lt;br /&gt;Crazy, but I can imagine that this is the main reason why people actually like to read this kind of stuff. The message "your life does not suck that much" seems to be very attractive to many of us. It is easier to balance yourself in the negative direction (that is to "make to bad look good"). The other case may require some extra effort (that is to actually "have the good"). People are lazy, we don't like extra effort.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_qgJ5ck8WVKo/S5wl28Rwg5I/AAAAAAAACiM/i0bvqPxs2y8/s1600-h/vitruvian_man.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 400px;" src="http://2.bp.blogspot.com/_qgJ5ck8WVKo/S5wl28Rwg5I/AAAAAAAACiM/i0bvqPxs2y8/s400/vitruvian_man.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5448271275035231122" /&gt;&lt;/a&gt;&lt;br /&gt; &lt;br /&gt;Hmmm, and what would the guy think if he didn't read the news at all (I mean totally at all)? Yeah.. in many cases (not all of course) by seeing most of his colleges or neighbors having better live then he does he would think "Shit! Something is wrong here, I suck, those guys live better then I do, what can I do to become like they are.. to improve the quality of my life? They did it so I know I also can do it!". It would seem negative to the guy but in a sense it would also motivate him to do more (which on the other hand is extremely positive). As I said, the first feeling is negative because having to balance in the positive direction requires some extra work (like e.g. to learn smth, look for a new job, talk to the boss, etc.).&lt;br /&gt;&lt;br /&gt;&lt;b&gt;NOTE:&lt;/b&gt; The theoretical way of thinking in the above paragraph applies to members of non-communistic or post-communistic counties only. In such countries a guy would probably think more something like this: "What can I do to make the life of my neighbors suck as much as my life does". In this situation, the guy does not want to improve his qualities to reach his psychological balance ("have the good") but rather causes his neighbors  (which were the actual cause of putting him in psychological imbalance) to degrade to his level. This also puts the guy in the desired, balanced position. The side effect is that the neighbors are then out of the balance (no longer "have the good"), but who cares anyway :-).&lt;br /&gt;&lt;br /&gt;This was a very theoretical example of a single person being affected by the news. The problem with the "your life could suck more" message is that it affects all of the important people who surround us like a virus. Family members who could actually be good at motivating us to do more, do exactly the opposite, they believe in "the message" and force you to do the same. They don't believe in you, which makes you do the same too. Very negative stuff.&lt;br /&gt;&lt;br /&gt;This is why I think that news have to be personalized. They may cause a lot of harm to people who do not filter them by themselves. A potentially smart and creative people can be wasted by the inappropriate information presented to them in the news. The solution to the "family virus" problem may be much harder to find.&lt;br /&gt;&lt;br /&gt;&lt;h4&gt;My feelings about the news&lt;/h4&gt;Coming back to the news subject. When I see such a negative news, they generate only bad feelings in me! Only bad!! Why? I don't like the "your life does not suck so much" message at all because I differ extremely from the "common" consumer image. Most of you probably also do. This kind of news suck to all highly motivated people.&lt;br /&gt;I would rather see the news saying "The cooperated work of Politician X and politician Y lead to improvement of the ... bla bla bla", "The genius student of our [some university name] invented a .... " or "Our local companies gain respect on the international market ...". Of course our world is not perfect. There is some bad stuff we need to be informed about (wars, serious accidents, ecological catastrophes, etc.) but I would be happy to see it mixed with some positive news simply to keep them in a healthy balance. I am creative guy and want to stay that way.&lt;br /&gt;&lt;br /&gt;&lt;h4&gt;To all unhappy news consumers&lt;/h4&gt;To all of you who feel like they want to puke when they see the news. I guess, you're bettor of not reading the news at all. Instead try to talk to your friends, buy yourself magazines containing information that is really interesting to you. Also, throw your TV and Radio out of the window and see what happens in your live after the first month without it. You may be surprised.&lt;br /&gt;&lt;br /&gt;&lt;h4&gt;To the media. How to make the news personalized?&lt;/h4&gt;Well, the idea is simple. Make your web app learn about the person clicking news links. Get to know this person's personality. In a simple scenario, simply mark your news as "positive" or "negative" ("optimistic" or "pessimistic") and count the clicks (yes, just like Google does). If the guy is more interested in positive news, show him more of the positive ones. If he likes to read about political affairs, mark that and show him more news about it. People will decide which news help them stay in their psychological balance and you will filter the news appropriately for them. It's that simple! Do it!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1237205646217514303-3939246411296133542?l=nowaqblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nowaqblog.blogspot.com/feeds/3939246411296133542/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1237205646217514303&amp;postID=3939246411296133542' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1237205646217514303/posts/default/3939246411296133542'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1237205646217514303/posts/default/3939246411296133542'/><link rel='alternate' type='text/html' href='http://nowaqblog.blogspot.com/2010/03/news-why-always-negative-why-always.html' title='News - why always negative? why always dummy? It&apos;s boring!!!'/><author><name>nowaq</name><uri>http://www.blogger.com/profile/08806571090770196172</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://4.bp.blogspot.com/-nYXlmlodpxE/Td-vG6fTF_I/AAAAAAAADD8/Gxf_LXLfgTQ/s220/adam_for_id_head.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_qgJ5ck8WVKo/S5wl28Rwg5I/AAAAAAAACiM/i0bvqPxs2y8/s72-c/vitruvian_man.jpg' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1237205646217514303.post-9155554897199366203</id><published>2010-02-08T02:05:00.000-08:00</published><updated>2010-02-08T04:33:37.715-08:00</updated><title type='text'>Better email validation with Tapestry</title><content type='html'>Recently I implemented a small form for creating user accounts with Tapestry. I used all the standard &lt;code&gt;Validators&lt;/code&gt; available hoping that they will successfully pass the manual tests. Well, some of them did :-) except from one: The 'Email' Validator.&lt;br /&gt;&lt;br /&gt;If you look at the sources of Tapestry (5.1.0.5) email validator, you may spot the problem.&lt;br /&gt;&lt;pre name="code" class="Java" style="overflow:auto;"&gt;&lt;br /&gt;//...&lt;br /&gt;    private static final String ATOM = "[^\\x00-\\x1F^\\(^\\)^\\&lt;^\\&gt;^\\@^\\,^\\;^\\:^\\\\^\\\"^\\.^\\[^\\]^\\s]";&lt;br /&gt;&lt;br /&gt;    private static final String DOMAIN = "(" + ATOM + "+(\\." + ATOM + "+)*";&lt;br /&gt;&lt;br /&gt;    private static final String IP_DOMAIN = "\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\]";&lt;br /&gt;&lt;br /&gt;    private static final Pattern PATTERN = Pattern&lt;br /&gt;            .compile("^" + ATOM + "+(\\." + ATOM + "+)*@" + DOMAIN + "|" + IP_DOMAIN + ")$", Pattern.CASE_INSENSITIVE);&lt;br /&gt;&lt;br /&gt;//...&lt;br /&gt;&lt;br /&gt;public void validate(Field field, Void constraintValue, MessageFormatter formatter, String value)&lt;br /&gt;            throws ValidationException&lt;br /&gt;    {&lt;br /&gt;        if (!PATTERN.matcher(value).matches()) throw new ValidationException(buildMessage(formatter, field));&lt;br /&gt;    }&lt;br /&gt;//...&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Can you see it?&lt;br /&gt;&lt;br /&gt;What about the user "dajdajda" having account at "dhadadhahjad.edhadja.dads"? What about a Polish guy trying "adaś@ćma.pl" or German one checking out "thomas.müller@öäüß.de"? Are these really valid email addresses? Do you want to accept them? I would rather reject them right at the beginning.&lt;br /&gt;&lt;br /&gt;To me full SMTP validation is a little overkill (because of performance, complexity and multiple additional problems that make your life complicated). However a hybrid of regex checks and DNS validation seems to be the acceptable solution.&lt;br /&gt;&lt;br /&gt;I have created my custom Email Validator based on the simple DNS check code samples from &lt;a href="http://www.rgagnon.com/javadetails/java-0452.html"&gt;http://www.rgagnon.com/javadetails/java-0452.html&lt;/a&gt;. &lt;br /&gt;Also, for regex validation I used the &lt;code&gt;org.apache.commons.validator.EmailValidator&lt;/code&gt; which in my opinion offers a better regex pattern than one defined in Tapestry 5.1.0.5 (see code above). &lt;br /&gt;&lt;br /&gt;If you agree with me, then please feel free to use my code shown below (free of charge ;-)). You can create your DNSEmailValidator in any package you want, then contribute it in you AppModule.java and simply use it within your @Validate or &amp;lt;t:.. validate="dnsEmail"/&amp;gt; statements.&lt;br /&gt;&lt;br /&gt;&lt;pre name="code" class="Java" style="overflow:auto;"&gt;&lt;br /&gt;//...&lt;br /&gt;&lt;br /&gt;import java.util.Hashtable;&lt;br /&gt;&lt;br /&gt;import javax.naming.NamingException;&lt;br /&gt;import javax.naming.directory.Attribute;&lt;br /&gt;import javax.naming.directory.Attributes;&lt;br /&gt;import javax.naming.directory.DirContext;&lt;br /&gt;import javax.naming.directory.InitialDirContext;&lt;br /&gt;&lt;br /&gt;import org.apache.commons.validator.EmailValidator;&lt;br /&gt;import org.apache.tapestry5.Field;&lt;br /&gt;import org.apache.tapestry5.MarkupWriter;&lt;br /&gt;import org.apache.tapestry5.ValidationException;&lt;br /&gt;import org.apache.tapestry5.ioc.MessageFormatter;&lt;br /&gt;import org.apache.tapestry5.services.FormSupport;&lt;br /&gt;import org.apache.tapestry5.validator.AbstractValidator;&lt;br /&gt;import org.slf4j.Logger;&lt;br /&gt;import org.slf4j.LoggerFactory;&lt;br /&gt;&lt;br /&gt;public class DNSEmailValidator extends AbstractValidator&amp;lt;Void, String&amp;gt; {&lt;br /&gt; private final static Logger _logger = LoggerFactory&lt;br /&gt;   .getLogger(DNSEmailValidator.class);&lt;br /&gt;&lt;br /&gt; public DNSEmailValidator() {&lt;br /&gt;  super(null, String.class, "invalid-email");&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; public void validate(Field field, Void constraintValue,&lt;br /&gt;   MessageFormatter formatter, String value)&lt;br /&gt;   throws ValidationException {&lt;br /&gt;&lt;br /&gt;  // validate the syntax&lt;br /&gt;  final EmailValidator validator = EmailValidator.getInstance();&lt;br /&gt;  if (!validator.isValid(value))&lt;br /&gt;   throw new ValidationException(buildMessage(formatter, field));&lt;br /&gt;&lt;br /&gt;  // validate the DNS&lt;br /&gt;  final String[] tokens = value.split("@");&lt;br /&gt;  try {&lt;br /&gt;   int servers = doLookup(tokens[1]);&lt;br /&gt;   _logger.info(tokens[1] + " has " + servers + " mail servers.");&lt;br /&gt;  } catch (NamingException e) {&lt;br /&gt;   throw new ValidationException(buildMessage(formatter, field));&lt;br /&gt;  }&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; private String buildMessage(MessageFormatter formatter, Field field) {&lt;br /&gt;  return formatter.format(field.getLabel());&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; public void render(Field field, Void constraintValue,&lt;br /&gt;   MessageFormatter formatter, MarkupWriter writer,&lt;br /&gt;   FormSupport formSupport) {&lt;br /&gt;  formSupport.addValidation(field, "dnsEmail", buildMessage(formatter,&lt;br /&gt;    field), null);&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; static int doLookup(String hostName) throws NamingException {&lt;br /&gt;  Hashtable&amp;lt;String, String&amp;gt; env = new Hashtable&amp;lt;String, String&amp;gt;();&lt;br /&gt;  env.put("java.naming.factory.initial",&lt;br /&gt;    "com.sun.jndi.dns.DnsContextFactory");&lt;br /&gt;  DirContext ictx = new InitialDirContext(env);&lt;br /&gt;  Attributes attrs = ictx.getAttributes(hostName, new String[] { "MX" });&lt;br /&gt;  Attribute attr = attrs.get("MX");&lt;br /&gt;  if (attr == null)&lt;br /&gt;   return (0);&lt;br /&gt;  return (attr.size());&lt;br /&gt; }&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Contribution code:&lt;br /&gt;&lt;br /&gt;&lt;pre name="code" class="Java" style="overflow:auto;"&gt;&lt;br /&gt;//...&lt;br /&gt; public static void contributeFieldValidatorSource(&lt;br /&gt;   MappedConfiguration&amp;lt;String, Validator&amp;lt;Void, String&amp;gt;&amp;gt;&gt; configuration) {&lt;br /&gt;  configuration.add("dnsEmail", new DNSEmailValidator());&lt;br /&gt; }&lt;br /&gt;//...&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Of course, this DNSMailValidator does not make sure that the mail account really exists. It proves that there are mail servers available at the given domain name. Checking the existence of mail account may take a little longer and sometimes fail (e.g. when greylisting is enabled). The cool thing is that Tapestry allows you to create any Validator you want, so you may implement both and use the one that satisfies current requirements of your project.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1237205646217514303-9155554897199366203?l=nowaqblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nowaqblog.blogspot.com/feeds/9155554897199366203/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1237205646217514303&amp;postID=9155554897199366203' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1237205646217514303/posts/default/9155554897199366203'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1237205646217514303/posts/default/9155554897199366203'/><link rel='alternate' type='text/html' href='http://nowaqblog.blogspot.com/2010/02/better-email-validation-with-tapestry.html' title='Better email validation with Tapestry'/><author><name>nowaq</name><uri>http://www.blogger.com/profile/08806571090770196172</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://4.bp.blogspot.com/-nYXlmlodpxE/Td-vG6fTF_I/AAAAAAAADD8/Gxf_LXLfgTQ/s220/adam_for_id_head.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1237205646217514303.post-7107627570254086369</id><published>2010-02-03T05:17:00.000-08:00</published><updated>2010-02-08T00:30:48.828-08:00</updated><title type='text'>After interview</title><content type='html'>Yesterday I had a job interview for a Software Engineering (at least I thought so) position at one of the departments of my current company.&lt;br /&gt;&lt;br /&gt;I am an interview newbie (who did like 5-6 of them in his life) but I think that's enough to notice the difference between a good and poorly prepared one.&lt;br /&gt;&lt;br /&gt;Well, since the company I work for was never (and probably will never be) particularly good at interviewing software engineers, I kind of expected only pointless and stupid  questions to be asked.&lt;br /&gt;&lt;br /&gt;The fact that I usually like to read a lot on "what's the difference between a good and bad software professional", "how to filter people when you recruit them", etc. only made it only worse.&lt;br /&gt;&lt;br /&gt;I think that the guy asking the questions didn't really know what he would like to hear and know about me. How would you answer a question going something like this:&lt;br /&gt;"How much time do you think you would need to get up to speed with our project?". Well, it sounds like an important question, doesn't it? ... no doubts about it... but how the hell am I supposed to answer it if I know very little about the project, it's size, the code and documentation quality, the people (e.g. if they are helpful or not). I couldn't say that loud but I got really pissed off and thought ("This is the question you should ask yourself after getting to know me a little bit better!! That's why I am on the f.... interview, isn't it?"). Some people would probably give him an answer "As fast as it's possible", and I bet that this would satisfy that guy (who I bet loves "standard answers"). The problem is that I am a creative engineer and do not like routine too much. When interviewed I like to THINK.&lt;br /&gt;&lt;br /&gt;I usually have nothing against dummy questions like "Describe Visitor Pattern" or "What's the difference between heap and stack?". They prove that I read books from time to time, or that I happened to work on a project where people actually used design patterns. On the other hand I do not favor this kind of "checks" because they do not prove if I am a "THINKING PERSON". I may be an idiot who knows patterns by heart but has no idea how to solve complex problems with or without them. Software Engineering is more like art. There is many ways to build software, nice and less elegant ones (but still correct). We can not say that the "Gang of four" defined the best ever solutions to design and implement applications. Patterns help to solve common problems and establish communication layer between developers who know what they are. However, they do not always solve our custom problems in the best possible way (there is no such thing like "the best way" anyway). That's why I would test people not on their knowledge but rather their ability of CREATIVE THINKING.&lt;br /&gt;&lt;br /&gt;We will see if I get the job :-) The project is very interesting but one of the interviewers did a really good job in demotivating me.&lt;br /&gt;&lt;br /&gt;At the end he also said something about my experience. That he does not like the fact that I did Java development for almost all my professional career (he would be really happy if it was C++ instead). I mean... honestly, he could hold it for himself because I personally, do not regret this fact AT ALL!! Language is just a tool, and as long as people do not get that it is JUST A TOOL, they will not be able to hire the real passionate software developers.&lt;br /&gt;&lt;br /&gt;I think I suck, but my interviewer sucks much, much more! (and get's paid much, much better).&lt;br /&gt;&lt;br /&gt;The guy did one good thing though. He motivated me to spend even more time on my own project. I can't wait to finally launch it. It would better be a success!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1237205646217514303-7107627570254086369?l=nowaqblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nowaqblog.blogspot.com/feeds/7107627570254086369/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1237205646217514303&amp;postID=7107627570254086369' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1237205646217514303/posts/default/7107627570254086369'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1237205646217514303/posts/default/7107627570254086369'/><link rel='alternate' type='text/html' href='http://nowaqblog.blogspot.com/2010/02/after-interview.html' title='After interview'/><author><name>nowaq</name><uri>http://www.blogger.com/profile/08806571090770196172</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://4.bp.blogspot.com/-nYXlmlodpxE/Td-vG6fTF_I/AAAAAAAADD8/Gxf_LXLfgTQ/s220/adam_for_id_head.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1237205646217514303.post-3213449505619507933</id><published>2010-02-02T07:02:00.000-08:00</published><updated>2010-02-02T07:10:22.828-08:00</updated><title type='text'>Want to learn C++ for free?</title><content type='html'>I found a &lt;a href="http://www.learncpp.com/"&gt;very nice and free C++ tutorial&lt;/a&gt; (which kind of looks like a huge electronic book to me).&lt;br /&gt;&lt;br /&gt;I find the section &lt;a href="http://www.learncpp.com/cpp-tutorial/79-the-stack-and-the-heap/"&gt;7.9 — The stack and the heap&lt;/a&gt; particularly well written. The author uses simple analogies (e.g. the plate and the mailbox analogy) to explain how the stack and heap works. I always liked this kind of approach when learning new stuff. Unfortunately not many book authors use them in their works. Too bad!&lt;br /&gt;&lt;br /&gt;1:0 for the free electronic book.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1237205646217514303-3213449505619507933?l=nowaqblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nowaqblog.blogspot.com/feeds/3213449505619507933/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1237205646217514303&amp;postID=3213449505619507933' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1237205646217514303/posts/default/3213449505619507933'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1237205646217514303/posts/default/3213449505619507933'/><link rel='alternate' type='text/html' href='http://nowaqblog.blogspot.com/2010/02/want-to-learn-c-for-free.html' title='Want to learn C++ for free?'/><author><name>nowaq</name><uri>http://www.blogger.com/profile/08806571090770196172</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://4.bp.blogspot.com/-nYXlmlodpxE/Td-vG6fTF_I/AAAAAAAADD8/Gxf_LXLfgTQ/s220/adam_for_id_head.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1237205646217514303.post-8053873464420180917</id><published>2010-02-01T07:10:00.000-08:00</published><updated>2010-02-01T07:45:21.961-08:00</updated><title type='text'>Can call myself a C++ programmer now!</title><content type='html'>Yeah, I've finally finished the "C++ from the ground up" book today (including the last appendix).&lt;br /&gt;&lt;br /&gt;The author himself calls everyone who managed to go through all the chapters of the book a C++ programmer. I guess he is right. I totally feel like I am able to not only understand but also code some pretty advanced apps in this language. Of course, advanced does not mean perfect and bug free in this case. Every newbie has to start with some shitty code to become a master. The important point is to write the junk code at home and not contribute it to latest version of the application produced together with your colleges at work.&lt;br /&gt;&lt;br /&gt;The book is really awesome and I highly recommend it to everyone willing to learn Standard C++.&lt;br /&gt;&lt;br /&gt;The dark side of the book was that it did not cover some of the subjects commonly seen in the professionally written C++ applications. The author suggests his other book (isn't it funny? "... to know more about XXX refer to MY other book ...") to learn about e.g. "function objects" or some advanced STL data types and algorithms. Also, the author does not give any hints about how the C++ app should be structured (the ".h" files, dir structure of a project, dll's (or so's), etc.) which I think is a pity. I would expect at least a small, mini chapter covering this topic. I guess the book is good if you are willing to learn a new language (and only the language), but not the way to use it efficiently when building a large application.&lt;br /&gt;&lt;br /&gt;Well, I am happy that I've read this book and will probably come back to it from time to time to refresh my knowledge on some certain language specific subjects.&lt;br /&gt;&lt;br /&gt;Hmm... and maybe I will buy Herbert's second book "C++ The Complete Reference" to make sure I did not miss anything important. The templates, I definitely need to refresh my knowledge on templates right now! :-)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1237205646217514303-8053873464420180917?l=nowaqblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nowaqblog.blogspot.com/feeds/8053873464420180917/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1237205646217514303&amp;postID=8053873464420180917' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1237205646217514303/posts/default/8053873464420180917'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1237205646217514303/posts/default/8053873464420180917'/><link rel='alternate' type='text/html' href='http://nowaqblog.blogspot.com/2010/02/can-call-myself-c-programmer-now.html' title='Can call myself a C++ programmer now!'/><author><name>nowaq</name><uri>http://www.blogger.com/profile/08806571090770196172</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://4.bp.blogspot.com/-nYXlmlodpxE/Td-vG6fTF_I/AAAAAAAADD8/Gxf_LXLfgTQ/s220/adam_for_id_head.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1237205646217514303.post-5395246884051891795</id><published>2010-01-27T03:36:00.000-08:00</published><updated>2010-01-27T03:52:54.595-08:00</updated><title type='text'>Coming back to the book</title><content type='html'>Well, I've had a small break from reading my C++ book. I was kind of "blocked" by some other tasks which required my attention.&lt;br /&gt;&lt;br /&gt;Now I am back again and just finished reading about C++ I/0. It is nothing new, not very exciting either. The fact of adding some classes to C++ in order to make the standard C I/O methods "look better" was a good idea though. After few minutes of "playing" with the samples I was quite familiar with all the basics (and most useful) functionalities. The standard C I/O is not too bad as well but I will stick to the new OO implementation as I can already see how easy it is to write reusable components using the Standard C++ streams.&lt;br /&gt;&lt;br /&gt;Next week I will continue with Run-Time Type ID and the Casting Operators. Now, it's time to go to Austria to snowboard a little ;-)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1237205646217514303-5395246884051891795?l=nowaqblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nowaqblog.blogspot.com/feeds/5395246884051891795/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1237205646217514303&amp;postID=5395246884051891795' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1237205646217514303/posts/default/5395246884051891795'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1237205646217514303/posts/default/5395246884051891795'/><link rel='alternate' type='text/html' href='http://nowaqblog.blogspot.com/2010/01/coming-back-to-book.html' title='Coming back to the book'/><author><name>nowaq</name><uri>http://www.blogger.com/profile/08806571090770196172</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://4.bp.blogspot.com/-nYXlmlodpxE/Td-vG6fTF_I/AAAAAAAADD8/Gxf_LXLfgTQ/s220/adam_for_id_head.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1237205646217514303.post-6790345486890731406</id><published>2010-01-20T06:32:00.000-08:00</published><updated>2010-01-20T07:06:31.831-08:00</updated><title type='text'>Half way through</title><content type='html'>Today I've reached page 300 of the great "C++ from the ground up" book. What can I say? Maybe "Java makes programmer's life easy, C++ does not!" would be a good summary sentence.&lt;br /&gt;&lt;br /&gt;The concept of passing objects as parameters, returning or initializing them is much, much simpler in Java. Everything is passed by reference. C++, gives more flexibility on this subject, but it all comes with an enormous price - complex and bug-prone code! It feels like an overkill to implement a custom copy constructor everywhere the memory is dynamically allocated for the class members. It is however necessary, otherwise a serious errors may (and probably will) occur. Errors which are both, hard to find and not obvious for the beginners.&lt;br /&gt;&lt;br /&gt;So what happens if you work in a team? Some guys are good, the other just regular. There is only one thing that come to my mind - buggy and ugly code full of memory leaks made by incompetent developers. Oh.. there is a second thing that comes to my mind now. Outsourcing your C++ project to India or somewhere else may be a really bad decision.&lt;br /&gt;&lt;br /&gt;Also, all this makes me think that people at the university should not start with C++ as their primary language. It's far too complex. To be able to build a bug free apps with it is nearly impossible. How can you become a programmer if you never build a good and working app? Even a teacher may have problems with detecting those little bugs which may not scream "here I am" during every execution of the program.&lt;br /&gt;&lt;br /&gt;Moreover, an average, professional programmer is typically a lazy, not-really-responsible human being. (Since a human is not a machine and may make mistakes, she will probably do that.) No, no, C++ is not a toy, it is a heavy weapon for which reading the manual is simply a must... which is actually good for me :-) I have some time to do that now. (Which probably won't stop me from writing a shitty, bug code in the future... just like all the other do.)&lt;br /&gt;&lt;br /&gt;Oh my.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1237205646217514303-6790345486890731406?l=nowaqblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nowaqblog.blogspot.com/feeds/6790345486890731406/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1237205646217514303&amp;postID=6790345486890731406' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1237205646217514303/posts/default/6790345486890731406'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1237205646217514303/posts/default/6790345486890731406'/><link rel='alternate' type='text/html' href='http://nowaqblog.blogspot.com/2010/01/half-way-through.html' title='Half way through'/><author><name>nowaq</name><uri>http://www.blogger.com/profile/08806571090770196172</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://4.bp.blogspot.com/-nYXlmlodpxE/Td-vG6fTF_I/AAAAAAAADD8/Gxf_LXLfgTQ/s220/adam_for_id_head.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1237205646217514303.post-7765697839714351808</id><published>2010-01-19T08:15:00.000-08:00</published><updated>2010-01-19T09:06:48.305-08:00</updated><title type='text'>C++ is getting to be interesting (like never before)</title><content type='html'>The more I read my new C++ book, the more I understand how does expierience with Java (and probably the other languages like PHP or Perl) help me to simply "suck the knowlege" out of it. It is really amazing how much these languages have in common. It is also interesitng how professional expierience affects the way new knowlege gets absorbed. Now, when it's completely clear to me how a "typical" (not to overexaggerate), large scale application is build, it is far much easier for me to "detect" those "big" things about the tools (like C++) I use. I can see the value of both Java and C++ better. Also, I can now imagine (from the architectural point of view), how both of the languages can be mixed together in one project in order to achive maximum performance (e.g. web applications processing large ammounts of data). &lt;br /&gt;&lt;br /&gt;It totaly amazed me that learning a new language (syntax... completely) may be the metter of only two/three weeks. I remember it beeing so painful at the university.&lt;br /&gt;&lt;br /&gt;Today I got to the part with bitwise operations (not really needed when programming in Java or PHP) and I finally completely understood them (in terms of, why and when to use them, why do people need them, etc.). Cool stuff, I used the bitwise operators before... but I always underestimated their real power and tried to avoid them for the sake of code complexity. The same with extern, volatile and static variables. For some reason it was never well explained to me (at the university). Hmmm.. why, when and what for should I use them. Now I get it :-)&lt;br /&gt;&lt;br /&gt;Tommorow I will start with the "Object-oriented programming" part of the book. I expect to see even more cool stuff.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1237205646217514303-7765697839714351808?l=nowaqblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nowaqblog.blogspot.com/feeds/7765697839714351808/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1237205646217514303&amp;postID=7765697839714351808' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1237205646217514303/posts/default/7765697839714351808'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1237205646217514303/posts/default/7765697839714351808'/><link rel='alternate' type='text/html' href='http://nowaqblog.blogspot.com/2010/01/c-is-getting-to-be-interesting-like.html' title='C++ is getting to be interesting (like never before)'/><author><name>nowaq</name><uri>http://www.blogger.com/profile/08806571090770196172</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://4.bp.blogspot.com/-nYXlmlodpxE/Td-vG6fTF_I/AAAAAAAADD8/Gxf_LXLfgTQ/s220/adam_for_id_head.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1237205646217514303.post-7416964433008261462</id><published>2010-01-15T06:44:00.000-08:00</published><updated>2010-01-15T07:00:25.177-08:00</updated><title type='text'>The book is good</title><content type='html'>As I mentioned in my previous post, I started to read and now decided to review the "C++ from the groud up" book written by Herbert Schildt.&lt;br /&gt;&lt;br /&gt;After reading the first 127 pages (and taking a quick look at the next 100) I must say that it is really well written. The author makes sure to present as many examples as possible to make the theory clear. The book is also rich in "professional programmer's adivces". There is not many, but the most important ones (very much simplifying them) go like e.g. "global variables are bad, try not to use them because your code will be messy and piss of your fellow programmers" or "know where your pointers are pointing all the time!" (which is kind of funny, but true). This is actually something that I would expect from such a book and the author did a good job delivering a C++ programming guide for all (beginners and professionals). The book kind of feels like Kathy Sierra's "SCJP 6 Certification" book. It is full of detailed information on most important aspects of the programming language, well organized and presented. (I guess no one can present the contents as good as Kathy, but Herbert did a good job too.) The book is not boring and also makes me feel like "I want to know more.. come on, give it to me!". I kind of like this feeling, so if my eyes did't say "Adam, enough for today", I wouldn't stop reading it.&lt;br /&gt;&lt;br /&gt;Nice. So.. how many pages will I read tomorrow? I guess none :-) It's weekend!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1237205646217514303-7416964433008261462?l=nowaqblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nowaqblog.blogspot.com/feeds/7416964433008261462/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1237205646217514303&amp;postID=7416964433008261462' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1237205646217514303/posts/default/7416964433008261462'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1237205646217514303/posts/default/7416964433008261462'/><link rel='alternate' type='text/html' href='http://nowaqblog.blogspot.com/2010/01/book-is-good.html' title='The book is good'/><author><name>nowaq</name><uri>http://www.blogger.com/profile/08806571090770196172</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://4.bp.blogspot.com/-nYXlmlodpxE/Td-vG6fTF_I/AAAAAAAADD8/Gxf_LXLfgTQ/s220/adam_for_id_head.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1237205646217514303.post-3461760021462977943</id><published>2010-01-14T06:03:00.000-08:00</published><updated>2010-01-14T06:28:08.087-08:00</updated><title type='text'>New Year - Old language</title><content type='html'>Since the software world would look much better if every professional programmer would read at least one book per year, I decided to start as quick as possible with upgrading myself. My pick for January is "C++ from the ground up" by Herbert Schildt (why this book... honestly, because my girlfriend already bought it. It seems to be well written.).&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_qgJ5ck8WVKo/S08p20xoikI/AAAAAAAACgA/Vvpbj_UssAI/s1600-h/130831880701182uz6.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 321px; height: 400px;" src="http://1.bp.blogspot.com/_qgJ5ck8WVKo/S08p20xoikI/AAAAAAAACgA/Vvpbj_UssAI/s400/130831880701182uz6.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5426602097861233218" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Why C++? I was always a Java guy! I even got certified! Well, the answer is easy.. I have to! .. and I kind of like the fact that I have to as well :-)&lt;br /&gt;&lt;br /&gt;There is a slight chance for me to get a new, interesting job but C++ is a requirement. &lt;br /&gt;&lt;br /&gt;The old, powerful, mother-of-all language came back to me like a boomerang I was always trying to get rid of. Re-learning C++ after so many years of experience with Java seems to be fun right now. (I am talking about Standard C++ without any MFC or self-made bullshit.) Well, some thing are finally clear to me. I understand the power of this language much better then before. I also see where it fails by giving developers too much freedom.&lt;br /&gt;&lt;br /&gt;Hopefully, the fact that I always tried to program "into the language" instead of "in the language" will allow me to faster be able to work fluently with C++. What I am mostly afraid of is the fact that (if ever) I will probably be put into old, crappy, poorly designed and programmed project where I will have nor time neither freedom to make a change. &lt;br /&gt;&lt;br /&gt;Anyway, C++ is the new skill that I want to put in my brand new 2010 profile.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1237205646217514303-3461760021462977943?l=nowaqblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nowaqblog.blogspot.com/feeds/3461760021462977943/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1237205646217514303&amp;postID=3461760021462977943' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1237205646217514303/posts/default/3461760021462977943'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1237205646217514303/posts/default/3461760021462977943'/><link rel='alternate' type='text/html' href='http://nowaqblog.blogspot.com/2010/01/new-year-old-language.html' title='New Year - Old language'/><author><name>nowaq</name><uri>http://www.blogger.com/profile/08806571090770196172</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://4.bp.blogspot.com/-nYXlmlodpxE/Td-vG6fTF_I/AAAAAAAADD8/Gxf_LXLfgTQ/s220/adam_for_id_head.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_qgJ5ck8WVKo/S08p20xoikI/AAAAAAAACgA/Vvpbj_UssAI/s72-c/130831880701182uz6.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1237205646217514303.post-4899891557715615191</id><published>2010-01-11T04:51:00.000-08:00</published><updated>2010-01-11T07:18:51.562-08:00</updated><title type='text'>Few words about Avatar</title><content type='html'>Avatar is one of those rarely appearing movies which truly impress the audience (well, not all of course, at least all the people who were not affected by the &lt;a href="http://www.telegraph.co.uk/news/worldnews/europe/vaticancityandholysee/6963399/Vatican-calls-Avatar-bland.html"&gt;Vatican City&lt;/a&gt; in any way).&lt;br /&gt;&lt;br /&gt;James Cameron produced a really legendary movie which, behind the scenes shows us the current situation on our planet - the Earth. He has shown the Pandora moon as the highest value to its inhabitants, the place worth fighting for, the place so precious that it's worth dying for! At the same time, the aliens (Human beeings) are described as destructive organisms, acting like a virus, turning into dust everything they see with their materialistic eyes and not understand. This is exactly who we became and who we have always been.&lt;br /&gt;&lt;br /&gt;Yes, the humans and the human inventions such as money or religion starting from Ancient Egypt to Christianity which always say something about "the other world", "the better place" are guilty. Our planet should be also the greatest value to us, like to those NA'vi people. It gives us food, place to sleep, to have fun with. It is great and could be heaven for everyone! &lt;br /&gt;&lt;br /&gt;There is no other world. There is no Ra, Neptun or Christ, etc living in some king of dream land. Our real and only home is here and the only way of staying immortal is by keeping our planet healthy. Let's take care about it and teach the people respect to animals, plants and the planet itself.&lt;br /&gt;&lt;br /&gt;James, great job.&lt;br /&gt;&lt;br /&gt;So. Let's learn from this movie and change! I will start with me.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1237205646217514303-4899891557715615191?l=nowaqblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nowaqblog.blogspot.com/feeds/4899891557715615191/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1237205646217514303&amp;postID=4899891557715615191' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1237205646217514303/posts/default/4899891557715615191'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1237205646217514303/posts/default/4899891557715615191'/><link rel='alternate' type='text/html' href='http://nowaqblog.blogspot.com/2010/01/few-words-about-avatar.html' title='Few words about Avatar'/><author><name>nowaq</name><uri>http://www.blogger.com/profile/08806571090770196172</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://4.bp.blogspot.com/-nYXlmlodpxE/Td-vG6fTF_I/AAAAAAAADD8/Gxf_LXLfgTQ/s220/adam_for_id_head.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1237205646217514303.post-529799678064393773</id><published>2009-12-16T05:59:00.000-08:00</published><updated>2009-12-16T07:04:39.694-08:00</updated><title type='text'>Optimize the time you live your life</title><content type='html'>Did you ever think about moving to some not-really-civilized-country and spending there the rest of your life?... just like that.&lt;br /&gt;&lt;br /&gt;I'm trying to figure out, why oh why do I have to work for over 300 days per year just to get to go to such a country for 2 weeks for my holidays? Living in Europe is expensive, all people are in hurry and highly stressed. They smile rarely (I mean the REAL smile) and are limited by millions of artificial rules created by the government. Ok. They have the money to buy themselves a car, nice computer ... or a house. Do they really need that? &lt;br /&gt;&lt;br /&gt;On the other hand, people who live e.g. in Bali (Indonesia), do not really have the money, but:&lt;br /&gt;* The fruit grows all over the place (if you're hungry... just go to the jungle and get some)&lt;br /&gt;* Rice prices are extremely low&lt;br /&gt;* It's worm there all year around, no need to have the electricity (unless you feel better in air-conditioned rooms).&lt;br /&gt;* People do not hurry, have no big work stress.. if they need money, they simply look for some dummy tourists and get some from them&lt;br /&gt;* If you have skills like "scuba dive master", you may open your own business and have fun all year around (sometimes even get paid to guide some tourists underwater)&lt;br /&gt;* No need to leave for holiday brake... you are on holidays.&lt;br /&gt;&lt;br /&gt;Hmm... maybe I am wrong, but I think that people on Bali are happier then we are. Maybe they are poor but they live their lives more than we do!&lt;br /&gt;&lt;br /&gt;So what do I do now... ? Get a visa and optimize my life? Maybe... when I am older ;-)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1237205646217514303-529799678064393773?l=nowaqblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nowaqblog.blogspot.com/feeds/529799678064393773/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1237205646217514303&amp;postID=529799678064393773' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1237205646217514303/posts/default/529799678064393773'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1237205646217514303/posts/default/529799678064393773'/><link rel='alternate' type='text/html' href='http://nowaqblog.blogspot.com/2009/12/optimize-time-you-live-your-life.html' title='Optimize the time you live your life'/><author><name>nowaq</name><uri>http://www.blogger.com/profile/08806571090770196172</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://4.bp.blogspot.com/-nYXlmlodpxE/Td-vG6fTF_I/AAAAAAAADD8/Gxf_LXLfgTQ/s220/adam_for_id_head.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1237205646217514303.post-3047652717513596374</id><published>2009-10-29T08:00:00.001-07:00</published><updated>2009-10-29T08:14:52.818-07:00</updated><title type='text'>Great day</title><content type='html'>I worked with MS Power Point the whole day today. This is how I feel now.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_qgJ5ck8WVKo/Sumv77jkS6I/AAAAAAAACa8/l1u7KAVCqUA/s1600-h/img.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 170px; height: 200px;" src="http://3.bp.blogspot.com/_qgJ5ck8WVKo/Sumv77jkS6I/AAAAAAAACa8/l1u7KAVCqUA/s400/img.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5398039072514263970" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Isn't it funny? Even solving the most complex Java class loader and reflection related software bugs does not bring me to this state as fast as MS Office does. I have nothing against Power Point, it's probably just me. After a day spend on preparing a presentation I feel like I wasted 7 hours of my precious life!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1237205646217514303-3047652717513596374?l=nowaqblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nowaqblog.blogspot.com/feeds/3047652717513596374/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1237205646217514303&amp;postID=3047652717513596374' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1237205646217514303/posts/default/3047652717513596374'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1237205646217514303/posts/default/3047652717513596374'/><link rel='alternate' type='text/html' href='http://nowaqblog.blogspot.com/2009/10/great-day.html' title='Great day'/><author><name>nowaq</name><uri>http://www.blogger.com/profile/08806571090770196172</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://4.bp.blogspot.com/-nYXlmlodpxE/Td-vG6fTF_I/AAAAAAAADD8/Gxf_LXLfgTQ/s220/adam_for_id_head.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_qgJ5ck8WVKo/Sumv77jkS6I/AAAAAAAACa8/l1u7KAVCqUA/s72-c/img.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1237205646217514303.post-1222163291779764083</id><published>2009-10-07T06:16:00.000-07:00</published><updated>2009-10-08T02:16:30.550-07:00</updated><title type='text'>Installing and using OSGi Deployment Admin Service</title><content type='html'>This is my first tutorial published on this blog. I hope you'll find it helpful and interesting.&lt;br /&gt;&lt;br /&gt;In this tutorial you will:&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;Learn where to find and how to build and install an OSGi Deployment Admin Service implementation (well, at least partial implementation, but I guess you are welcome to contibute to it)&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Get to know the structure of a standard "Deployment Package"&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Learn how to use the Felix Web Console together with Deployment Admin to install and run a full OSGi based application (consisting of multiple bundles)&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;I assume that you are familiar with OSGi Service Compendium Release 4 specification (particularly section 114) so I will simply skip the introduction part to save myself some typing.&lt;br /&gt;&lt;br /&gt;In this tutorial I will concentrate on one of the most essential responsibilities of a Deployment Admin Service. As described in Service Compendium the Deployment Admin &lt;i&gt;"provides a Deployment Package concept to install and uninstall bundles and related resources on an OSGi Service Platform as an atomic unit"&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;Isn't it cool? We can package all our bundles (together with their configuration and permission information) into a single archive and then deploy it at once! Great! &lt;br /&gt;&lt;br /&gt;Let's check it all out then.&lt;br /&gt;&lt;br /&gt;&lt;h2&gt;Step 1: Starting the OSGi Container&lt;/h2&gt;&lt;br /&gt;In this tutorial I will use "&lt;a href="http://archive.eclipse.org/eclipse/equinox/drops/R-3.4-200806172000/index.php"&gt;Equinox 3.4&lt;/a&gt;". On the downloads page select the "eclipse-equinox-3.4.zip" and save it on your hard drive. While you're on the equinox downloads web site, take a look at the "Add-on Bundles"... do you see Deployment Admin there? No. Me neither :-) But don't worry, we will take care about it later.&lt;br /&gt;&lt;br /&gt;Unpack Equinox (stuff inside the "eclipse" directory) to some meaningful directory (e.g. /opt/equinox or C:\Software\equinox). After you are done, cd to the instalation folder and start the container by issuing this command:&lt;br /&gt;&lt;div class="code"&gt;&lt;br /&gt; $ java -jar plugins/org.eclipse.osgi_3.4.0.v20080605-1900.jar -console&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;Great! It works. Now we need to customize the initial configuration a little bit to make sure that all required services are there before we begin with Deployment Admin and Felix Web Console.&lt;br /&gt;&lt;br /&gt;Exit OSGi console (type "exit"). Go to you equinox/plugins/configuration directory. Create new file called "config.ini" and fill it with the following content:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;osgi.bundles=org.eclipse.equinox.common_3.4.0.v20080421-2006@2:start,\&lt;br /&gt; org.eclipse.osgi.util_3.1.300.v20080303.jar@2:start,\&lt;br /&gt; org.eclipse.osgi.services_3.1.200.v20071203@2:start,\&lt;br /&gt; org.eclipse.equinox.event_1.1.0.v20080225@2:start,\&lt;br /&gt; org.eclipse.equinox.util_1.0.0.v20080414@2:start,\&lt;br /&gt; org.eclipse.equinox.cm_1.0.0.v20080509-1800@2:start,\&lt;br /&gt; org.eclipse.equinox.ds_1.0.0.v20080427-0830@2:start,\&lt;br /&gt; org.eclipse.equinox.log_1.1.0.v20080414@2:start,\&lt;br /&gt; javax.servlet_2.4.0.v200806031604@2:start,\&lt;br /&gt; org.eclipse.equinox.http.servlet_1.0.100.v20080427-0830@2:start,\&lt;br /&gt; org.apache.commons.logging_1.0.4.v20080605-1930@2:start,\&lt;br /&gt; org.mortbay.jetty_5.1.14.v200806031611@2:start,\&lt;br /&gt; org.eclipse.equinox.http.jetty_1.1.0.v20080425@2:start&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Start the equinox again and type "ss" for status information. You should see this:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_qgJ5ck8WVKo/Ss2P-ZCV3kI/AAAAAAAACaM/6iyKdXkjTfQ/s1600-h/equinox_start_config.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 379px;" src="http://2.bp.blogspot.com/_qgJ5ck8WVKo/Ss2P-ZCV3kI/AAAAAAAACaM/6iyKdXkjTfQ/s400/equinox_start_config.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5390122631067721282" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Great. Now lets play with the new stuff...&lt;br /&gt;&lt;br /&gt;&lt;h2&gt;Step 2: Getting the Deployment Agent Implementation&lt;/h2&gt;&lt;br /&gt;I've spend some time googling to actually find a "half-functional" implementation of this service. I don't know, maybe the implementors thought that this service is kind of unimportant, but I find it quite useful... whatever. The only existing implementation (that I know  to this point of time) comes from Apache Felix project. It is however not available yet in form of a stable, binary distribution. To use it you will need to download the sources and build it yourself. The good part of the story is that Apache guys used Maven as their "build tool" so getting the jar is just the matter of typing one simple command.&lt;br /&gt;&lt;br /&gt;Here's what you do:&lt;br /&gt;&lt;ol&gt;&lt;br /&gt;&lt;li&gt;Get the sources from the &lt;a href="http://svn.apache.org/viewvc/felix/trunk/deploymentadmin/"&gt;Felix SVN repository&lt;/a&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Build the project with "mvn clean install"&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Copy the newly created jars (org.apache.felix.deploymentadmin-0.9.0-SNAPSHOT.jar, and org.apache.felix.deployment.rp.autoconf-0.1.0-SNAPSHOT.jar) to your equinox/plugins directory.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;From the Felix downloads website get the &lt;a href="http://felix.apache.org/site/downloads.cgi"&gt;Dependency Manager&lt;/a&gt; (version 2.0.1 and copy it to the equinox/plugins directory (required by Deployment Admin Service)&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Update the equinox/plugins/configuration/config.ini file adding the new bundles to the end of the list&lt;pre&gt;&lt;br /&gt;  ...&lt;br /&gt;  org.apache.felix.dependencymanager-2.0.1@2:start,\&lt;br /&gt;  org.apache.felix.deployment.rp.autoconf-0.1.0-SNAPSHOT@2:start,\&lt;br /&gt;  org.apache.felix.deploymentadmin-0.9.0-SNAPSHOT@2:start&lt;br /&gt;&lt;/pre&gt;&lt;/li&gt;&lt;br /&gt;&lt;/ol&gt;&lt;br /&gt;&lt;br /&gt;Start Equinox. Type "ss". You should see all services as "ACTIVE". &lt;br /&gt;&lt;br /&gt;&lt;h2&gt;Step 3: Creating the Deployment Package&lt;/h2&gt;&lt;br /&gt;Nice. The Deployment Admin seems to run just fine. It would be good to check out how it deals with a standard "Deployment Package". &lt;br /&gt;&lt;br /&gt;What is a deployment package? Well, according to spec - &lt;i&gt;"A Deployment Package is a set of related resources that need to be managed&lt;br /&gt;as a unit rather than individual pieces. For example, a Deployment Package&lt;br /&gt;can contain both a bundle and its configuration data. The resources of a&lt;br /&gt;Deployment Package are tightly coupled to the Deployment Package and&lt;br /&gt;cannot be shared with other Deployment Packages."&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;Let's create one then, a really simple one. First, lets take a look at the basic structure of a &lt;code&gt;*.dp&lt;/code&gt; file (MIME type: application/vnd.osgi.dp).&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;deploymentpackage-0.0.1.dp&lt;br /&gt;  |&lt;br /&gt;  - org.nowaqblog.bundle1-0.0.1.jar&lt;br /&gt;  - org.nowaqblog.bundle2-0.0.1.jar&lt;br /&gt;  - META-INF&lt;br /&gt;       |- MANIFEST.MF&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;As you can see our deployment package is a simple jar/zip file (having "dp" extension) which consists of two bundles and a MANIFEST.MF file. The bundles are the complete application that we want to deploy using Deployment Agent. The MANIFEST.MF consists of specialy defined sections. The "global section" and multiple "name sections". The content of these sections is well described in OSGi Sevice Compendium (114.3.3). &lt;br /&gt;&lt;br /&gt;For the purpose of this tutorial I created a simple deployment package MANIFEST.MF file like this:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;Manifest-Version: 1.0&lt;br /&gt;Created-By: 1.6.0_13 (Sun Microsystems Inc.)&lt;br /&gt;Created-At: 1254918423406&lt;br /&gt;DeploymentPackage-ManifestVersion: 1&lt;br /&gt;Content-Type: application/vnd.osgi.dp&lt;br /&gt;DeploymentPackage-SymbolicName: org.nowaqblog.deploymnetpackage&lt;br /&gt;DeploymentPackage-Version: 0.0.1&lt;br /&gt;DeploymentPackage-Copyright: Nowaq (c) 2009&lt;br /&gt;DeploymentPackage-ContactAddress: mailto:your.email@host&lt;br /&gt;DeploymentPackage-DocURL: http://host/doc&lt;br /&gt;&lt;br /&gt;Name: org.nowaqblog.bundle1-0.0.1.jar&lt;br /&gt;Bundle-SymbolicName: org.nowaqblog.bundle1&lt;br /&gt;Bundle-Version: 0.0.1&lt;br /&gt;&lt;br /&gt;Name: org.nowaqblog.bundle2-0.0.1.jar&lt;br /&gt;Bundle-SymbolicName: org.nowaqblog.bundle2&lt;br /&gt;Bundle-Version: 0.0.1&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;So, your job is simply to package all the bundles being the part of your application into dp file and add appropriate description in the MANIFEST.MF file. Simple, isn't it? &lt;br /&gt;&lt;br /&gt;&lt;h2&gt;Step 4: Installing deployment packages via Deployment Admin Web UI (Felix Web Console)&lt;/h2&gt;&lt;br /&gt;Ok. Now we have all that we need. The deployment admin and the deployment package are ready to be used. How to do it then? Well, two options come to my mind. We could either extend the Equinox Management Console with a new command or use the Felix Web Console and deploy our package using web interface. You may find the first approach cooler (you learn how to use Deployment Agent API), but for the sake of simplicity I will stick with the second approach in this tutorial.&lt;br /&gt;&lt;br /&gt;First we need the web console installed. Go ahead and download it from Felix web site (&lt;a href="http://mirror.uoregon.edu/apache/felix/org.apache.felix.webconsole-1.2.10.jar"&gt;http://mirror.uoregon.edu/apache/felix/org.apache.felix.webconsole-1.2.10.jar&lt;/a&gt;).&lt;br /&gt;&lt;br /&gt;Add this new bundle to your equinox startup configuration. (Add new entry in the config.ini file.)&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;  ...&lt;br /&gt;  org.apache.felix.webconsole-1.2.10@2:start&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Start equinox and type "ss". All bundles should be "ACTIVE".&lt;br /&gt;&lt;br /&gt;You may now check out the Felix Web Console at &lt;a href="http://localhost/system/console"&gt;http://localhost/system/console&lt;/a&gt;. You will need to authenticate with "admin/admin". Play around a bit and go to the "Deployment packages" tab. This is the one of particular interest for us.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_qgJ5ck8WVKo/Ss2omBm8mxI/AAAAAAAACaU/Dg2T2uOwmro/s1600-h/felix_web_console.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 194px;" src="http://4.bp.blogspot.com/_qgJ5ck8WVKo/Ss2omBm8mxI/AAAAAAAACaU/Dg2T2uOwmro/s400/felix_web_console.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5390149700252637970" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;h2&gt;Step 5: Deploying the application to the OSGi Container&lt;/h2&gt;&lt;br /&gt;This is the easiest part of the story :-) In the Deployment Admn view of the Felix Web Management Console browse for your "dp" file and click on Install/Update button. Your package should deploy in a few seconds. The web interface will provide you will all the information you need.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_qgJ5ck8WVKo/Ss2qEOaPvNI/AAAAAAAACac/usWHwE1ketE/s1600-h/felix_web_console_dp.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 139px;" src="http://3.bp.blogspot.com/_qgJ5ck8WVKo/Ss2qEOaPvNI/AAAAAAAACac/usWHwE1ketE/s400/felix_web_console_dp.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5390151318596730066" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Check out equinox console. The packages should be there indicating the "ACTIVE" state. Yeah! You just deployed your first "Deployment Package" using a "Deployment Admin Service". Congratulations!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1237205646217514303-1222163291779764083?l=nowaqblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nowaqblog.blogspot.com/feeds/1222163291779764083/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1237205646217514303&amp;postID=1222163291779764083' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1237205646217514303/posts/default/1222163291779764083'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1237205646217514303/posts/default/1222163291779764083'/><link rel='alternate' type='text/html' href='http://nowaqblog.blogspot.com/2009/10/installing-and-using-osgi-deployment.html' title='Installing and using OSGi Deployment Admin Service'/><author><name>nowaq</name><uri>http://www.blogger.com/profile/08806571090770196172</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://4.bp.blogspot.com/-nYXlmlodpxE/Td-vG6fTF_I/AAAAAAAADD8/Gxf_LXLfgTQ/s220/adam_for_id_head.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_qgJ5ck8WVKo/Ss2P-ZCV3kI/AAAAAAAACaM/6iyKdXkjTfQ/s72-c/equinox_start_config.jpg' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1237205646217514303.post-1621827722231516417</id><published>2009-09-28T01:26:00.000-07:00</published><updated>2009-09-28T02:51:03.997-07:00</updated><title type='text'>Toshiba Satellite P100-102 - for Windows XP users only</title><content type='html'>Three years ago my girlfriend bought herself a notebook - The Toshiba P100-102. We've chosen it together as it's always better to have more critical points of view when it comes to buying such stuff. Our decision was based on multiple aspects. The critical ones were quality, performance and display size. My girlfriend upgraded this list with the additional one - "the looks". This notebook really rocked. Even today, after three years its performance would be totally satisfactory if not... the BIOS and the "f***n" graphic card cooling issue!&lt;br /&gt;&lt;br /&gt;Toshiba mounted the "NVIDIA GeForce Go 7600" card into this great and whatsoever beautiful box. This was the largest mistake the company could ever make! Why? This chip has to be cooled down with a fan. After three years of what I would call "normal usage" the card simply DIED! And as you would expect, without the card the rest may be considered DEAD too!!! The funny part is, my girlfriend did not play any games, the chip did never work under extreme pressure. So how can that be?&lt;br /&gt;&lt;br /&gt;Well, I always trusted Toshiba and believed that what they build will run for at least next 10-15 years (this was the case of my first notebook with Celeron 650MHz - it still simply runs!). What the hell did you guys do? Did you change your strategy from building quality products to building shit and forcing people to change their boxes every year?? I hope not, because if you did, I'll never buy a Toshiba again!!!&lt;br /&gt;&lt;br /&gt;So what happened with the card? Did it overheat? Oh YES it did! Why? Well, this is what I found on nvidia Linux support forum after doing some research on "fan problems + P100 + geforce go". The guys explain how Toshiba controls the fan cooling the GPU. Here's what some said:&lt;br /&gt;&lt;br /&gt;&lt;i&gt;"... The modified Toshiba nvidia driver is constantly polling the MAX6659 sensor and then writing something into it's own embedded controller that is controlling the fan. So, I don't think it's a problem with the nvidia drivers but instead with Toshiba simply not telling nvidia how to control the fans they are using on their nvidia based laptops..."&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;This means:&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;you're stuck with old XP (note: not only windows! you are stuck with XP!)&lt;/li&gt;&lt;br /&gt;&lt;li&gt;you're stuck with old Toshiba modified NVIDIA drivers&lt;/li&gt;&lt;br /&gt;&lt;li&gt;you're possibly stuck with specific BIOS version too (at least you may hack it easily)&lt;/li&gt;&lt;br /&gt;&lt;li&gt;well... in other words, this notebook SUCKS!!! (as well as many other based on same idea and GeForce Go GPUs)&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;The whole cooling system story sounds a bit like a "big hack", immaturity and incompetence of the notebook manufacturer! So how do I see the Toshiba notebooks now? I will say just one thing. I am an OpenSource software fan... I don't like to be limited... and I absolutely HATE low quality components (including software of course) in my notebook!&lt;br /&gt;&lt;br /&gt;So what am I going to buy now (apart from new, old GeForce 7600)?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1237205646217514303-1621827722231516417?l=nowaqblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nowaqblog.blogspot.com/feeds/1621827722231516417/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1237205646217514303&amp;postID=1621827722231516417' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1237205646217514303/posts/default/1621827722231516417'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1237205646217514303/posts/default/1621827722231516417'/><link rel='alternate' type='text/html' href='http://nowaqblog.blogspot.com/2009/09/toshiba-satellite-p100-102-for-windows.html' title='Toshiba Satellite P100-102 - for Windows XP users only'/><author><name>nowaq</name><uri>http://www.blogger.com/profile/08806571090770196172</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://4.bp.blogspot.com/-nYXlmlodpxE/Td-vG6fTF_I/AAAAAAAADD8/Gxf_LXLfgTQ/s220/adam_for_id_head.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1237205646217514303.post-4282171595920773526</id><published>2009-09-24T00:36:00.000-07:00</published><updated>2009-09-24T01:14:26.231-07:00</updated><title type='text'>When should you reinvent the wheel?</title><content type='html'>You will be warned by so many software developers to not make this big mistake and reinvent the wheel again. They will say that this is purely just a waste of time. Your solution will be new, not properly tested and probably not efficient too. In other words "it will suck anyway!" Well... they are totally right! Well.. at least in most of the cases. There are however some buts... and this is going to be the subject of this short blog post.&lt;br /&gt;&lt;br /&gt;There are cases when reinventing the wheel is exactly the thing that you want to do! This is connected with two very important subjects: education and evolution. Let's take Intel as an example. What would it be if they stuck with their i386 processor implementation and not reinvent it again in form of i486, then Pentium and finally Core 2? The technology changes... did you ask yourself why? Because people invent new things, often by reinventing the wheel. Those changes allow other people to go further by getting rid of old limitations (e.g. performance, functionalities, etc.). This leads us towards optimization of our existing solutions ("the old wheel") and creating new ones ("rocket powered multi-road moon wheel" - which is still a wheel, but a better one).&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_qgJ5ck8WVKo/SrsqQWoGqAI/AAAAAAAACZs/MUU5n005c4A/s1600-h/i_just_reinvented_the_wheel_tshirt.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 400px;" src="http://1.bp.blogspot.com/_qgJ5ck8WVKo/SrsqQWoGqAI/AAAAAAAACZs/MUU5n005c4A/s400/i_just_reinvented_the_wheel_tshirt.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5384944239891621890" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Also, if you are newbie in the IT world willing to become a "guru" in the future. How the hell will you get to know how stuff works if you have never looked inside of it? How can you make it better if you are not allowed to change the hearts of it?&lt;br /&gt;&lt;br /&gt;If you have time and creative mind then go ahead and do it. Please, reinvent the wheel so that I can use it in my next large, time intensive project allowing me to make a lot of money ;-)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1237205646217514303-4282171595920773526?l=nowaqblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nowaqblog.blogspot.com/feeds/4282171595920773526/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1237205646217514303&amp;postID=4282171595920773526' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1237205646217514303/posts/default/4282171595920773526'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1237205646217514303/posts/default/4282171595920773526'/><link rel='alternate' type='text/html' href='http://nowaqblog.blogspot.com/2009/09/when-should-you-reinvent-wheel.html' title='When should you reinvent the wheel?'/><author><name>nowaq</name><uri>http://www.blogger.com/profile/08806571090770196172</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://4.bp.blogspot.com/-nYXlmlodpxE/Td-vG6fTF_I/AAAAAAAADD8/Gxf_LXLfgTQ/s220/adam_for_id_head.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_qgJ5ck8WVKo/SrsqQWoGqAI/AAAAAAAACZs/MUU5n005c4A/s72-c/i_just_reinvented_the_wheel_tshirt.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1237205646217514303.post-3765412730460888861</id><published>2009-09-16T03:39:00.000-07:00</published><updated>2009-09-16T12:24:10.551-07:00</updated><title type='text'>The wisdom of "Döner Kebab" consumers</title><content type='html'>I was pretty hungry yesterday in the evening so I decided to go to the city center to get me a "Döner". The plan was good, the only problem I had was that I didn't know which place to choose. The city of Munich has hundreds (or rather thousands) of them! Each place offers very similar product for the similar price. How do I choose the one offering a good quality and won't cause me stomach aches at night?&lt;br /&gt;&lt;br /&gt;So what did I do? Well... I just relied on the instinct :-) Sounds easy, but as soon as I got what I wanted (a nice, fresh and tasty "Döner") I realized how complex and logical my decision making process was. (Tip: It has something to do with groups.)&lt;br /&gt;&lt;br /&gt;Once I got to the city center I walked along the street for a while passing "Döner" bars. I didn't go to the first one, not even to the second one or third one. The one I've chosen was somewhere in the middle of the street. Just a typical "Döner" place (small and a bit dirty looking). There was however one significant difference if you compared this place to the other ones. In this bar there were people, many people. What's more, people who were waiting in a queue for their food to get prepared. Why did my brain told me to go there and wait with those guys? Illogical, isn't it?&lt;br /&gt;&lt;br /&gt;No, it's not. It's rather really cool! This group actually "told" me which place to choose by simply being there and my instinct convinced me that I should rely on their wisdom. &lt;br /&gt;&lt;br /&gt;The choice was perfect. I got myself a "Döner" having a very good "price/quality" ratio... just because I was relying on my instinct.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_qgJ5ck8WVKo/SrDlk0Fua7I/AAAAAAAACYc/8X2AbL8JBpo/s1600-h/donner.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 267px;" src="http://4.bp.blogspot.com/_qgJ5ck8WVKo/SrDlk0Fua7I/AAAAAAAACYc/8X2AbL8JBpo/s400/donner.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5382053975328451506" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Interestingly, in my city I do not rely on the instinct anymore. I simply know where to go. I guess I learned which bars are the best from some other groups ;-)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1237205646217514303-3765412730460888861?l=nowaqblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nowaqblog.blogspot.com/feeds/3765412730460888861/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1237205646217514303&amp;postID=3765412730460888861' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1237205646217514303/posts/default/3765412730460888861'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1237205646217514303/posts/default/3765412730460888861'/><link rel='alternate' type='text/html' href='http://nowaqblog.blogspot.com/2009/09/wisdom-of-dunner-consumers.html' title='The wisdom of &quot;Döner Kebab&quot; consumers'/><author><name>nowaq</name><uri>http://www.blogger.com/profile/08806571090770196172</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://4.bp.blogspot.com/-nYXlmlodpxE/Td-vG6fTF_I/AAAAAAAADD8/Gxf_LXLfgTQ/s220/adam_for_id_head.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_qgJ5ck8WVKo/SrDlk0Fua7I/AAAAAAAACYc/8X2AbL8JBpo/s72-c/donner.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1237205646217514303.post-6457648510371857074</id><published>2009-09-15T07:21:00.000-07:00</published><updated>2009-09-15T07:25:19.326-07:00</updated><title type='text'>Better controlling the Cloud</title><content type='html'>This is what I found on the web. Check it out:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://link.brightcove.com/services/player/bcpid1753162278?bctid=17374112001" taget="_blank"&gt;http://link.brightcove.com/services/player/bcpid1753162278?bctid=17374112001&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Seems to be an interesting idea. Waiting for some opensource product going this way.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1237205646217514303-6457648510371857074?l=nowaqblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nowaqblog.blogspot.com/feeds/6457648510371857074/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1237205646217514303&amp;postID=6457648510371857074' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1237205646217514303/posts/default/6457648510371857074'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1237205646217514303/posts/default/6457648510371857074'/><link rel='alternate' type='text/html' href='http://nowaqblog.blogspot.com/2009/09/better-controlling-cloud.html' title='Better controlling the Cloud'/><author><name>nowaq</name><uri>http://www.blogger.com/profile/08806571090770196172</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://4.bp.blogspot.com/-nYXlmlodpxE/Td-vG6fTF_I/AAAAAAAADD8/Gxf_LXLfgTQ/s220/adam_for_id_head.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1237205646217514303.post-512988623590262884</id><published>2009-09-14T06:56:00.000-07:00</published><updated>2009-09-14T07:51:10.475-07:00</updated><title type='text'>I hate Mondays!</title><content type='html'>Last week I've booked my hotel and tickets to Munchen. I originally planed to stay there for three days (read two nights) and then come back to Erlangen and work remotely. Everything was great until today when I realized that I've made appointment for Thursday with a guy who substitutes my boss and comes to get some feedback info about me and my work. This fu... totally sucks! Booking another hotel just for one night in Munchen (it won't be cheap), re-booking the ticket (those guys at DB really know how to piss somebody off), etc. My girlfriend will be pissed of too (I promised to give her a ride to Nuernberg to the dentist on Thursday.) Why didn't I look at the calendar last week? It was all written there!! I don't get it! Oh.. I am such a... oh... no... I just hate these fu... Mondays!!!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1237205646217514303-512988623590262884?l=nowaqblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nowaqblog.blogspot.com/feeds/512988623590262884/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1237205646217514303&amp;postID=512988623590262884' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1237205646217514303/posts/default/512988623590262884'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1237205646217514303/posts/default/512988623590262884'/><link rel='alternate' type='text/html' href='http://nowaqblog.blogspot.com/2009/09/i-hate-mondays.html' title='I hate Mondays!'/><author><name>nowaq</name><uri>http://www.blogger.com/profile/08806571090770196172</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://4.bp.blogspot.com/-nYXlmlodpxE/Td-vG6fTF_I/AAAAAAAADD8/Gxf_LXLfgTQ/s220/adam_for_id_head.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1237205646217514303.post-5328945640368086489</id><published>2009-08-26T06:02:00.000-07:00</published><updated>2009-09-03T06:52:22.632-07:00</updated><title type='text'>Monkey see, monkey do</title><content type='html'>For the next two months I am going to work on a software project in Munich, Germany. Moving to a big city is quite a change for a guy like me. I am a person used to quiet, small and clean places the population of which does not exceed the size of 100.000 people. There are naturally many disadvantages of living in a small town but I personally think that the pros overtake the cons dramatically if you value the quality of your life the most.&lt;br /&gt;&lt;br /&gt;I have been researching (reading about) the subject of "Groups" and "Behavior of individuals being a part of Groups" for a few weeks now. The last few days in Munich proved the theory I was familiar with and allowed me to experience some of those "wise statements" I've learned in practice.&lt;br /&gt;&lt;br /&gt;The amount of people who unconsciously base their decision making on decision making of the group is extremely large. One of my observations (in the Munich subway) proves that when in a rush, many of our decisions are based on instincts. These instincts fire some behaviors which are proven to be "ok" or sometimes even "safe" or "normal". Consider this: What would you do if a group of people (let’s assume 10 people) surrounding you would suddenly start running in the opposite direction? Would you run with them? Would you at least think about it? Would you be scared? Or maybe you would decide to analyze the situation and make you decision based on "strict facts" concerning you?&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_qgJ5ck8WVKo/Sp_J2qfzw-I/AAAAAAAACWk/Z6H0P6M4Ltk/s1600-h/black-spider-monkey.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 276px;" src="http://3.bp.blogspot.com/_qgJ5ck8WVKo/Sp_J2qfzw-I/AAAAAAAACWk/Z6H0P6M4Ltk/s400/black-spider-monkey.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5377238421061485538" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;I was on my way to get the train to my office. There was no rush. One of the digital displays showed that next train will arrive in approximately 5 minutes. I decided to slowly go to my destination. I've chosen the escalator because I am very, very lazy guy in the morning. There were about 6-7 people on the way in front of me too. Unexpectedly, two of the guys rushed of the escalator as if there was a train coming in a few seconds. There would be nothing special about it if not the fact that the rest of people who were standing in front of me rushed after them. (Interestingly, those behind me didn't.) When I reached the station, I saw the confused faces of those people. They were moving chaotically as if filled with some sort of energy generated by sudden jump of adrenaline level. Why did they react that way? Why did I feel like reacting the way the others did? That's crazy!&lt;br /&gt;&lt;br /&gt;Being part of the completely different environment on day-to-day basis allowed me to "save my independence". I know however that if I was to stay in that city for a longer while I would become part of that "system/crowd" and my decisions would no longer be based on rational facts. They would be rather based on instincts taking over the decision making process for the boring part of my life.&lt;br /&gt;&lt;br /&gt;Anyway, do not ever forget this:&lt;br /&gt;&lt;i&gt;&lt;pre&gt;&lt;br /&gt;Life moves pretty fast. If you don't stop to look &lt;br /&gt;around once in a while you'll miss it.&lt;br /&gt; -- Faris Beulers day off.&lt;br /&gt;&lt;/pre&gt;&lt;/i&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1237205646217514303-5328945640368086489?l=nowaqblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nowaqblog.blogspot.com/feeds/5328945640368086489/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1237205646217514303&amp;postID=5328945640368086489' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1237205646217514303/posts/default/5328945640368086489'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1237205646217514303/posts/default/5328945640368086489'/><link rel='alternate' type='text/html' href='http://nowaqblog.blogspot.com/2009/08/monkey-see-monkey-do.html' title='Monkey see, monkey do'/><author><name>nowaq</name><uri>http://www.blogger.com/profile/08806571090770196172</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://4.bp.blogspot.com/-nYXlmlodpxE/Td-vG6fTF_I/AAAAAAAADD8/Gxf_LXLfgTQ/s220/adam_for_id_head.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_qgJ5ck8WVKo/Sp_J2qfzw-I/AAAAAAAACWk/Z6H0P6M4Ltk/s72-c/black-spider-monkey.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1237205646217514303.post-7794829637803606430</id><published>2009-08-03T23:32:00.000-07:00</published><updated>2009-08-04T02:29:40.042-07:00</updated><title type='text'>Why big hardware corporations can not write software?</title><content type='html'>I think one could write an entire Ph.D. thesis on this subject. Master's thesis could be to short and not cover all the aspects/problems the large corporations are dealing with.&lt;br /&gt;&lt;br /&gt;I experience this sort of problems everyday since this is the kind of corporation I currently work for. It is extremely interesting to observe the behavior of people working here and it would be such a waste if I didn’t share some of my experience with you.&lt;br /&gt;&lt;br /&gt;&lt;h3&gt;Why do they build software if they are hardware experts?&lt;/h3&gt;&lt;br /&gt;Well, the thing is that modern hardware has to go together with some sort of software. It needs it to function properly or/and to interact with the user. The devices the company produces are therefore useless without appropriate software package. Since the company builds the device itself, they are also the ones who understand it best. They simply know how the software should interact with their product. This knowledge is very seductive and makes them think: "Well, we've build the hardware, building software is just the formality then". &lt;br /&gt;&lt;br /&gt;Since there is no way to go around this and some kind of software has to be build in the end, many companies choose to build it by themselves (and keep the implementation details "secret").&lt;br /&gt;&lt;br /&gt;&lt;h3&gt;Why build it yourself, why not?&lt;/h3&gt;&lt;br /&gt;This is actually a very good question. If you have no experience with building software, then what do you do? Yes, you outsource it to someone who does! This idea is not that bad but only under one condition; you outsource the project entirely to the professionals who really know what they are doing! The problem of most hardware companies is that they want to go cheap. They simply outsource their projects to places where the so called "programmers" do not cost a lot. ("You know, the software is just this virtual piece of functionality that we need but is naturally of lower importance for the hardware itself, which our main product!"). This is the place where they are totally wrong and the "numbers" that management has seen at the beginning of the project turned out to grow up exponentially after delivery of the first working version of the new so called "software package".&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_qgJ5ck8WVKo/Snf_ZYk6ZvI/AAAAAAAACPw/_NHL_O-qqJI/s1600-h/Homework.gif"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 281px;" src="http://1.bp.blogspot.com/_qgJ5ck8WVKo/Snf_ZYk6ZvI/AAAAAAAACPw/_NHL_O-qqJI/s400/Homework.gif" border="0" alt=""id="BLOGGER_PHOTO_ID_5366038292594321138" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;h3&gt;So what do they do when they see the problem?&lt;/h3&gt;&lt;br /&gt;First of all they want the code back to their development centre. However, as soon as it’s there they realize there is no one who understands it. (I think that even the best software developers would have problem with it.) So what do they do next? Yes, they look for people who do (or at least say that they do). This is actually the place of their second failure. When they hire their new software developers they actually don’t know what kind of people they want. This problem may be well explained by the company’s lack of knowledge and experience related with building software. The group of their current hardware (or old software) engineers is simply not able to recruit good software developers since they themselves don’t know what the difference between "good" and "bad" is. So after asking the questions like: "How much experience with C++/ Java do you have?" or "Do you know what Ajax is?" they tend to recruit trashy people who have just a little idea about the art of software development.&lt;br /&gt;&lt;br /&gt;&lt;h3&gt;But that's not all...&lt;/h3&gt;&lt;br /&gt;Hardware companies usually do not use, understand (or want to understand) the agile development methods. They stick with their waterfall models (or waterfall-like models) and think that something which was suitable for hardware can be also suitable for software. Well, it is not.&lt;br /&gt;&lt;br /&gt;The typical problems they face:&lt;ul&gt;&lt;br /&gt;&lt;li&gt;Lack or badly defined requirements&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Lack or bad architectural design. No "design for change". ("who needs architecture after all? We need to deliver soon so please start coding now!")&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Lack of good software developers&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Lack of unit, integration and system tests (no comments...)&lt;/li&gt;&lt;br /&gt;&lt;li&gt;[ ...write some yourself... ]&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;I was recently on a job interview at the typical, medium size "software company" in Berlin. These guys really impressed me with both, their professionalism and their recruitment process. I have spoken with the project manager and one of the lead developers. They knew absolutely everything about their product, developers, development methods they used and project management tools. They were even able to draw a simplified version of the architectural design of their application to explain me how it works and where they see me in that project. I didn't accept that job because of personal reasons and partially because they could not offer me the same or better financial conditions as I have at the moment. Now I kind of feel it was a bad decision.&lt;br /&gt;&lt;br /&gt;Yesterday I was on a job interview for the other department at my current company (see, I am a "software engineer to rent"). The interviewers were totally different. They didn't know what they wanted from me, asked inappropriate questions, tried to convince me about how .NET is superior to Java technology without any reasonable arguments. They made me angry and in the end offered a JavaScript coding position for some sort of user interface they don't have requirements for. Can you imagine this? This was simply a waste of my (precious :-)) time. The funny part is that even though I don’t fit that position at all, they will probably accept me.&lt;br /&gt;&lt;br /&gt;In the end I have one short message to all hardware developers. Guys, wake up! Software is a real deal! Be careful who you hire and don't forget to get rid of all that bad, useless and incompetent, so called architects, developers and most of all project (or product) managers!!! I want to be able relax when I am using my new digital TV receiver or get X-Rayed at the hospital, so please, get educated and do it right!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1237205646217514303-7794829637803606430?l=nowaqblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nowaqblog.blogspot.com/feeds/7794829637803606430/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1237205646217514303&amp;postID=7794829637803606430' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1237205646217514303/posts/default/7794829637803606430'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1237205646217514303/posts/default/7794829637803606430'/><link rel='alternate' type='text/html' href='http://nowaqblog.blogspot.com/2009/08/why-big-hardware-corporations-can-not.html' title='Why big hardware corporations can not write software?'/><author><name>nowaq</name><uri>http://www.blogger.com/profile/08806571090770196172</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://4.bp.blogspot.com/-nYXlmlodpxE/Td-vG6fTF_I/AAAAAAAADD8/Gxf_LXLfgTQ/s220/adam_for_id_head.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_qgJ5ck8WVKo/Snf_ZYk6ZvI/AAAAAAAACPw/_NHL_O-qqJI/s72-c/Homework.gif' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1237205646217514303.post-4679738666525575683</id><published>2009-07-28T07:53:00.000-07:00</published><updated>2009-07-29T02:16:30.438-07:00</updated><title type='text'>Tapestry 5.1 on JBoss 5.1</title><content type='html'>Well, today I tried this configuration and guess what... it didn't work! We all know who to blame (and this is not the Tapestry guys)! Now, what can we do about it?&lt;br /&gt;&lt;br /&gt;The information on Tapestry wiki states that there is a workaround required for Tapestry to work on JBoss 5.0.x. The wiki says also that the workaround wouldn't work with JBoss 5.1. Hmmm... to bad, but why wouldn't it work?&lt;br /&gt;&lt;br /&gt;I've decided to debug the code I got from the wiki and take a look at the behavior differences on both versions of JBoss. After an hour of debugging I found out that the URLs to the resources are build differently for jars which are packed inside of wars. There is however easy way to make them look the same.&lt;br /&gt;&lt;br /&gt;Here's my patch for the &lt;a href="http://wiki.apache.org/tapestry/HowToRunTapestry5OnJBoss5"&gt;original workaround at Tapestry Wiki.&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre name="code" class="Java"&gt;&lt;br /&gt; ...&lt;br /&gt; public URL convert(URL url) {&lt;br /&gt;   if (url != null &amp;&amp; url.getProtocol().startsWith("vfs")) {&lt;br /&gt;     // supports virtual filesystem used by JBoss 5.x&lt;br /&gt;     try {&lt;br /&gt;       URLConnection connection = url.openConnection();&lt;br /&gt;       Object virtualFile = invokerGetter(connection, "getContent");&lt;br /&gt;       Object zipEntryHandler = invokerGetter(virtualFile, "getHandler");&lt;br /&gt;       Object realUrl = invokerGetter(zipEntryHandler, "getRealURL");&lt;br /&gt;       &lt;br /&gt;       // start of the patch (small fix for JBoss 5.1)&lt;br /&gt;       if (realUrl.toString().endsWith("jar")) {&lt;br /&gt;         Object localPath = invokerGetter(zipEntryHandler, "getLocalPathName");&lt;br /&gt;         Object context = invokerGetter(zipEntryHandler, "getZipEntryContext");&lt;br /&gt;         Object tempUrl = invokerGetter(context, "getRealURL");&lt;br /&gt;         realUrl = new URL(tempUrl + "" + localPath);&lt;br /&gt;       }&lt;br /&gt;       // end of the patch&lt;br /&gt;       return (URL) realUrl;&lt;br /&gt;     } catch (Exception e) {&lt;br /&gt;       log.info(e.getCause());&lt;br /&gt;     }&lt;br /&gt;   }&lt;br /&gt;   return url;&lt;br /&gt; }&lt;br /&gt; ...&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Now, you may enjoy having Tapestry on your favorite application server... and wait for a more professional workaround from Apache guys.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1237205646217514303-4679738666525575683?l=nowaqblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nowaqblog.blogspot.com/feeds/4679738666525575683/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1237205646217514303&amp;postID=4679738666525575683' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1237205646217514303/posts/default/4679738666525575683'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1237205646217514303/posts/default/4679738666525575683'/><link rel='alternate' type='text/html' href='http://nowaqblog.blogspot.com/2009/07/tapestry-51-on-jboss-51.html' title='Tapestry 5.1 on JBoss 5.1'/><author><name>nowaq</name><uri>http://www.blogger.com/profile/08806571090770196172</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://4.bp.blogspot.com/-nYXlmlodpxE/Td-vG6fTF_I/AAAAAAAADD8/Gxf_LXLfgTQ/s220/adam_for_id_head.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1237205646217514303.post-7571960150027414044</id><published>2009-07-28T01:06:00.001-07:00</published><updated>2009-07-30T23:50:37.268-07:00</updated><title type='text'>Twitter - isn't it just an observer pattern</title><content type='html'>It just occurred to me how great and powerful design patterns really are. Well, I must admit that I always thought about them as if there were just a tool that I can use to build great, exciting, flexible and maintainable applications. Well, after all that's totally true! However, it never occurred to me that I could take a design pattern and make an entire application out of it. Yes, I mean it! The pattern may be a great business idea! The business idea where the pattern implementation itself is all the software has to offer to its users. Sounds simple, doesn't it?&lt;br /&gt;&lt;br /&gt;The concrete pattern that I am "secretly" thinking about is commonly known as an "&lt;a href="http://en.wikipedia.org/wiki/Observer_pattern"&gt;Observer pattern&lt;/a&gt;".  This "recipe" is extremely important to every good software developer who would like to build a flexible system which needs to deal with some sort of event handling… but you already know that. Now, take this pattern and map it to the real world. This is actually where it originally came from. What do you see?&lt;br /&gt;&lt;br /&gt;I see e.g.:&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;newspaper companies and  their subscribers&lt;/li&gt;&lt;br /&gt;&lt;li&gt;church and all the people who "subscribed" to it. They (typically) receive recent information about some sort of catholic events... etc. whatever...&lt;/li&gt;&lt;br /&gt;&lt;li&gt;the company which employs you and yourself. Well, you subscribed to get the money every month from them. The bad part is that you have to work to keep yourself on the list of subscribers.&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;As you can see our live is surrounded with observer pattern. It is natural that people love patterns. They make our lives easier. We don't have to think so much about that many things around us. Just this simple fact proves that a pattern itself can be a great business idea! How can we use it then to build our own business on the web using this common "routine"?&lt;br /&gt;&lt;br /&gt;In my opinion, the best example is the Twitter. In Twitter you are acting as a Subject and Observer at the same time. The network of observers and subjects is therefore huge! Every time you post a message, all people who are your observers get informed about it. Every time the subject you subscribed to is posting an update you get informed about it too. Isn't it great!? Take a pattern and use it directly to make a lot of money. This is of course pure theory. The internal implementation of Twitter is probably not that simple, but this is not the point of this post. &lt;br /&gt;&lt;br /&gt;So, when thinking about your next genius, innovative business idea, just make sure to take a closer look at the design patterns. Try to map them to the real world problems and use to build solutions nobody thought about yet.&lt;br /&gt;&lt;br /&gt;I think that this approach will always lead you to a success. Here's why:&lt;br /&gt;&lt;ol&gt;&lt;br /&gt;&lt;li&gt;This new thing of yours (whatever it is) will work for sure. Design patterns were tested by millions and proved to work correctly and efficiently.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;It will also be simple... and since people like it to be simple it makes a perfect match.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;We all probably will know this routine by our hearts. We just didn't suppose that you could use it this way.  This means that the users will know how to use your software right away!&lt;/li&gt;&lt;br /&gt;&lt;li&gt;There is more... and more... and more... but I am too lazy and too dumb to put them here.&lt;/li&gt;&lt;br /&gt;&lt;/ol&gt;&lt;br /&gt;Anyway, I will re-read my patterns book and look for some clues there.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1237205646217514303-7571960150027414044?l=nowaqblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nowaqblog.blogspot.com/feeds/7571960150027414044/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1237205646217514303&amp;postID=7571960150027414044' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1237205646217514303/posts/default/7571960150027414044'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1237205646217514303/posts/default/7571960150027414044'/><link rel='alternate' type='text/html' href='http://nowaqblog.blogspot.com/2009/07/twitter-isnt-it-just-observer-pattern.html' title='Twitter - isn&apos;t it just an observer pattern'/><author><name>nowaq</name><uri>http://www.blogger.com/profile/08806571090770196172</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://4.bp.blogspot.com/-nYXlmlodpxE/Td-vG6fTF_I/AAAAAAAADD8/Gxf_LXLfgTQ/s220/adam_for_id_head.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1237205646217514303.post-6366753876673062596</id><published>2009-07-21T04:58:00.001-07:00</published><updated>2009-07-21T05:01:35.386-07:00</updated><title type='text'>Modern Web Design</title><content type='html'>If you are a guy who spends a lot of time on web application development, then check this out and tell me if you agree:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://tapestryjava.blogspot.com/2008/06/time-breakdown-of-modern-web-design.html"&gt;http://tapestryjava.blogspot.com/2008/06/time-breakdown-of-modern-web-design.html&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Now..  this is so true, isn't it!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1237205646217514303-6366753876673062596?l=nowaqblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nowaqblog.blogspot.com/feeds/6366753876673062596/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1237205646217514303&amp;postID=6366753876673062596' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1237205646217514303/posts/default/6366753876673062596'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1237205646217514303/posts/default/6366753876673062596'/><link rel='alternate' type='text/html' href='http://nowaqblog.blogspot.com/2009/07/modern-web-design.html' title='Modern Web Design'/><author><name>nowaq</name><uri>http://www.blogger.com/profile/08806571090770196172</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://4.bp.blogspot.com/-nYXlmlodpxE/Td-vG6fTF_I/AAAAAAAADD8/Gxf_LXLfgTQ/s220/adam_for_id_head.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1237205646217514303.post-2898552435178174344</id><published>2009-07-20T12:54:00.001-07:00</published><updated>2009-07-20T12:56:53.628-07:00</updated><title type='text'>Do you own PT AX100 E/U?</title><content type='html'>For some time now, the device (which I personally love) kept misbehaving. Every 5min it turned itself of... very, very annoying when you watch e.g. an action movie.&lt;br /&gt;&lt;br /&gt;If you too have this problem, this is what you should do to fix it:&lt;br /&gt;&lt;a href="http://www.youtube.com/watch?v=6jGwB05_gdk"&gt;http://www.youtube.com/watch?v=6jGwB05_gdk&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1237205646217514303-2898552435178174344?l=nowaqblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nowaqblog.blogspot.com/feeds/2898552435178174344/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1237205646217514303&amp;postID=2898552435178174344' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1237205646217514303/posts/default/2898552435178174344'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1237205646217514303/posts/default/2898552435178174344'/><link rel='alternate' type='text/html' href='http://nowaqblog.blogspot.com/2009/07/do-you-own-pt-ax100-eu.html' title='Do you own PT AX100 E/U?'/><author><name>nowaq</name><uri>http://www.blogger.com/profile/08806571090770196172</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://4.bp.blogspot.com/-nYXlmlodpxE/Td-vG6fTF_I/AAAAAAAADD8/Gxf_LXLfgTQ/s220/adam_for_id_head.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1237205646217514303.post-5126163336100217938</id><published>2009-07-17T05:22:00.000-07:00</published><updated>2009-07-17T05:51:09.526-07:00</updated><title type='text'>Gmail-like text overflow</title><content type='html'>Today I've learned how to implement a nice gmail effect of text overflow. I was trying to build it for few hours with no good effect. I googled a bit and found the "correct" answer on this blog:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://ajaxian.com/archives/learning-from-gmail"&gt;http://ajaxian.com/archives/learning-from-gmail&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;It's a very useful feature if you like to implement your web UI using liquid layout. The user may see more if he has a bigger screen (which is fine.. I like to know that having a big screen is actually a plus when I browse the net). Also, the effect allows your table to look more consistent independently on the screen resolution of the client viewing it. That's really nice!&lt;br /&gt;&lt;br /&gt;Here's the style that I used:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;...&lt;br /&gt;&lt;br /&gt;  .grid {&lt;br /&gt;     table-layout: fixed;&lt;br /&gt;     width: 100%;&lt;br /&gt;  }&lt;br /&gt;  .grid * td {&lt;br /&gt;     white-space: nowrap;&lt;br /&gt;     empty-cells: show;&lt;br /&gt;     overflow: hidden;&lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt;...&lt;br /&gt;&lt;br /&gt;  &amp;lt;table class="grid"&amp;gt;&lt;br /&gt;   &amp;lt;col style="width:100px"/&amp;gt;&lt;br /&gt;   &amp;lt;col /&amp;gt;&lt;br /&gt;   &amp;lt;col style="width:100px"/&amp;gt;&lt;br /&gt;   &amp;lt;tbody&amp;gt;&lt;br /&gt;    &amp;lt;tr&amp;gt;&lt;br /&gt;     &amp;lt;td style="padding-left:10px;"&amp;gt;Other&amp;lt;/td&amp;gt;&lt;br /&gt;     &amp;lt;td&amp;gt;&lt;br /&gt;      &amp;lt;a href="#"&amp;gt;&lt;br /&gt;        Very long text.&lt;br /&gt;      &amp;lt;/a&amp;gt;&lt;br /&gt;     &amp;lt;/td&amp;gt;&lt;br /&gt;     &amp;lt;td style="padding-left:10px;"&amp;gt;Other&amp;lt;/td&amp;gt;&lt;br /&gt;    &amp;lt;/tr&amp;gt;&lt;br /&gt;   &amp;lt;/tbody&amp;gt;&lt;br /&gt;  &amp;lt;/table&amp;gt;&lt;br /&gt;&lt;br /&gt;...&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;And here's how it looks like:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_qgJ5ck8WVKo/SmByVmLjUpI/AAAAAAAACOY/FE48gQf6HXI/s1600-h/simple-text-overflow.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 120px;" src="http://4.bp.blogspot.com/_qgJ5ck8WVKo/SmByVmLjUpI/AAAAAAAACOY/FE48gQf6HXI/s400/simple-text-overflow.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5359409271922709138" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;I've dropped the "width:100%" property. It seems to be not necessary. Have a happy coding!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1237205646217514303-5126163336100217938?l=nowaqblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nowaqblog.blogspot.com/feeds/5126163336100217938/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1237205646217514303&amp;postID=5126163336100217938' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1237205646217514303/posts/default/5126163336100217938'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1237205646217514303/posts/default/5126163336100217938'/><link rel='alternate' type='text/html' href='http://nowaqblog.blogspot.com/2009/07/gmail-like-text-overflow.html' title='Gmail-like text overflow'/><author><name>nowaq</name><uri>http://www.blogger.com/profile/08806571090770196172</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://4.bp.blogspot.com/-nYXlmlodpxE/Td-vG6fTF_I/AAAAAAAADD8/Gxf_LXLfgTQ/s220/adam_for_id_head.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_qgJ5ck8WVKo/SmByVmLjUpI/AAAAAAAACOY/FE48gQf6HXI/s72-c/simple-text-overflow.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1237205646217514303.post-3701410481676256256</id><published>2009-07-14T00:58:00.000-07:00</published><updated>2009-07-14T01:17:47.850-07:00</updated><title type='text'>Impressed by Groovy and Grails</title><content type='html'>For the last few days I've been playing around with Grails framework just to get to know what it is about. I must say that I am really... no, that's to small for it... extremely impressed by its completeness, maturity and ease of use.&lt;br /&gt;&lt;br /&gt;Building web applications is not an easy task. It involves many different subjects such as architectural deign, build process design and automation, database integration, user interface design, security, more and more stuff, etc. Grails covers all of those subjects within one, easy to understand framework. This stuff is really amazing!&lt;br /&gt;&lt;br /&gt;Till now, I have been thinking that the only right technology for building web applications is Java. Well, I still think so, but now I would additionaly say... yes, it's Java but extended by Grails framework.&lt;br /&gt;&lt;br /&gt;I really recommend you to take a look at the Apress'es book "The Definitive Guide to Grails 2nd Edition (2009)". Read a few chapters and discover what it means to quickly build complex web apps with an Agile framework.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_qgJ5ck8WVKo/Slw-ChNFmwI/AAAAAAAACOQ/H402LOAtmjY/s1600-h/grailsbook.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 240px; height: 240px;" src="http://2.bp.blogspot.com/_qgJ5ck8WVKo/Slw-ChNFmwI/AAAAAAAACOQ/H402LOAtmjY/s400/grailsbook.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5358225869657971458" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Here's amazon link: &lt;a href="http://www.amazon.de/gp/product/1590599950/ref=s9_subs_bw_s0_p14_i2?pf_rd_m=A3JWKAKR8XB7XF&amp;pf_rd_s=center-1&amp;pf_rd_r=0PZYNZ3C711G2AFVB2PG&amp;pf_rd_t=101&amp;pf_rd_p=467015493&amp;pf_rd_i=52044011"&gt;The Definitive Guide to Grails 2nd Edition&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1237205646217514303-3701410481676256256?l=nowaqblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nowaqblog.blogspot.com/feeds/3701410481676256256/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1237205646217514303&amp;postID=3701410481676256256' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1237205646217514303/posts/default/3701410481676256256'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1237205646217514303/posts/default/3701410481676256256'/><link rel='alternate' type='text/html' href='http://nowaqblog.blogspot.com/2009/07/impressed-by-groovy-and-grails.html' title='Impressed by Groovy and Grails'/><author><name>nowaq</name><uri>http://www.blogger.com/profile/08806571090770196172</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://4.bp.blogspot.com/-nYXlmlodpxE/Td-vG6fTF_I/AAAAAAAADD8/Gxf_LXLfgTQ/s220/adam_for_id_head.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_qgJ5ck8WVKo/Slw-ChNFmwI/AAAAAAAACOQ/H402LOAtmjY/s72-c/grailsbook.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1237205646217514303.post-496106160174752335</id><published>2009-07-11T15:38:00.000-07:00</published><updated>2009-07-11T15:40:22.909-07:00</updated><title type='text'>... } finally { certified = true; }</title><content type='html'>Yeah, I finally got certified!&lt;br /&gt;&lt;br /&gt;It has been one of my TODOs for a few years now. The problem always was that I could never find time to prepare myself really well for this. There was this huge book to read, mock tests to do, etc. and lots of other task apart from that. I am happy that I didn't forget and finaly did what I planned to do.&lt;br /&gt;&lt;br /&gt;I scored 84% and must say that I am pretty happy about it. Anything above 95% would probably mean that I am not a human beeing anymore but a Java compiler instead.&lt;br /&gt;&lt;br /&gt;Some of the questinos were extremely hard but there were also no-brainers. Anyway, if you think that you could pass the SCJP exam without any preparation (because you have multiple years of expierience with Java) then you are totaly wrong! I screwed up mostly "Concurrency" questions even though I scored above 90% with Whizlabs Mock tests. It's just not predictable what kind of problems you may get to solve on the exam.&lt;br /&gt;&lt;br /&gt;Now I may learn Groovy in piece :-)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1237205646217514303-496106160174752335?l=nowaqblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nowaqblog.blogspot.com/feeds/496106160174752335/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1237205646217514303&amp;postID=496106160174752335' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1237205646217514303/posts/default/496106160174752335'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1237205646217514303/posts/default/496106160174752335'/><link rel='alternate' type='text/html' href='http://nowaqblog.blogspot.com/2009/07/finally-certified-true.html' title='... } finally { certified = true; }'/><author><name>nowaq</name><uri>http://www.blogger.com/profile/08806571090770196172</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://4.bp.blogspot.com/-nYXlmlodpxE/Td-vG6fTF_I/AAAAAAAADD8/Gxf_LXLfgTQ/s220/adam_for_id_head.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1237205646217514303.post-4984185162718168833</id><published>2009-07-09T10:43:00.000-07:00</published><updated>2009-07-09T10:56:37.937-07:00</updated><title type='text'>What's it gonna be?</title><content type='html'>Finally, THE TEST!&lt;br /&gt;&lt;br /&gt;If everything goes well, I will get certified tommorow. After writing tons of code samples, reading the book, practicing with Mock test I am still not sure what's it gonna be! &lt;br /&gt;&lt;br /&gt;Today I've learned something new! Would you expect something like this could print "true"?&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;  Integer i = 18;&lt;br /&gt;  Integer j = 18;&lt;br /&gt;  System.out.println(i == j);&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Interetingly, all samples shown below will print "false":&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;  Integer i = 18;&lt;br /&gt;  Integer j = new Integer(18);&lt;br /&gt;  System.out.println(i == j);&lt;br /&gt;&lt;br /&gt; ...&lt;br /&gt;&lt;br /&gt;  Integer i = 128;&lt;br /&gt;  Integer j = 128;&lt;br /&gt;  System.out.println(i == j);&lt;br /&gt;&lt;br /&gt; ...&lt;br /&gt;&lt;br /&gt;  Integer i = new Integer(18);&lt;br /&gt;  Integer j = new Integer(18);&lt;br /&gt;  System.out.println(i == j);&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Eeeh? Yes! Try it yourself! I'm not kidding! And there is more examples similar to the one shown above (e.g. Double.NaN == Double.NaN ... returns false).&lt;br /&gt;&lt;br /&gt;Well, it's gonna be tough, that's for sure!&lt;br /&gt;&lt;br /&gt;Wish me luck!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1237205646217514303-4984185162718168833?l=nowaqblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nowaqblog.blogspot.com/feeds/4984185162718168833/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1237205646217514303&amp;postID=4984185162718168833' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1237205646217514303/posts/default/4984185162718168833'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1237205646217514303/posts/default/4984185162718168833'/><link rel='alternate' type='text/html' href='http://nowaqblog.blogspot.com/2009/07/whats-it-gonna-be.html' title='What&apos;s it gonna be?'/><author><name>nowaq</name><uri>http://www.blogger.com/profile/08806571090770196172</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://4.bp.blogspot.com/-nYXlmlodpxE/Td-vG6fTF_I/AAAAAAAADD8/Gxf_LXLfgTQ/s220/adam_for_id_head.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1237205646217514303.post-2585597052303696160</id><published>2009-06-26T08:01:00.000-07:00</published><updated>2009-06-26T08:21:34.477-07:00</updated><title type='text'>Getting certified with Wizlabs and Kathy Sierra’s book</title><content type='html'>Whizlabs did really good job with their “Examination Preparation Software”. I am really satisfied with their web based application (running on Google Gears) and the sample SCJP tests that they are providing. Part of the satisfaction is probably caused by the fact that I don’t have to pay for the software myself, but most importantly I feel that I get well prepared for the Sun’s exam. The cost is low… about $50 (like an average book, maybe two books) but I think it’s worth the money. Apart from the “Preparation Tests”, Whizlabs also provides possibility to review all your answers and generate a nice progress report for you (so that you can see where you are with your current knowledge).&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_qgJ5ck8WVKo/SkTnDplGCKI/AAAAAAAACOI/1qF9d31wpCs/s1600-h/scjp_progress.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 376px; height: 400px;" src="http://3.bp.blogspot.com/_qgJ5ck8WVKo/SkTnDplGCKI/AAAAAAAACOI/1qF9d31wpCs/s400/scjp_progress.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5351656307110054050" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Sample tests of course are not enough to get ready for the exam (even though Whizlabs seems to say they are). I recommend reading a book by Kathy Sierra and Bert Bates. It’s totally great. It is well written and I guarantee that you can learn a lot not only for the examination but also for the “real world” programming. It is also important to write tons of sample code just to burn the gathered knowledge into your brain.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1237205646217514303-2585597052303696160?l=nowaqblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nowaqblog.blogspot.com/feeds/2585597052303696160/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1237205646217514303&amp;postID=2585597052303696160' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1237205646217514303/posts/default/2585597052303696160'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1237205646217514303/posts/default/2585597052303696160'/><link rel='alternate' type='text/html' href='http://nowaqblog.blogspot.com/2009/06/getting-certified-with-wizlabs-and.html' title='Getting certified with Wizlabs and Kathy Sierra’s book'/><author><name>nowaq</name><uri>http://www.blogger.com/profile/08806571090770196172</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://4.bp.blogspot.com/-nYXlmlodpxE/Td-vG6fTF_I/AAAAAAAADD8/Gxf_LXLfgTQ/s220/adam_for_id_head.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_qgJ5ck8WVKo/SkTnDplGCKI/AAAAAAAACOI/1qF9d31wpCs/s72-c/scjp_progress.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1237205646217514303.post-3346887389306185198</id><published>2009-05-12T02:52:00.000-07:00</published><updated>2009-05-12T03:08:38.780-07:00</updated><title type='text'>Finally a good and simple UML editor</title><content type='html'>For a very long time I was looking for a simple and easy to use UML editor. I couldn't find any! Visio sucks, Together is too big and to complex for the simple diagrams and scenarios that I plan to draw in few minutes. What can I use then?&lt;br /&gt;&lt;br /&gt;Today I finally found something that seems to be a tool that I was looking for. The "Violet UML Editor" is amazingly simple, portable and easy to use. It is well organized and even good looking. I was able to create simple and even more complex diagrams without having to think about return types and all other obsolete stuff (a least during architectural design phase). The fact that it is distributed as a single jar file is also a big plus - no installation required no matter what the operating system you work on.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_qgJ5ck8WVKo/SglKi7yVmQI/AAAAAAAACKA/YdXHz_bwdYQ/s1600-h/Violet+UML+Editor.bmp"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 320px; height: 281px;" src="http://4.bp.blogspot.com/_qgJ5ck8WVKo/SglKi7yVmQI/AAAAAAAACKA/YdXHz_bwdYQ/s320/Violet+UML+Editor.bmp" border="0" alt=""id="BLOGGER_PHOTO_ID_5334877197621893378" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Check it out: &lt;a href="http://alexdp.free.fr/violetumleditor/page.php"&gt;http://alexdp.free.fr/violetumleditor/page.php&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1237205646217514303-3346887389306185198?l=nowaqblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nowaqblog.blogspot.com/feeds/3346887389306185198/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1237205646217514303&amp;postID=3346887389306185198' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1237205646217514303/posts/default/3346887389306185198'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1237205646217514303/posts/default/3346887389306185198'/><link rel='alternate' type='text/html' href='http://nowaqblog.blogspot.com/2009/05/finally-good-and-simple-uml-editor.html' title='Finally a good and simple UML editor'/><author><name>nowaq</name><uri>http://www.blogger.com/profile/08806571090770196172</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://4.bp.blogspot.com/-nYXlmlodpxE/Td-vG6fTF_I/AAAAAAAADD8/Gxf_LXLfgTQ/s220/adam_for_id_head.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_qgJ5ck8WVKo/SglKi7yVmQI/AAAAAAAACKA/YdXHz_bwdYQ/s72-c/Violet+UML+Editor.bmp' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1237205646217514303.post-7744740676475592736</id><published>2009-03-29T16:38:00.001-07:00</published><updated>2009-03-29T16:43:11.725-07:00</updated><title type='text'>Pierwsze aplikacje</title><content type='html'>Dzis wyslalem moja pierwsza naprawde profesjonalnie przygotowana aplikacje o nowa prace. Polecialo do kanady do bardzo fajnej firmy robiacej software dla ecommerce. Specjalnie szukalem czegos co nie bedzie tak duze jak Siemens acz wystarczajaco spore i bogate by zatrudniac prawdziwych profesjonalistow od ktorych moznaby sie bylo czegos superanckiego nauczyc. Zobaczymy co z tego bedzie. Kanada jest daleko.. ale w sumie nigdy tam nie bylem wiec wypad na roczek lub dwa nic by nie zaszkodzil. Szkoda tylko ze placi sie tam w dolarach, jest zimno i blisko do hamburgerow. No ale.. czego to sie nie robi dla dobrej pracy i przygody.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1237205646217514303-7744740676475592736?l=nowaqblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nowaqblog.blogspot.com/feeds/7744740676475592736/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1237205646217514303&amp;postID=7744740676475592736' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1237205646217514303/posts/default/7744740676475592736'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1237205646217514303/posts/default/7744740676475592736'/><link rel='alternate' type='text/html' href='http://nowaqblog.blogspot.com/2009/03/pierwsze-aplikacje.html' title='Pierwsze aplikacje'/><author><name>nowaq</name><uri>http://www.blogger.com/profile/08806571090770196172</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://4.bp.blogspot.com/-nYXlmlodpxE/Td-vG6fTF_I/AAAAAAAADD8/Gxf_LXLfgTQ/s220/adam_for_id_head.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1237205646217514303.post-2199867285425153124</id><published>2009-03-27T15:45:00.000-07:00</published><updated>2009-03-27T16:15:11.933-07:00</updated><title type='text'>Game over</title><content type='html'>No i stalo sie. Pod koniec kwietnia opuszczam MED GS (a moze HS... juz sam nie wiem, tak czesto zmieniaja sie tu nazwy dzialow ze za tym nie nadazam... hmm.. nie chce mi sie nawet nadazac). Kasa sie skonczyla i nie stac ich juz na pracownikow zewnetrznych.. zycie.&lt;br /&gt;&lt;br /&gt;Prawdepowiedziawszy.. nie czuje w tym momencie nic. Spedzilem w tej firmie prawie trzy lata i jedyne czego bede zalowal to.. hmm.. to to ze nie znalazlem sobie ciekawej pracy zanim nastal tu kryzys (i nie mam tu na mysli kryzysu "globalnego"). &lt;br /&gt;&lt;br /&gt;No ale.. w sume to musze stwierdzic ze wiele sie tu nauczylem, np. jak nie programowac, jak nie testowac, jak nie tworzyc zlej architektury, jak nie powinien wygladac team work, jak nie powinno sie uzywac scrum'u, jak nie powinno sie obchodzic z ambitnymi ludzmi, jak nie zabijac dobrych pomyslow, jak nie przeprowadzac rekrutacji, jak i gdzie nie zaczynac swojego biznesu, itp, itd. To jest naprawde wiele! Co by bylo gdyby wszystko przebiegalo perfekcyjnie, gdyby pracowali tu ludzie super kompetentni, "guru", perfekcjonisci? Czulbym sie pewnie nie najlepiej jako poczatkujacy programista, nie mialbym pola manewru, kazdy wiedzialby lepiej i mial do tego racje... a tu, mimo ze kazdy wie lepiej to ja i tak wiem ze racji pewnie nie ma, moge to sprawdzic... oswiecic kogos.. nauczyc sie czegos... mile uczucie ;-) Tak wiec zaczalem lekko... nauczylem sie tego czego chcialem na przykladach z zycia wzietych na koszt firmy. Super, jestm happy i moge isc dalej... hmm... tylko gdzie. Przez te wszystkie doswiadczenia z "jak nie ..." mam teraz maly uraz psychiczny i "nieco mocniej" zdefiniowane wymagania co do pracodawcy. Wiem tez, ze moj obecny "employer" nie znajdzie mi pewnie niczego co odpowiadaloby moim zachciankom (java, open source, etc.). Biore sie wiec do roboty i szukam czegos superanckiego... moze znajde.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1237205646217514303-2199867285425153124?l=nowaqblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nowaqblog.blogspot.com/feeds/2199867285425153124/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1237205646217514303&amp;postID=2199867285425153124' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1237205646217514303/posts/default/2199867285425153124'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1237205646217514303/posts/default/2199867285425153124'/><link rel='alternate' type='text/html' href='http://nowaqblog.blogspot.com/2009/03/game-over.html' title='Game over'/><author><name>nowaq</name><uri>http://www.blogger.com/profile/08806571090770196172</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://4.bp.blogspot.com/-nYXlmlodpxE/Td-vG6fTF_I/AAAAAAAADD8/Gxf_LXLfgTQ/s220/adam_for_id_head.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1237205646217514303.post-2415139545506146833</id><published>2009-03-25T15:14:00.000-07:00</published><updated>2009-03-25T15:29:41.746-07:00</updated><title type='text'>UNMOUNTABLE_BOOT_VOLUME - XP on vmware</title><content type='html'>I recently updated my Gentoo box to the latest version available (I tought "few hours compile time"... but no.. it actually took the whole night!). Since I also had the vmware-player im my "world" it got updated too. Unfortunately, I was unable to start the XP vmware after I rebooted my PC. I don't know what the reason was but all my stuff on that virtual machine seemed to be GONE! All I could see was just a blue screen (which happened to appear only for about 200ms.. which is long enough to take a screenshot). &lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_qgJ5ck8WVKo/Scqu2fyHa0I/AAAAAAAACHo/eefz7u5B5PE/s1600-h/windows_vmware.png"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 355px;" src="http://1.bp.blogspot.com/_qgJ5ck8WVKo/Scqu2fyHa0I/AAAAAAAACHo/eefz7u5B5PE/s400/windows_vmware.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5317254561332161346" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;If you happened to have the same problem, here is what I did:&lt;br /&gt;&lt;ol&gt;&lt;br /&gt;&lt;li&gt;Took the XP installation CD and started vmware with it&lt;/li&gt;&lt;br /&gt;&lt;li&gt;When the installation app asks you what to do, choose REPAIR (press 'R' key)&lt;/li&gt;&lt;br /&gt;&lt;li&gt;run CHKDSK app (may take a while, depending on size of your disk)&lt;/li&gt;&lt;br /&gt;&lt;li&gt;done. CHKDSK should print out smth about finding errors, etc.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;restart vmware.&lt;/li&gt;&lt;br /&gt;&lt;/ol&gt;&lt;br /&gt;It helped me, maybe it can also help you. Good luck!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1237205646217514303-2415139545506146833?l=nowaqblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nowaqblog.blogspot.com/feeds/2415139545506146833/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1237205646217514303&amp;postID=2415139545506146833' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1237205646217514303/posts/default/2415139545506146833'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1237205646217514303/posts/default/2415139545506146833'/><link rel='alternate' type='text/html' href='http://nowaqblog.blogspot.com/2009/03/unmountablebootvolume-xp-on-vmware.html' title='UNMOUNTABLE_BOOT_VOLUME - XP on vmware'/><author><name>nowaq</name><uri>http://www.blogger.com/profile/08806571090770196172</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://4.bp.blogspot.com/-nYXlmlodpxE/Td-vG6fTF_I/AAAAAAAADD8/Gxf_LXLfgTQ/s220/adam_for_id_head.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_qgJ5ck8WVKo/Scqu2fyHa0I/AAAAAAAACHo/eefz7u5B5PE/s72-c/windows_vmware.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1237205646217514303.post-7032168979150739732</id><published>2009-03-21T16:56:00.000-07:00</published><updated>2009-03-21T17:07:47.241-07:00</updated><title type='text'>Jestem psycholem :-)</title><content type='html'>Czasami lubie patrzec na takie rzeczy...&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_qgJ5ck8WVKo/ScV_3RSff0I/AAAAAAAACHg/NzuheZbwaZc/s1600-h/kompilacja.png"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 337px;" src="http://4.bp.blogspot.com/_qgJ5ck8WVKo/ScV_3RSff0I/AAAAAAAACHg/NzuheZbwaZc/s400/kompilacja.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5315795522691235650" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Nie.. no powaznie, nie moge od tego czasami oderwac oczu. Podobnie jest zreszta z wszelkimi monitorami pracy komputera. Gapie sie w nie jak bezdomny zima w ogien. Szczegolnie kreca mnie xosview i gkrellm kiedy pokazuja obciazenie procesorow w trakcie kompresji, kompilacji czy linkowania. Czuje ze wykorzystuje w pelni moc mojej maszyny... hehe... czy jestem psycholem?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1237205646217514303-7032168979150739732?l=nowaqblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nowaqblog.blogspot.com/feeds/7032168979150739732/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1237205646217514303&amp;postID=7032168979150739732' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1237205646217514303/posts/default/7032168979150739732'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1237205646217514303/posts/default/7032168979150739732'/><link rel='alternate' type='text/html' href='http://nowaqblog.blogspot.com/2009/03/jestem-psycholem.html' title='Jestem psycholem :-)'/><author><name>nowaq</name><uri>http://www.blogger.com/profile/08806571090770196172</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://4.bp.blogspot.com/-nYXlmlodpxE/Td-vG6fTF_I/AAAAAAAADD8/Gxf_LXLfgTQ/s220/adam_for_id_head.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_qgJ5ck8WVKo/ScV_3RSff0I/AAAAAAAACHg/NzuheZbwaZc/s72-c/kompilacja.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1237205646217514303.post-785789862920594965</id><published>2009-02-24T05:57:00.000-08:00</published><updated>2009-02-24T06:35:41.276-08:00</updated><title type='text'>Co by bylo gdyby to mechanicy samochodowi tworzyli software?</title><content type='html'>Oczywiscie to pytanie to czysta abstrakcja. Ale.. no co by bylo?&lt;br /&gt;&lt;br /&gt;Dwa tygodnie temu oddalem nasza Mazde do przegladu po 90K. Drogo bo drogo ale autko sobie na to zasluzylo. Nie sprawialo nawet najmniejszych problemow od momentu zakupu (choc to juz 8latek). Trzeba bylo zmienic pasek rozrzadu, wymienic olej i pare filtrow. Teoretycznie prosta sprawa dla kodos kto robi to na codzien, nie?&lt;br /&gt;&lt;br /&gt;Co otrzymalem z powrotem?... piszczacego szrota! Autko chodzilo niby normalnie.. przez chwile... a potem zaczelo piszczec i swiszczec, jakby ktos paznokciami po czarnej tablicy szorowal.&lt;br /&gt;&lt;br /&gt;Na szczescie mieszkam w niemczech i obowiazuje tu gwarancja na takie rzeczy, nikt nie proboje wciskac kitow itp. A co by bylo jakbym mieszkal w Polsce? (hmm.. pewnie ten post bylby na temat trojanow i robali)&lt;br /&gt;&lt;br /&gt;Okazuje sie ze problem z pojeciem jakosci pracy i produktu pojawia sie w kazdym biznesie. Niestety, nie wszyscy mysla o tym ze cos nowo zbudowanego, przerobionego, "naprawionego" trzeba najpierw przetestowac zanim sie to przekaze klientowi. A przeciez to takie proste!! Test! Wsiadasz do fury i jedziesz.. raz szybciej, raz wolniej. Zakrecasz, wyjezdzasz na prosta i w gaz... itp. Sama zabawa i do tego nie wymaga az tyle czasu!&lt;br /&gt;&lt;br /&gt;Doswiadczeni mechanicy czasami podobni sa do programistow pracujacych metoda "Kopiego-Pejsta". Kopiuja robote ktora pamietaja ze kiedys tam juz robili. A skoro tak zrobili i dzialalo to mysla ze jak zrobia to jeszcze raz tak samo to wszystko bedzie dobrze. Odpalaja aplikacje... chodzi. Yes! Niestety, po tygodniu, gdy kolega wciska przycisk w dolnym rogu aplikacji system pada, EXCEPTION! Chlopaki, testujcie!!&lt;br /&gt;&lt;br /&gt;Zaraz wiaze fure do poprawki, juz sie ciesze na dzwiek kredy w garazu.. auuuc.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1237205646217514303-785789862920594965?l=nowaqblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nowaqblog.blogspot.com/feeds/785789862920594965/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1237205646217514303&amp;postID=785789862920594965' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1237205646217514303/posts/default/785789862920594965'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1237205646217514303/posts/default/785789862920594965'/><link rel='alternate' type='text/html' href='http://nowaqblog.blogspot.com/2009/02/co-by-bylo-gdyby-to-mechanicy.html' title='Co by bylo gdyby to mechanicy samochodowi tworzyli software?'/><author><name>nowaq</name><uri>http://www.blogger.com/profile/08806571090770196172</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://4.bp.blogspot.com/-nYXlmlodpxE/Td-vG6fTF_I/AAAAAAAADD8/Gxf_LXLfgTQ/s220/adam_for_id_head.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1237205646217514303.post-7483478300298384426</id><published>2009-02-05T02:36:00.000-08:00</published><updated>2009-02-07T02:40:39.923-08:00</updated><title type='text'>Darmowe żarcie</title><content type='html'>Przegladajac niemieckie oferty pracy natknalem sie ostatnio na cos takiego (to tylko urywek tej oferty):&lt;br /&gt;&lt;br /&gt;&lt;div class="citation"&gt;Senior Software Engineer (m/w) &lt;br /&gt;&lt;br /&gt;Unser Kunde bietet Dir folgendes an: &lt;br /&gt;&lt;br /&gt;- Flexible Arbeitszeiten &lt;br /&gt;- Eigenes Budget für Bürobedarf und Fortbildung &lt;br /&gt;- Garantierte Weiterbildung und keine leeren Versprechen &lt;br /&gt;- Gratis Biofood und Getränke &lt;br /&gt;- Unterstützung bei Wohnortswechsel &lt;br /&gt;- Koordinierte Arbeitsabläufe und klare Trennung der Zuständigkeitsbereiche &lt;br /&gt;&lt;br /&gt;Du bist fit in folgenden Bereichen: &lt;br /&gt;&lt;br /&gt;- Erfahrung mit der Planung und Entwicklung einer Internet Plattform &lt;br /&gt;- Erfahrung in objektorientierter Programmierung mit PHP5, MySQL &lt;br /&gt;- Design und Implementierung eines neuen Datenbankschemas in MySQL &lt;br /&gt;- Fundierte Kenntnisse mit Unit Testing in xUnit &lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;Oferta ta, mimo ze ledwie przedstawia informacje na temat tego, czego tak na prawde pracodawca potrzebuje, wymaga i generalnie soba reprezentuje przyciagnela moja uwage. Byla to podswiadoma reakcja na ktorej sie zlapalem i postanowilem ja przeanalizowac. Oferta mierna wiec co to bylo do cholery? Dlaczego mysle, ze to moze byc dobra propozycja? Dlaczego, mimo ze nie mialem nic wspolnego z PHP od czasow uczelnianych, wciaz jest kuszaca? ... hmmm... no tak.. "Bio food"!&lt;br /&gt;&lt;br /&gt;Nie zaregowalem tak z powodu tego ze bylem glodny albo ze mi "Bio" zarcia na codzien brakuje. Ten pracodawca pokazal mi po prostu ze swoj projekt a takze swoich pracownikow bierze na powaznie a nawet dodatkowo traktuje ich wyjatkowo (bo Bio zarcie nie jest przeciez dla mas :-)).&lt;br /&gt;&lt;br /&gt;Wedlug Maslowa (see &lt;a href="http://pl.wikipedia.org/wiki/Hierarchia_potrzeb"&gt;Model Abrahama Maslowa&lt;/a&gt;) zaspokajanie podstawowych potrzeb prowadzi do tego ze koncentrujemy sie na celach "wyzszych". Uczucie glodu, pragnienia itp. moze nas developerow lekko wytracic z kursu. Co by bylo gdyby np. w trakcie pracy nad jakims zajebiscie skomplikowanym algorytmem, miejsce mysli z rozwiazaniem zajela mysl o tym ze "za godzinke bedziesz w domu i zjesz w koncu ten obiad, batona czy cokolwiek zapychajacego".&lt;br /&gt;&lt;br /&gt;Oczywiscie jest jeszcze druga strona medalu. A co jezeli pracodawcy chodzi o to zeby jego pracownicy wyprowali z siebie flaki i czesto zostawali po pracy zeby zdazyc z projektem na czas? To tez moze byc powodem "podrzucania" pozywienia do biora, nie?  Hmm? Moze... ale wydaje mi sie ze wtedy nie byloby to bio zarcie... a poza tym, takie numery szybko koncza sie wypowiedzeniem.&lt;br /&gt;&lt;br /&gt;Podsomowujac: Wydaje mi sie ze kazdy pracodawca liczy na to ze jego "podopieczni" beda dawac z siebie wiele. Idea umilenia pracy developerom np. Bio bananem czy Bio cola jest moim zdaniem bardzo dobra i na pewno wplywa pozytywnie na wydajnosc jak i motywacje pracownikow. Oby tak dalej!&lt;br /&gt;&lt;br /&gt;Chcialem jeszcze dodac ze:&lt;br /&gt; a) darmowa, super bajerancka kawa to podstawa! Nie musze tu chyba pisac dlaczego. Szkoda ze sa jeszcze pracodawcy ktorzy tego nie rozumieja (np. moj)&lt;br /&gt; b) open space (Open-plan offices) - &lt;a href="http://www.news.com.au/business/story/0,27753,24906913-5017672,00.html"&gt;sami przeczytajcie&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1237205646217514303-7483478300298384426?l=nowaqblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nowaqblog.blogspot.com/feeds/7483478300298384426/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1237205646217514303&amp;postID=7483478300298384426' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1237205646217514303/posts/default/7483478300298384426'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1237205646217514303/posts/default/7483478300298384426'/><link rel='alternate' type='text/html' href='http://nowaqblog.blogspot.com/2009/02/darmowe-zarcie.html' title='Darmowe żarcie'/><author><name>nowaq</name><uri>http://www.blogger.com/profile/08806571090770196172</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://4.bp.blogspot.com/-nYXlmlodpxE/Td-vG6fTF_I/AAAAAAAADD8/Gxf_LXLfgTQ/s220/adam_for_id_head.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1237205646217514303.post-5885235450162980853</id><published>2009-01-14T06:06:00.000-08:00</published><updated>2009-01-14T08:16:49.162-08:00</updated><title type='text'>Polimorfizm vs. Polimorfizm (a.k.a. Strategy pattern)</title><content type='html'>Z cyklu "&lt;b&gt;&lt;i&gt;Bad practices&lt;/i&gt;&lt;/b&gt;"&lt;br /&gt;&lt;br /&gt;Dzis zaskoczyl mnie nasz architekt ale niestety niezbyt pozytywnie. Jako ze facet ma jakies doswiadczenia zyciowe, wydawaloby sie ze sporo juz kodu w swoim zywocie widzial, a moze nawet napisal, nalezal mu sie do tej pory szacunek. Niestety, jak to juz w zyciu jest na szacunek ciezko jest zapracowac, za to stracic go mozna w jednej chwili... co tez kolega Berndt uczynil :-)&lt;br /&gt;&lt;br /&gt;Grzebiac w kodzie naszego "wspanialego" systemu znalazlem gdzies taka metode:&lt;br/&gt;&lt;br /&gt;&lt;table class="sourcecode"&gt;&lt;tr&gt;&lt;td&gt;&lt;pre&gt;&lt;br /&gt;public Something getSomethingNice(Something smth) throws Exception {&lt;br /&gt;   return smth;&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;br /&gt;prawda ze podejrzanie wyglada? hehe..&lt;br /&gt;&lt;br /&gt;Przejrzalem historie zmian i okazalo sie ze metoda getSomething byla kiedys abstrakcyjna a klasa w ktorej obecnie sie znajduje byla kiedys interfejsem.&lt;br /&gt;Jednym slowem niezle sie w systemie pozmienialo przez ostatnich pare lat. Najgorsze jednak bylo to ze ten bzdurny kawalek kodu przeszedl przez code review. Zadalem wiec architektowi pytanie. WHY???&lt;br /&gt;&lt;br /&gt;Odpowiedz byla mniej wiecej taka:&lt;br /&gt;&lt;b&gt;Architekt:&lt;/b&gt; &lt;i&gt;"Ahh!.. no bo to jest przeciez Strategy Pattern i tak juz musi zostac. Patrz, to sa np. klasy ktore dziedzicza od tej... bo w tej klasie ta metoda nie ma sensu wiec defaultowo zwraca to co przyjela."&lt;/i&gt;&lt;br /&gt;&lt;b&gt;Ja:&lt;/b&gt; &lt;i&gt;"Ale.. ale... dlaczego ta klasa nie jest juz abstrakcyjna.. A po jakiego wala jest tam ten 'throws Exception'? Czy ktos kontroluje to co sie z kodem dzieje czy nie?"&lt;/i&gt;&lt;br /&gt;&lt;b&gt;Architekt:&lt;/b&gt; &lt;i&gt;"Niech tak zostanie. Tak sie robi."&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;To ma byc Polimorfizm? No niby tak sie wlasnie ta cala konstrukcja zachowuje. Nie! Jak dla mnie to chuj nie polimorfizm! Liczy sie jeszce jakosc! - pomyslalem po czym polozylem glowe na klawiaturze, zamkalem oczy myslac o kawalku z "Code Complete" Steve'a McConnell'a o tym jak to zona gotowala kotleta wedle przepisu tesciowej. Nikt nie zastanowil sie nad tym dlaczgo w przepisie stalo "Posolic, popieprzyc i obciac dwa konce steku" (czyli standartowe "Bo tak sie robi"). Okazalo sie ze matka tesciowej lekko przycinala stek bo jej patelnia byla za mala :-) Tak wiec wydaje mi sie ze czasem wypada podrazyc temat troche glebiej by odkryc niepotrzebne bzdury, pozadnie przebudowac subsystem i ulatwic ludziom prace.&lt;br /&gt;   &lt;br /&gt;Shit, z takim architektem daleko nie zajdziemy.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1237205646217514303-5885235450162980853?l=nowaqblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nowaqblog.blogspot.com/feeds/5885235450162980853/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1237205646217514303&amp;postID=5885235450162980853' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1237205646217514303/posts/default/5885235450162980853'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1237205646217514303/posts/default/5885235450162980853'/><link rel='alternate' type='text/html' href='http://nowaqblog.blogspot.com/2009/01/polimorfizm-vs-polimorfizm-aka-strategy.html' title='Polimorfizm vs. Polimorfizm (a.k.a. Strategy pattern)'/><author><name>nowaq</name><uri>http://www.blogger.com/profile/08806571090770196172</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://4.bp.blogspot.com/-nYXlmlodpxE/Td-vG6fTF_I/AAAAAAAADD8/Gxf_LXLfgTQ/s220/adam_for_id_head.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1237205646217514303.post-7752148843945666264</id><published>2008-12-18T07:52:00.000-08:00</published><updated>2008-12-18T12:35:28.458-08:00</updated><title type='text'>Rekruterzy</title><content type='html'>Ostatnio zaczalem sie mocniej interesowac tematem rekrutacji i rekroterow w IT. Szukam sobie tak na spokojnie nowej (ciekawszej) roboty i po prostu uznalem ze warto popatrzec na tych ludzi z innej perspektywy. Warto czasem postawic sie na ich miejscu, zrozumiec w jaki sposob pracuja, w jakich warunkach dzialaja i czego oczekuja bo to przeciez z nimi w najwiekszej mierze ma sie do czynienia w trakcie procesu rekrutacji.&lt;br /&gt;&lt;br /&gt;Oczywiscie zrobilem najpierw to co trzeba zrobic w momencie gdy czlowiek zetknie sie z nowym tematem... odpalilem wikipedie :-) no i odkrylem pare ciekawostek.&lt;br /&gt;&lt;br /&gt;Czytajac wiki dowiecie sie ze rekruterow mozna podzielic na dwie glowne grupy:&lt;br /&gt;1.) Rekruterzy spoza firmy szukajacej ludzi (third party recruiters)&lt;br /&gt;2.) Rekruterzy wewnetrzni czyli pracujacy w firmie zatrudniajacej (rowniez kontraktorzy (contractors) zatrudnieni w firmie tymczasowo)&lt;br /&gt;&lt;br /&gt;Zastanowny sie czy punkt 1 wogole ma jakis sens. Skad ktos kto pracuje w firmie X ma miec pojecie ze firma Y potrzebuje dokladnie takiego a nie innego kandydata? Czy to takie oczywiste?&lt;br /&gt;&lt;i&gt;Odpowiedz 1&lt;/i&gt;: Z opisu, ze specyfikacji albo rozmowy z klientem&lt;br /&gt;&lt;br /&gt;Serio? A widzieliscie kiedys taki komiks.&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_qgJ5ck8WVKo/SUqr_H40u6I/AAAAAAAAB-c/S7O-izk_KS0/s1600-h/softwaredevelopment.gif"&gt;&lt;img style="margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 400px; height: 300px;" src="http://1.bp.blogspot.com/_qgJ5ck8WVKo/SUqr_H40u6I/AAAAAAAAB-c/S7O-izk_KS0/s400/softwaredevelopment.gif" border="0" alt=""id="BLOGGER_PHOTO_ID_5281222613982821282" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;i&gt;Odpowiedz 2&lt;/i&gt;: Z doswiadczenia&lt;br /&gt;Aha... a co jak ktos nie ma go za duzo?&lt;br /&gt;&lt;br /&gt;Drazac dalej temat rekruterow "zewnetrznych" mozna sie dowiedziec ze sa tez rozne metody poszukiwania kandydatow. Tu robi sie ciekawie (bo zaczyna chodzic o kase):&lt;ol&gt;&lt;li&gt;Retained search&lt;/li&gt;&lt;li&gt;Delimited search&lt;/li&gt;&lt;/ol&gt;&lt;br /&gt;Patrzac na ta cala sprawe z dosyc ogolnikowej perspektywy rekrutowanej osoby musze przyznac ze jak dla mnie cala ta historia z "outsourcingiem" head hunterow jest po prostu bzdura. Ja (dla przykladu) jako rektutowana osoba chce sie czuc dobrze w momencie gdy moj profil zainteresuje pracodawce a nie jak kolejny ktory moze naiwnie da znac ze jest zainteresowany. Bzdura! Znaleziony przez zoutsourcowanego rekrutera kandydat zawsze bedzie odbiegal (mniej lub bardziej) od tego czego oczekuje klient. Zgadza sie... w zbiorze 300 kandydatow trafi sie na pewno 1 ktory bedzie dobrze pasowal do firmy. Ale po co spotykac sie i gadac z 300 osobami skoro mozna tylko z np. 10'ma? Pomyslcie o tych 290 ktore stracily czas na to by gadac z kims o czyms co i tak nie ma sensu!&lt;br /&gt;&lt;br /&gt;Jezeli chodzi o head hunterow (tych third party) to w mojej smiesznie krotkiej karierze zawodowej mialem juz kilkakorotnie stycznosc z paroma takimi osobnikami(czkami) ale nigdy nie potrafilem skumac o co im chodzi. Serio! Czasem wydawalo mi sie ze kontaktuja sie ze mna ale tak naprawde to maja w dupie to kim ja wogole jestem i czy spelniam kryteria postawione przez ich klienta.&lt;br /&gt;&lt;br /&gt;Dla przykladu, jakis miesiac temu dostalem maila od pani na linkedin ze standarowym (prawdopodobnie wygenerowanym gdzies z templatu) tekstem: &lt;i&gt;"Hello Adam... bla bla bla.. twoj profil wskazuje ze jestes doswiadczonym uzytkownikiem Javy/Eclipse'a...bla bla bla... Aktualnie szukamy developerow Java dla firmy w Zurichu... bla bla... Jesli jestes zainteresowany daj znac."&lt;/i&gt;. W takich momentach natychnmiast kojarzy mi sie niemiecki, niemy film "Nasz codzienny chleb" gdzie pokazana jest produkcja zywnosci dla mas ludzkich (czyli to co kupujemy w supermarketach bez nakejki "bio").&lt;br /&gt;&lt;br /&gt;Szczerze mowiac to ogrania mnie nerwica po takim mailu. Nie wiem jak wy ale ja jestem dosyc konkretnym czlowiekiem. Nawet jak ktos wysyla mi jedynie "propozycje pracy"... to chce k..wa wiedziec dla kogo, w jakich warunkach i co dokladnie mialbym tam robic. Pozatym Java i Eclipe to dosc ogolne pojecia, nie? Moze to np. oznaczac ze bede robil jako malpa od klepania kodu opartego na bezsensownej specyfikacji... a tego nie chce przeciez robic! To sa minimalne informacje ktore sa mi potrzebne do natychmiastowego podjecia decyzji o tym czy wogole chce gdzies aplikowac. &lt;br /&gt;&lt;br /&gt;Dlaczego to juz w pierwszym mailu chcialbym znac nazwe firmy?&lt;br /&gt;1) Jezeli to Microsoft to niech sie pie...li! (dotyczy to chyba nie tylko mnie)&lt;br /&gt;2.) Znajac nazwe firmy moge zrobic research w necie i co nieco poczytac o ewentualnym pracodawcy. Dowiem sie np. czy nie robia w branzy medycznej gdzie mozna zostac zalanym zadaniami zwiazanym z pisaniem stosow funkcjonalnej specyfikacji, analizy ryzyka i innej dokumentacji. Jestem homo sapiensem, potrafie sobie wyobrazic co moze czekac mnie w firmie X znajac jej profil.&lt;br /&gt;&lt;br /&gt;Dlaczgo chcialbym rowniez wiedziec czego dotyczy projekt i z kim mialbym pracowac?&lt;br /&gt;1) Lubie pisac algorytmy, rozkminiac ciekawe problemy... generalnie to po prostu myslec od czasu do czasu. Problem w tym ze wiele projektow wymaga ode mnie jedynie znajomosci technologii i klepania tego samego lub podobnego kodu (metoda Kopiego i Pejsta) z modulu na modul.&lt;br /&gt;2.) Nie chce pracowac z banda opornych na zmiany kaskowcow ktorzy krzycza ze agile jest bleee i mam ich sluchac bo to oni sa Senior [&lt;i&gt;Wstaw se cos&lt;/i&gt;] i zawsze maja racje (oczywiscie nie wyjasniajac przy tym dlaczego ich rozwiazanie jest technicznie lepsze).&lt;br /&gt;&lt;br /&gt;Generalnie moje wymagania dosyc skutecznie utrudniaja mi znalezienie odpowiedniej firmy dlatego planuje zalozyc swoja... kiedys, jak juz bede mial ten genialny pomysl i paru zaufanych znajomych :-)&lt;br /&gt;&lt;br /&gt;Ale wracajac do tematu. Czy podanie nazwy firmy nie oszczedziloby wam rekruterom czasu, bezsensownych telefonow (przez co rowniez kasy)? Rozumiem obawe, ze ktos moze skontaktowac sie bezposrednio.. wtedy nie zarobicie. A moze boicie sie ze informacje przedostana sie do innego rekrutera? Tak, no i co, jezeli dziala tak samo jak wy to nic wam nie grozi! Wielu takich jak ja i tak go zignoruje.&lt;br /&gt;&lt;br /&gt;Gdybym byl rekruterem dla firmy IT koncentrowalbym sie duzo bardziej nad tym do kogo wysylam maila. Dowiedzialbym sie o tej osobie czegos wiecej (nie tylko z profilu na linkedin, xing, nasza-klasa :-), itp.). Obadalbym czy ma bloga? Jak nie to czy moze istnieje w jakis spodob w necie? Open source, projekty na sourceforge? Hmmm.. albo studia, jakie szkoly ukonczyl kandydat? Jakie zrobil specjalizacje? Moze interesuje go od zawsze jeden temat np. AI? W momencie gdy bylbym pewien ze kolezanka lub koles sie nadaje skontaktowalbym sie podajac bogatsze informacjie i przez to wygladajac bardziej profesjonalnie.&lt;br /&gt;&lt;br /&gt;Jedyna z firm ktora przeprowadza ciekawa i naprawde efektywna rekrutajce sa Google. Nie mialem tego zaszczytu ale znam kogos kto mial. Oni wiedza kto im jest potrzebny i rekrutuja naprawde profesjonalnie. Uczcie sie od nich ludzie!&lt;br /&gt;&lt;br /&gt;Aaahh.. bym zapomnial. Mialem zaszczyt otrzymac maila od rekrutera z (albo dla) Microsoftu :-) Wygladal mniej wiecej tak (mniej wiecej bo po przeczyatniu natychmiast to cos wyje..lem):&lt;br /&gt;&lt;i&gt;"Hello Adam, ... [jakies techniczne sprawy, nawet interesujace dlatego czytalem dalej] ... jezeli otrzymales juz kiedys tego maila i kotaktowales sie z nami to po prostu go zignoruj... "&lt;/i&gt;&lt;br /&gt;... i kuzwa znowu przed moimi oczami pojawia sie ten niemiecki film o modyfikowanej chemicznie, genetycznie i kto wie jeszcze jak zywnosci dla szarych mas ludzikich lecacych na tanioche.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1237205646217514303-7752148843945666264?l=nowaqblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nowaqblog.blogspot.com/feeds/7752148843945666264/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1237205646217514303&amp;postID=7752148843945666264' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1237205646217514303/posts/default/7752148843945666264'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1237205646217514303/posts/default/7752148843945666264'/><link rel='alternate' type='text/html' href='http://nowaqblog.blogspot.com/2008/12/rekruterzy.html' title='Rekruterzy'/><author><name>nowaq</name><uri>http://www.blogger.com/profile/08806571090770196172</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://4.bp.blogspot.com/-nYXlmlodpxE/Td-vG6fTF_I/AAAAAAAADD8/Gxf_LXLfgTQ/s220/adam_for_id_head.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_qgJ5ck8WVKo/SUqr_H40u6I/AAAAAAAAB-c/S7O-izk_KS0/s72-c/softwaredevelopment.gif' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1237205646217514303.post-4172335861771803386</id><published>2008-12-10T14:50:00.001-08:00</published><updated>2008-12-14T14:49:01.945-08:00</updated><title type='text'>Moj nowy pulpit</title><content type='html'>Postanowilem strzelic screenshota i pokazac swiatu moj nowy pulpit 3D. Na codzien uzywam KDE 4 lub GNOME w zaleznosci od nastroju... jak jeden mnie wnerwi to odpalam drugiego. Efekty 3D to compiz z wlaczona koska. Kostka jest dosyc uzyteczna w momencie gdy trzeba czesto zmieniac pulpity (wystarczy wcisnac Ctrl + Alt + Strzalka w lewo lub prawo zeby dostac sie na sasiedni desktop).&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_qgJ5ck8WVKo/SUBH08iKGVI/AAAAAAAAB9c/v8F6PMS7f3c/s1600-h/gnome_compiz.jpg"&gt;&lt;img style="margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 400px; height: 250px;" src="http://4.bp.blogspot.com/_qgJ5ck8WVKo/SUBH08iKGVI/AAAAAAAAB9c/v8F6PMS7f3c/s400/gnome_compiz.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5278297738206386514" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Tak naprawde to wnerwila mnie tez moja ostatnia tapeta i przez to takie perturbacje kolorow... i tematow (jakas trawa a w tle rozmazany Lancer Evo X)... caly ja.&lt;br /&gt;&lt;br /&gt;To bedzie lepsze...&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_qgJ5ck8WVKo/SUWKvIlo5lI/AAAAAAAAB-M/HPs3mxKJ94E/s1600-h/gnome-compiz4.jpeg"&gt;&lt;img style="margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 400px; height: 250px;" src="http://4.bp.blogspot.com/_qgJ5ck8WVKo/SUWKvIlo5lI/AAAAAAAAB-M/HPs3mxKJ94E/s400/gnome-compiz4.jpeg" border="0" alt=""id="BLOGGER_PHOTO_ID_5279778680525612626" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;... fajne jest tez przelaczanie okien. Przyjemny efekt :-)&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_qgJ5ck8WVKo/SUWNRIYzgrI/AAAAAAAAB-U/-wfmTMDcaz8/s1600-h/gnome-compiz5.jpeg"&gt;&lt;img style="margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 400px; height: 250px;" src="http://3.bp.blogspot.com/_qgJ5ck8WVKo/SUWNRIYzgrI/AAAAAAAAB-U/-wfmTMDcaz8/s400/gnome-compiz5.jpeg" border="0" alt=""id="BLOGGER_PHOTO_ID_5279781463610589874" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1237205646217514303-4172335861771803386?l=nowaqblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nowaqblog.blogspot.com/feeds/4172335861771803386/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1237205646217514303&amp;postID=4172335861771803386' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1237205646217514303/posts/default/4172335861771803386'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1237205646217514303/posts/default/4172335861771803386'/><link rel='alternate' type='text/html' href='http://nowaqblog.blogspot.com/2008/12/moj-nowy-pulpit.html' title='Moj nowy pulpit'/><author><name>nowaq</name><uri>http://www.blogger.com/profile/08806571090770196172</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://4.bp.blogspot.com/-nYXlmlodpxE/Td-vG6fTF_I/AAAAAAAADD8/Gxf_LXLfgTQ/s220/adam_for_id_head.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_qgJ5ck8WVKo/SUBH08iKGVI/AAAAAAAAB9c/v8F6PMS7f3c/s72-c/gnome_compiz.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1237205646217514303.post-7953760106052977782</id><published>2008-12-07T12:54:00.000-08:00</published><updated>2008-12-07T13:48:49.522-08:00</updated><title type='text'>FLAC to MP3</title><content type='html'>Converting a FLAC (or whatever else) to mp3 on Linux is so easy that I felt like telling the whole world about it (I know.. I know.. you know already!). &lt;br /&gt;&lt;br /&gt;My girlfrienf just happend to have this old CD she ripped like ages ago to files in *.flac format. She wanted to use them on her portable player but.. well it just didn't support it. I decided to quickly help her and googled a bit. What I found out was that people try to make money on this particular problem. It's amazing!! Poor windows users need to buy a converter software for about $30 to easily accomplish this task. Since the free tools are already there (&lt;a href="http://lame.sourceforge.net/download.php"&gt;lame&lt;/a&gt; and &lt;a href="http://flac.sourceforge.net/download.html"&gt;flac&lt;/a&gt;) I just wrote this simple bash script to get the task done. Try it yourserlf!&lt;br /&gt;&lt;br /&gt;If you are a "poor" windows user, then I guess (.. well I never tried it) you may run the script with &lt;a href="http://www.cygwin.com/"&gt;Cygwin&lt;/a&gt;. Better solution for you would be to install yourself Ubuntu or any other Linux distribution.&lt;br /&gt;&lt;table class="sourcecode"&gt;&lt;tr&gt;&lt;td&gt;&lt;pre&gt;&lt;br /&gt;#!/bin/sh&lt;br /&gt;#&lt;br /&gt;# Convert all flac files in the current dir to mp3 (lame) format.&lt;br /&gt;#&lt;br /&gt;&lt;br /&gt;BITRATE=320&lt;br /&gt;SAMPLE=48&lt;br /&gt;&lt;br /&gt;usage() {&lt;br /&gt; echo "USAGE: `basename $0` [bitrate] [sample]"&lt;br /&gt; echo "params:"&lt;br /&gt; echo " bitrate - a number in kbps (e.g. 128 or 320)"&lt;br /&gt; echo " sample - sampling frequency in kHz (e.g. 44 or 48)"&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;if [ $# -gt 2 ] || [ "$1" == "--help" ]; then&lt;br /&gt; usage;&lt;br /&gt; exit 1;&lt;br /&gt;elif [ $# -eq 1 ]; then&lt;br /&gt; BITRATE=$1&lt;br /&gt;elif [ $# -eq 2 ]; then&lt;br /&gt; BITRATE=$1&lt;br /&gt; SAMPLE=$2&lt;br /&gt;fi&lt;br /&gt;&lt;br /&gt;usage;&lt;br /&gt;&lt;br /&gt;for file in *.flac; do &lt;br /&gt; #&lt;br /&gt; # Song information&lt;br /&gt; #&lt;br /&gt; TITLE="`metaflac --show-tag=TITLE "$file" | awk -F = '{ printf($2) }'`"&lt;br /&gt; ALBUM="`metaflac --show-tag=ALBUM "$file" | awk -F = '{ printf($2) }'`"&lt;br /&gt; ARTIST="`metaflac --show-tag=ARTIST "$file" | awk -F = '{ printf($2) }'`"&lt;br /&gt; TRACKNUMBER="`metaflac --show-tag=TRACKNUMBER "$file" | awk -F = '{ printf($2) }'`"&lt;br /&gt; GENRE="`metaflac --show-tag=GENRE "$file" | awk -F = '{ printf($2) }'`"&lt;br /&gt; COMMENT="`metaflac --show-tag=COMMENT "$file" | awk -F = '{ printf($2) }'`"&lt;br /&gt; DATE="`metaflac --show-tag=DATE "$file" | awk -F = '{ printf($2) }'`"&lt;br /&gt;&lt;br /&gt; #&lt;br /&gt; # Print some info&lt;br /&gt; #&lt;br /&gt; echo "Converting the song: $ARTIST - $TITLE ($file)";&lt;br /&gt;&lt;br /&gt; #&lt;br /&gt; # Convert the song&lt;br /&gt; #&lt;br /&gt; $(flac -cd "$file" | lame -b $BITRATE --resample $SAMPLE \&lt;br /&gt;  --add-id3v2 --tt "$TITLE" --ta "$ARTIST" --tn "$TRACKNUMBER" \&lt;br /&gt;  --tg "$GENRE" --ty "$DATE" --tl "$ALBUM"  \&lt;br /&gt;  -h - "${file%.flac}.mp3");&lt;br /&gt;done&lt;br /&gt;&lt;br /&gt;exit 0;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;/td&gt;&lt;br /&gt;&lt;/tr&gt;&lt;br /&gt;&lt;/table&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1237205646217514303-7953760106052977782?l=nowaqblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nowaqblog.blogspot.com/feeds/7953760106052977782/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1237205646217514303&amp;postID=7953760106052977782' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1237205646217514303/posts/default/7953760106052977782'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1237205646217514303/posts/default/7953760106052977782'/><link rel='alternate' type='text/html' href='http://nowaqblog.blogspot.com/2008/12/flac-to-mp3.html' title='FLAC to MP3'/><author><name>nowaq</name><uri>http://www.blogger.com/profile/08806571090770196172</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://4.bp.blogspot.com/-nYXlmlodpxE/Td-vG6fTF_I/AAAAAAAADD8/Gxf_LXLfgTQ/s220/adam_for_id_head.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1237205646217514303.post-5474542070794819145</id><published>2008-12-02T14:50:00.000-08:00</published><updated>2008-12-02T15:20:57.777-08:00</updated><title type='text'>Fraunhofer ISST eFA Connectathon</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_qgJ5ck8WVKo/STW9C3Qqh8I/AAAAAAAAB80/K_aBRoryv4A/s1600-h/efa.png"&gt;&lt;img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 168px; height: 280px;" src="http://1.bp.blogspot.com/_qgJ5ck8WVKo/STW9C3Qqh8I/AAAAAAAAB80/K_aBRoryv4A/s320/efa.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5275330395425638338" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Today was a big day for me and other eFA team developers at Siemens. We were the only ones who received three labels from Fraunhofer ISST. Now our product is "eFA Client", "eFA Server" and "eFA Peer2Peer" conform. It would be great if we had a chance to make the code even better! &lt;br /&gt;&lt;br /&gt;For more information on eFA (or eCR - Electronic Case Records) visit http://www.fallakte.de/.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1237205646217514303-5474542070794819145?l=nowaqblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nowaqblog.blogspot.com/feeds/5474542070794819145/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1237205646217514303&amp;postID=5474542070794819145' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1237205646217514303/posts/default/5474542070794819145'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1237205646217514303/posts/default/5474542070794819145'/><link rel='alternate' type='text/html' href='http://nowaqblog.blogspot.com/2008/12/fraunhofer-isst-efa-connectathon.html' title='Fraunhofer ISST eFA Connectathon'/><author><name>nowaq</name><uri>http://www.blogger.com/profile/08806571090770196172</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://4.bp.blogspot.com/-nYXlmlodpxE/Td-vG6fTF_I/AAAAAAAADD8/Gxf_LXLfgTQ/s220/adam_for_id_head.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_qgJ5ck8WVKo/STW9C3Qqh8I/AAAAAAAAB80/K_aBRoryv4A/s72-c/efa.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1237205646217514303.post-3767752347932573742</id><published>2008-11-28T09:47:00.000-08:00</published><updated>2008-11-28T10:59:33.413-08:00</updated><title type='text'>Technisub Look / Aqualung Look - How to replace the lenses?</title><content type='html'>If you have this mask and want to change the lenses (to new or optical ones) by yourself follow this instructions (it's easy but if you're doing this for the first time you may have some problems):&lt;br /&gt;&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/_qgJ5ck8WVKo/STAwEIxWBLI/AAAAAAAABoY/Je_kkuHW2XQ/s1600-h/lookottica_g.jpg"&gt;&lt;img style="margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 240px; height: 161px;" src="http://1.bp.blogspot.com/_qgJ5ck8WVKo/STAwEIxWBLI/AAAAAAAABoY/Je_kkuHW2XQ/s320/lookottica_g.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5273768011282908338" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;ol&gt;&lt;br /&gt; &lt;li&gt;Remove the little plastic part on the top of the mask (it's this yellow part on the image above).&lt;/li&gt;&lt;br /&gt; &lt;li&gt;Remove two plastic "rings" which secure optical lenses from dropping out. Unmount them with your fingers. For each side simply catch the little plastic grip (the only accessible part of the ring) and using as much forse as you need pull it out. To make it easier you may try to bend the side of the mask a bit.&lt;/li&gt;&lt;br /&gt; &lt;li&gt;Remove the old lenses.&lt;/li&gt;&lt;br /&gt; &lt;li&gt;Make sure the new lenses are mounted correctly (so that they fit the silicon ring inside the mask well).&lt;/li&gt;&lt;br /&gt; &lt;li&gt;Mount the plastic covers. Make sure all latches do a little "click".&lt;/li&gt;&lt;br /&gt; &lt;li&gt;Put the "yellow plastic thingy" on the mask.&lt;/li&gt;&lt;br /&gt;&lt;/ol&gt;&lt;br /&gt;Have more fun from diving with your new "Look"!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1237205646217514303-3767752347932573742?l=nowaqblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nowaqblog.blogspot.com/feeds/3767752347932573742/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1237205646217514303&amp;postID=3767752347932573742' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1237205646217514303/posts/default/3767752347932573742'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1237205646217514303/posts/default/3767752347932573742'/><link rel='alternate' type='text/html' href='http://nowaqblog.blogspot.com/2008/11/technisub-look-aqualung-look-how-to.html' title='Technisub Look / Aqualung Look - How to replace the lenses?'/><author><name>nowaq</name><uri>http://www.blogger.com/profile/08806571090770196172</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://4.bp.blogspot.com/-nYXlmlodpxE/Td-vG6fTF_I/AAAAAAAADD8/Gxf_LXLfgTQ/s220/adam_for_id_head.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_qgJ5ck8WVKo/STAwEIxWBLI/AAAAAAAABoY/Je_kkuHW2XQ/s72-c/lookottica_g.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1237205646217514303.post-8244969996106366531</id><published>2008-11-28T05:49:00.000-08:00</published><updated>2008-11-28T15:16:29.965-08:00</updated><title type='text'>Adam! Don't be lazy! Be free!</title><content type='html'>Today I asked myself a very important (from religious perspective) question "Why NOT to go into the microsoft .net/windows stuff? Why NOT to try to work for a company doing e.g. C#?". The reason for me to wonder about it was the job research I started few days ago. I saw that many potentially interesting companies (smaller and larger) decide to do their projects basing on Bill's technology. Why is that? I decided to check it out and since the company I work for at the moment belongs to this "set" I decided to ask some of my "non-Java anymore" colleges what are they thinking. The common answer was "It's easier", "It's faster" or "You can do more with it!", "It's less buggy." or even something which totally killed me "Open source is for children." (btw. I don't think that children would be capable to develop gcc compiler or write Linux kernel, but whatever..).  &lt;br /&gt;&lt;br /&gt;One of the primary reasons why I did not and still do not belong to .NET clan (not even Windows clan) is the (again somehow very religious) fact that I simply never liked the company. The whole story about how they destroyed Netscape (btw. did you know that few years ago people used the phrase "to netscape" on "to surf on the Internet"?), how Bill used to treat (talk to) his employees, the whole "let's sell the beta software to people" crap. To me something seemed wrong about them. Besides, I've never liked Windows anyway!&lt;br /&gt;&lt;br /&gt;So, coming back to the main subject of this post... Why not to switch?. Here are some of my points:&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;I don't like windows. It's an operating system which comes with nothing and if you want something you need to pay.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;I'm a developer... if Java, Python or Ruby is hard to me I should probably change my profession.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;People say that .NET is faster? Faster then what? Web apps are faster? I didn't notice. Besides, I'm a Linux user... never really seen it in action on my system. Hmm... why? :-)&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Can you really do more with it? I do not think so. With open source only sky is the limit. It's just the matter of your skills. With .NET, the Bill is the limit!&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Some say that .NET is less buggy.. but how do thay know if they've never seen the sources anyway?&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Dummy ".. is for children" argument. I do not know any children who develop stable, real time, embedded software. And even if there are such, this rather means that they must be very smart, or am I wrong here!?&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;To be honest I must say that all the answers that I got from my colleges were (not to use bad words) crappy. They sound kind of like... like something that you may hear in a church. "Believe me, it is like I say".. and no real arguments which would confirm that it is right. Sorry, I don't believe Microsoft since win 3.11.&lt;br /&gt;&lt;br /&gt;So... I decided not to change my "religion" and stay with open source to be free and creative developer who's not afraid to take a look at someone else's code (even if it's Perl). Yes, that's the idea of open source, if you look into some serious code, you may be sure that you will learn something new. If you find the code bad, then you have an option to make it better. If many people make lots of code better then the world is more beautiful ;-D&lt;br /&gt;&lt;br /&gt;You could say... the problem is that the company has to spend the money on developers. The more they build in shorter period of time the better. In my opinion that's just some crap for "insane management people" who do not understand technology anyway.&lt;br /&gt;&lt;br /&gt;Seriously speaking, it does not matter what you use, what matters is that you feel good about it and can work efficiently with it. I feel good about open stuff and hope to find an employer who also does.&lt;br /&gt;&lt;br /&gt;May the force be with you!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1237205646217514303-8244969996106366531?l=nowaqblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nowaqblog.blogspot.com/feeds/8244969996106366531/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1237205646217514303&amp;postID=8244969996106366531' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1237205646217514303/posts/default/8244969996106366531'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1237205646217514303/posts/default/8244969996106366531'/><link rel='alternate' type='text/html' href='http://nowaqblog.blogspot.com/2008/11/adam-dont-be-lazy-be-free.html' title='Adam! Don&apos;t be lazy! Be free!'/><author><name>nowaq</name><uri>http://www.blogger.com/profile/08806571090770196172</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://4.bp.blogspot.com/-nYXlmlodpxE/Td-vG6fTF_I/AAAAAAAADD8/Gxf_LXLfgTQ/s220/adam_for_id_head.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1237205646217514303.post-9037109342631086242</id><published>2008-11-24T09:53:00.001-08:00</published><updated>2008-11-24T11:14:48.426-08:00</updated><title type='text'>To maven or not to maven</title><content type='html'>Chcialem sobie dzisiaj w wolnym czasie w pracy ;-) cos ciekawego poczytac i zupelnie przez przypadek wpadlem na blog dotyczacy Tapestry (Howarda L. S.). Howard nie pisal tym razem o nastepnej wersji swojego frameworku lecz ku mojemu zaskoczeniu, zajebiscie wnerwiony, skomentowal Mavena... a wlasciwie to jego developerow. Objechal ich za brak dobrej dokumentacji, jezeli wogole jakiejs dokumentacji na tematy troche glebsze niz "hello world". Zgadzam sie z gosciem. Mialem okazje wyprobowac pare pluginow do Mavena (co prawda nie pochodzacych od Apache ale ogolnie dostepnych i nawet opisanych w paru ksiazkach) i najbardziej rozbroil mnie monolityczny syf i bydlak "cargo". Tak gownianego, zawodnego software'u dawno nie widzialem, nie wspominajac juz o beznadziejnej dokumentacji. Szkoda ze wiele pluginow i ich tworcow idzie w podobnym kierunku... szkoda bo maven to moim zdaniem super narzedzie i przede wszystkim zajebisty pomysl.&lt;br /&gt;&lt;br /&gt;Link do blogu o ktorym wspominalem: http://tapestryjava.blogspot.com/2008/11/maven-displaying-version-number-in.html&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1237205646217514303-9037109342631086242?l=nowaqblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nowaqblog.blogspot.com/feeds/9037109342631086242/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1237205646217514303&amp;postID=9037109342631086242' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1237205646217514303/posts/default/9037109342631086242'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1237205646217514303/posts/default/9037109342631086242'/><link rel='alternate' type='text/html' href='http://nowaqblog.blogspot.com/2008/11/to-maven-not-to-maven.html' title='To maven or not to maven'/><author><name>nowaq</name><uri>http://www.blogger.com/profile/08806571090770196172</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://4.bp.blogspot.com/-nYXlmlodpxE/Td-vG6fTF_I/AAAAAAAADD8/Gxf_LXLfgTQ/s220/adam_for_id_head.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1237205646217514303.post-1051611502892201278</id><published>2008-11-22T01:39:00.000-08:00</published><updated>2008-11-22T01:50:40.519-08:00</updated><title type='text'>It's not a "bug"! It's a feature!</title><content type='html'>Zarombiscie spodobal mi sie ostatni wpis na blogu "Coding Horror" (&lt;a href="http://www.codinghorror.com/blog/archives/001189.html"&gt;http://www.codinghorror.com/blog/archives/001189.html&lt;/a&gt;). Gosciu deliberuje nad problemem rozrozniania typowego "buga" od dodatkowej lub brakujacej funkcjonalnosci w aplikacji. W pelni sie z typem zgadzam! Taka klasyfikacja prowadzi czesto do tego ze developerzy (nie mowiac juz o garniturowcach) zaczynaja ignorowac "mniej wazne" z ich punktu widzenia problemy.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1237205646217514303-1051611502892201278?l=nowaqblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nowaqblog.blogspot.com/feeds/1051611502892201278/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1237205646217514303&amp;postID=1051611502892201278' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1237205646217514303/posts/default/1051611502892201278'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1237205646217514303/posts/default/1051611502892201278'/><link rel='alternate' type='text/html' href='http://nowaqblog.blogspot.com/2008/11/its-not-bug-its-feature.html' title='It&apos;s not a &quot;bug&quot;! It&apos;s a feature!'/><author><name>nowaq</name><uri>http://www.blogger.com/profile/08806571090770196172</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://4.bp.blogspot.com/-nYXlmlodpxE/Td-vG6fTF_I/AAAAAAAADD8/Gxf_LXLfgTQ/s220/adam_for_id_head.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1237205646217514303.post-6766202720748397855</id><published>2008-11-21T06:42:00.000-08:00</published><updated>2008-11-21T08:34:26.848-08:00</updated><title type='text'>Glupi post</title><content type='html'>No tak sobie wlasnie pomyslalem ze cos wcisne w tego bloga (w koncu zalozylem go chyba z 5 miechow temu :-)). Inspiracją na dzisiaj bylo male spotkanie w firmie. W sumie to wogole postanowilem sobie wszelkie zdarzenia z firmy pisac na moim wlasnym blogu zeby potem, jak juz opuszcze ten kurwidolek, miec co wspominac... moze nawet sie posmiac.. a moze zaplakac :-)&lt;br /&gt;&lt;br /&gt;Dzisiaj wszystkie tkanki z biura.. nawet te bardziej tkankowe niz zwykle tkanki (prawie jak w "Dniu Swira".. hehe..) zebraly sie by posluchac czego to inne tkanki nie zrobily przez ostatni miesiac czasu (tzw. "Sprint Review"). Generalnie to spoko ze wogole cos takiego jak SCRUM tu mamy, szkoda tylko ze ludzie nie bardzo kumaja po co i co to wogole jest :-) Wiec, wracajac do tematu. Pewien rudy i odrazajacy swym wygladem kolega byl pierwszym, jakze dumnym prezentujacym. Zaczal nawet rozsadnie wprowadzac wszystkich w temat ktory powinien byc im juz od miesiecy znany (szczegolnie sapiensom w garniturach ktorzy jak na moje oko wygladali na najbardziej zdziwionych... no tak w sumie to najwazniejsze ze im sie dobrze buty swiecily i krawat wygladal na dobrze wyprasowany :-)). Kurde, zbaczam z tematu. Generalnie typ nie dokonczyl prezentacji bo mu przerwano. Rozpoczela sie godzinna dyskusja na temat kontrolek, okienek itp. Jak to nie dobrze jest ze klient musi kliknac 2 a nie raz na drzewku. W sumie to nawet nie przykladalem do tego zbyt duzej uwagi choc wnerwialo mnie troche to ze zarowno ja jak i pozostale 30 osob siedzialo cicho bo nikt nie mial nic do powiedzenia (to chyba oczywiste ze jeden klik jest lepszy od dwoch, nie?). Pewnie nic bym sobie nawet konstruktywnego nie pomyslal (mozg chodzil mi pod koniec na jakies 0.01% mocy... czyli tryb przytrzymywania powiek powyzej zrenicy) gdyby nie to ze ostatnia prezentacja byla na temat robienia "Reviews". Przebudzilem sie. "O znam ten temat!". Taki smieszny, lekko lysawy typosz wtracil sie jak juz wszyscy mieli wychodzic i odpykal (prawdopodobie na obrotach mozgu podobnych do moich)... jakies 14 slajdow o tym jak wyglada konstruktywny "review". Zajebista ironia, chwile przed jego przedstawieniem wszyscy robili dokladnie inaczej a on, mistrz, sie nawet nie odezwal. A juz wogole najlepsze bylo to ze po tej prezentacji nikt problemu nie zauwazyl. Wszyscy wypruli z sali jakby im ktos kolejke po wedline za chwile mial zajac. Aaa... nie... zaraz... najlepszy byl ostatni komentarz. "... widzicie, dobrze ze zostaliscie, przynajmniej bedziecie miec dodatkowy wpis do listy szkolen...". Lapy mi opadly przynajmnie do poziomu piwnicy. O co tu chodzi? Tak chyba nie jest wszedzie, co? Czas szukac nowej pracy.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1237205646217514303-6766202720748397855?l=nowaqblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nowaqblog.blogspot.com/feeds/6766202720748397855/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1237205646217514303&amp;postID=6766202720748397855' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1237205646217514303/posts/default/6766202720748397855'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1237205646217514303/posts/default/6766202720748397855'/><link rel='alternate' type='text/html' href='http://nowaqblog.blogspot.com/2008/11/glupi-post.html' title='Glupi post'/><author><name>nowaq</name><uri>http://www.blogger.com/profile/08806571090770196172</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://4.bp.blogspot.com/-nYXlmlodpxE/Td-vG6fTF_I/AAAAAAAADD8/Gxf_LXLfgTQ/s220/adam_for_id_head.jpg'/></author><thr:total>0</thr:total></entry></feed>
