<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/atom10full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><feed xmlns="http://www.w3.org/2005/Atom" xmlns:openSearch="http://a9.com/-/spec/opensearch/1.1/" xmlns:georss="http://www.georss.org/georss" xmlns:gd="http://schemas.google.com/g/2005" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" gd:etag="W/&quot;Ck4DQ304fyp7ImA9WxJWGEw.&quot;"><id>tag:blogger.com,1999:blog-37190103</id><updated>2009-06-23T19:36:12.337-07:00</updated><title>cem/catik</title><subtitle type="html">I've never written before; only because I didn't want to. Then someone told me "If you don't write it down, it never happened". Now it's my turn to reflect - on technology, software and the bleeding edge.</subtitle><link rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml" href="http://cem.catikkas.net/feeds/posts/default" /><link rel="alternate" type="text/html" href="http://cem.catikkas.net/" /><author><name>Cem Catikkas</name><uri>http://www.blogger.com/profile/09897043050188812442</uri><email>noreply@blogger.com</email></author><generator version="7.00" uri="http://www.blogger.com">Blogger</generator><openSearch:totalResults>16</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><link rel="self" href="http://feeds.feedburner.com/cemcatik" type="application/atom+xml" /><entry gd:etag="W/&quot;DkICQXc-fyp7ImA9WxJXF0U.&quot;"><id>tag:blogger.com,1999:blog-37190103.post-3739373772164070106</id><published>2009-06-11T22:22:00.000-07:00</published><updated>2009-06-11T22:29:20.957-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-06-11T22:29:20.957-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="rim" /><category scheme="http://www.blogger.com/atom/ns#" term="software" /><category scheme="http://www.blogger.com/atom/ns#" term="design" /><category scheme="http://www.blogger.com/atom/ns#" term="testing" /><title>That's How I Rant</title><content type="html">OK, I think I came a little too strong in the meeting – blame it on production incident! This is going to be a long one...&lt;br /&gt;&lt;br /&gt;I think I got a better handle of the original idea. So I think of it in 2 ways. First is the ease of use – easy to install/run aspect from automation expert side. And the second is the bank of dedicated machines that Mo’s group will be in charge of maintaining/running a pre-defined set of tests that will get triggered automatically with pushes and also they can run them in small chunks on demand against an environment of their choosing.&lt;br /&gt;&lt;br /&gt;I believe that it would be ridiculously impossible to maintain these dedicated boxes if we let anybody try to “test-run” their newly written tests willy-nilly. In my opinion the testers of other groups should be writing their tests/adding on to the basic extensions/actors we created locally on their machines and then check in to Perforce when they’re done. Than after verifying that these tests are working as expected and decided that they are worthy of promoting to the set of tests that get ran with the automated push.&lt;br /&gt;&lt;br /&gt;It seemed like we were all in agreement that it would be impossible to maintain the “lab” for “everybody else”. First and foremost we cannot know what kind of requirements they will have about the environment for their tests. Most basic – how many devices/accounts do they want the test to run against? So far all our examples were based on 1 device/test. So I’d recommend that the testers can still write the tests up to their expectations and then if we see this test to pass certain standards, then we can promote it to run with the automated push.&lt;br /&gt;&lt;br /&gt;So in this case what would the “lab” look like? I don’t think we would need to split them up based on location. We just need to verify that they have access to the environments they are going to run against. Then I guess we’d have a separate box per environment such that if needed we can run the same set of tests concurrently against all environments.&lt;br /&gt;&lt;br /&gt;Let’s figure this out with Angi before moving on to the next sprint.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/37190103-3739373772164070106?l=cem.catikkas.net'/&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/cemcatik/~4/XdOqmTYTRD8" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://cem.catikkas.net/feeds/3739373772164070106/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=37190103&amp;postID=3739373772164070106" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/37190103/posts/default/3739373772164070106?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/37190103/posts/default/3739373772164070106?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/cemcatik/~3/XdOqmTYTRD8/thats-how-i-rant.html" title="That's How I Rant" /><author><name>Cem Catikkas</name><uri>http://www.blogger.com/profile/03786191759259084957</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="05469241952739936300" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://cem.catikkas.net/2009/06/thats-how-i-rant.html</feedburner:origLink></entry><entry gd:etag="W/&quot;A0MHQXoyeSp7ImA9WxRaF08.&quot;"><id>tag:blogger.com,1999:blog-37190103.post-3365731764976257490</id><published>2008-12-19T14:00:00.000-08:00</published><updated>2008-12-19T15:30:30.491-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2008-12-19T15:30:30.491-08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="internship" /><category scheme="http://www.blogger.com/atom/ns#" term="interviewing" /><title>"Write Me a Function That Reverses a String"</title><content type="html">(If you want to get &lt;b&gt;real&lt;/b&gt; information how to &lt;b&gt;really&lt;/b&gt; interview, don't look anywhere else but &lt;a href="http://www.joelonsoftware.com/articles/GuerrillaInterviewing3.html"&gt;http://www.joelonsoftware.com/articles/GuerrillaInterviewing3.html&lt;/a&gt;)&lt;br /&gt;&lt;br /&gt;I happened to cover my team lead for an interview, and apparently our interview process is quite harsh. Harsh is not enough to explain - It was like trying to dodge bullets during a hurricane. If I was the intern, I would probably have flipped over the meeting table and run for the window!&lt;br /&gt;&lt;br /&gt;Let me first explain to you how our interviews are structured. Depending on the candidates' experience and position they usually go through a minimum of two 45-minute interviews. You would think two interviews is very short, right? Well, each interview happens to have three people on the opposite side of the table. These three people are preferably from different teams. So you're interviewing three people all at once. That's quite a pressure if you're used to having 1-on-1 interviews. &lt;br /&gt;&lt;br /&gt;Interview started off with pretty straight forward questions that every CS student &lt;b&gt;must&lt;/b&gt; be able to answer really easily:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;What is polymorphism?&lt;br /&gt;&lt;/li&gt;&lt;li&gt;What is difference between method overloading and method overriding?&lt;br /&gt;&lt;/li&gt;&lt;li&gt;What is a Reentrant Lock? How does it differ from a Semaphore?&lt;br /&gt;&lt;/li&gt;&lt;li&gt;How do you select all columns from the Users table?&lt;/li&gt;&lt;li&gt;What's the time complexity of Merge Sort? (This one really annoys me, I'd rather ask them to implement it first, and then tell me the answer based on their solution instead of directly answering it.)&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;Next comes the questions that show us how good a Java superstar you are:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;What's the difference between a regular inner class and a static inner class?&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Why should I choose &lt;span style=" ;font-family:'Courier New';"&gt;StringBuffer &lt;/span&gt;over &lt;span style=" ;font-family:'Courier New';"&gt;StringBuilder&lt;/span&gt;?&lt;br /&gt;&lt;/li&gt;&lt;li&gt;What's the difference between Interface and Abstract Class?&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;Then comes the hard-core superstar programmer questions:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;What is a Socket? &lt;br /&gt;&lt;/li&gt;&lt;li&gt;How do web sites "remember" you? (Let me give you a hint, it's got nothing to do with IP or MAC addresses!)&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Which one performs better for parsing XML: DOM or SAX? (another hint, it's not DOM!)&lt;br /&gt;&lt;/li&gt;&lt;li&gt;What is the difference between HTTP and TCP/IP?&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;Well, let's stop for a second here. What's the problem with these questions? Oh, by the way this is only the first 5 minutes. As you might imagine, candidate had all of them wrong! Well, if I was a sophomore, I would probably choke on all these questions as well. To tell you the truth, I have a feeling I would never have gotten hired if my interviews went like this ;). &lt;br /&gt;&lt;br /&gt;Sure, these questions show us how much of a technical knowledge the candidate has, but tells us nothing about how smart or if he can get things done! After the first 10 minutes of total destruction, I was a little sad for the interviewee. To tell you the truth I even sympathised with the kid. I'd rather try to understand if he was a smart, capable and fast learner kid, so I stepped in; I have a couple of very simple questions that show us the candidate's knowledge of algorithms and problem solving skills. So I went with my favorite question:&lt;br /&gt;&lt;h2&gt;"Write me a function that reverses a String."&lt;/h2&gt;Takes, maybe, 2 minutes to answer this question on the board. Another 3 minutes to have a step-by-step testing exercise. Once the candidate is confident with the answer, I then ask them if they saw their bug - let them roll around in the mud for 5 minutes. This is especially fun if there is no bug - the good ones just go nuts trying to find their non-mistake.&lt;br /&gt;&lt;br /&gt;What makes this my favorite question is if you have good candidates, then there is so little places where they'll mess up. If they can't even answer this question, you know they are a "No hire". Unfortunately even I can't make any exceptions if you can't answer a standard question. &lt;br /&gt;&lt;br /&gt;Fun part is if the candidates go through this question like a breeze, you can easily extend the question to better measure them up:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;What's the space/time complexity of your solution? (Did they go to their algorithms class?)&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Now do it in constant space. (Problem solving skills)&lt;br /&gt;&lt;/li&gt;&lt;li&gt;How would you solve this multi-threaded? (Translation: Are you a superstar student?)&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;Tough economic times call for tough interview experiences. We can't make the mistake of hiring an intern that we don't want to bring in for full-time after the internship. Yes, our interview process must be very competitive and selective but I believe that the interview must be well balanced, too. Enough questions to show us the technical knowledge as well as personal capabilities. You can't be too harsh, or too soft. The result should never solely be based on technical questions - what's the probability that an intern or a new graduate is technically well versed? If the candidates are not technical enough, they better be able to solve questions better than I would!&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/37190103-3365731764976257490?l=cem.catikkas.net'/&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/cemcatik/~4/CSaiyxljS-A" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://cem.catikkas.net/feeds/3365731764976257490/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=37190103&amp;postID=3365731764976257490" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/37190103/posts/default/3365731764976257490?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/37190103/posts/default/3365731764976257490?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/cemcatik/~3/CSaiyxljS-A/write-me-function-that-reverses-string.html" title="&quot;Write Me a Function That Reverses a String&quot;" /><author><name>Cem Catikkas</name><uri>http://www.blogger.com/profile/03786191759259084957</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="05469241952739936300" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://cem.catikkas.net/2008/12/write-me-function-that-reverses-string.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CkQEQH08eSp7ImA9WxRSFE8.&quot;"><id>tag:blogger.com,1999:blog-37190103.post-4583879412641045539</id><published>2008-09-14T11:45:00.000-07:00</published><updated>2008-09-14T12:25:01.371-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2008-09-14T12:25:01.371-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="java" /><category scheme="http://www.blogger.com/atom/ns#" term="mock" /><category scheme="http://www.blogger.com/atom/ns#" term="unit testing" /><category scheme="http://www.blogger.com/atom/ns#" term="software" /><title>Mocking Static Blocks in Java</title><content type="html">My motto for Java is "just because Java has static blocks, it doesn't mean that you should be using them." Jokes aside, there are a lot of tricks in Java that make testing a nightmare. Two of the most I hate are Anonymous Classes and Static Blocks. We have a lot of legacy code that make use of Static Blocks and these are one of the annoying points in our push in writing unit tests. Our goal is to be able to write unit tests for classes that depend on this static initialization with minimal code changes.&lt;br /&gt;&lt;br /&gt;So far my suggestion to my colleagues is to move the body of the static block into a &lt;code&gt;private static&lt;/code&gt; method and call it &lt;code&gt;staticInit&lt;/code&gt;. This method can then be called from within the static block. For unit testing another class that depends on this class could easily mock &lt;code&gt;staticInit&lt;/code&gt; with JMockit to not do anything. Let's see this in example.&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span"   style="border-collapse: collapse;   line-height: 18px; font-family:Arial;font-size:14px;"&gt;&lt;pre class="prettyprint"   style="margin-top: 0px; margin-right: 0px; margin-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial;  vertical-align: baseline; background-image: initial; background-repeat: initial; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial;  margin-bottom: 10px; overflow-x: auto; overflow-y: auto; width: 620px; padding-top: 5px; padding-right: 5px; padding-bottom: 5px; padding-left: 5px; background-color: rgb(245, 245, 245); background-position: initial initial; font-family:Consolas, Monaco, 'Liberation Mono', 'Lucida Console', monospace;font-size:100%;"&gt;&lt;code    style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial;  vertical-align: baseline; background-image: initial; background-repeat: initial; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial; background-  background-position: initial initial; font-family:Consolas, Monaco, 'Liberation Mono', 'Lucida Console', monospace;font-size:100%;color:transparent;"&gt;&lt;span class="kwd"  style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial;  vertical-align: baseline; background-image: initial; background-repeat: initial; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial; background-color: transparent; color: rgb(0, 0, 139); background-position: initial initial; font-size:100%;"&gt;public&lt;/span&gt;&lt;span class="pln"   style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial;  vertical-align: baseline; background-image: initial; background-repeat: initial; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial; background-color: transparent;  background-position: initial initial; font-size:100%;color:black;"&gt; &lt;/span&gt;&lt;span class="kwd"  style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial;  vertical-align: baseline; background-image: initial; background-repeat: initial; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial; background-color: transparent; color: rgb(0, 0, 139); background-position: initial initial; font-size:100%;"&gt;class&lt;/span&gt;&lt;span class="pln"   style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial;  vertical-align: baseline; background-image: initial; background-repeat: initial; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial; background-color: transparent;  background-position: initial initial; font-size:100%;color:black;"&gt; &lt;/span&gt;&lt;span class="typ"  style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial;  vertical-align: baseline; background-image: initial; background-repeat: initial; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial; background-color: transparent; color: rgb(43, 145, 175); background-position: initial initial; font-size:100%;"&gt;ClassWithStaticInit&lt;/span&gt;&lt;span class="pln"   style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial;  vertical-align: baseline; background-image: initial; background-repeat: initial; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial; background-color: transparent;  background-position: initial initial; font-size:100%;color:black;"&gt; &lt;/span&gt;&lt;span class="pun"   style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial;  vertical-align: baseline; background-image: initial; background-repeat: initial; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial; background-color: transparent;  background-position: initial initial; font-size:100%;color:black;"&gt;{&lt;/span&gt;&lt;span class="pln"   style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial;  vertical-align: baseline; background-image: initial; background-repeat: initial; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial; background-color: transparent;  background-position: initial initial; font-size:100%;color:black;"&gt;&lt;br /&gt;  &lt;/span&gt;&lt;span class="kwd"  style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial;  vertical-align: baseline; background-image: initial; background-repeat: initial; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial; background-color: transparent; color: rgb(0, 0, 139); background-position: initial initial; font-size:100%;"&gt;static&lt;/span&gt;&lt;span class="pln"   style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial;  vertical-align: baseline; background-image: initial; background-repeat: initial; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial; background-color: transparent;  background-position: initial initial; font-size:100%;color:black;"&gt; &lt;/span&gt;&lt;span class="pun"   style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial;  vertical-align: baseline; background-image: initial; background-repeat: initial; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial; background-color: transparent;  background-position: initial initial; font-size:100%;color:black;"&gt;{&lt;/span&gt;&lt;span class="pln"   style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial;  vertical-align: baseline; background-image: initial; background-repeat: initial; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial; background-color: transparent;  background-position: initial initial; font-size:100%;color:black;"&gt;&lt;br /&gt;    &lt;/span&gt;&lt;span class="typ"  style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial;  vertical-align: baseline; background-image: initial; background-repeat: initial; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial; background-color: transparent; color: rgb(43, 145, 175); background-position: initial initial; font-size:100%;"&gt;System&lt;/span&gt;&lt;span class="pun"   style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial;  vertical-align: baseline; background-image: initial; background-repeat: initial; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial; background-color: transparent;  background-position: initial initial; font-size:100%;color:black;"&gt;.&lt;/span&gt;&lt;span class="kwd"  style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial;  vertical-align: baseline; background-image: initial; background-repeat: initial; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial; background-color: transparent; color: rgb(0, 0, 139); background-position: initial initial; font-size:100%;"&gt;out&lt;/span&gt;&lt;span class="pun"   style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial;  vertical-align: baseline; background-image: initial; background-repeat: initial; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial; background-color: transparent;  background-position: initial initial; font-size:100%;color:black;"&gt;.&lt;/span&gt;&lt;span class="pln"   style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial;  vertical-align: baseline; background-image: initial; background-repeat: initial; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial; background-color: transparent;  background-position: initial initial; font-size:100%;color:black;"&gt;println&lt;/span&gt;&lt;span class="pun"   style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial;  vertical-align: baseline; background-image: initial; background-repeat: initial; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial; background-color: transparent;  background-position: initial initial; font-size:100%;color:black;"&gt;(&lt;/span&gt;&lt;span class="str"   style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial;  vertical-align: baseline; background-image: initial; background-repeat: initial; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial; background-color: transparent;  background-position: initial initial; font-size:100%;color:maroon;"&gt;"static initializer."&lt;/span&gt;&lt;span class="pun"   style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial;  vertical-align: baseline; background-image: initial; background-repeat: initial; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial; background-color: transparent;  background-position: initial initial; font-size:100%;color:black;"&gt;);&lt;/span&gt;&lt;span class="pln"   style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial;  vertical-align: baseline; background-image: initial; background-repeat: initial; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial; background-color: transparent;  background-position: initial initial; font-size:100%;color:black;"&gt;&lt;br /&gt;  &lt;/span&gt;&lt;span class="pun"   style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial;  vertical-align: baseline; background-image: initial; background-repeat: initial; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial; background-color: transparent;  background-position: initial initial; font-size:100%;color:black;"&gt;}&lt;/span&gt;&lt;span class="pln"   style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial;  vertical-align: baseline; background-image: initial; background-repeat: initial; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial; background-color: transparent;  background-position: initial initial; font-size:100%;color:black;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span class="pun"   style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial;  vertical-align: baseline; background-image: initial; background-repeat: initial; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial; background-color: transparent;  background-position: initial initial; font-size:100%;color:black;"&gt;}&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/span&gt;Will be changed to&lt;br /&gt;&lt;span class="Apple-style-span"   style="border-collapse: collapse;   line-height: 18px; font-family:Arial;font-size:14px;"&gt;&lt;pre class="prettyprint"   style="margin-top: 0px; margin-right: 0px; margin-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial;  vertical-align: baseline; background-image: initial; background-repeat: initial; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial;  margin-bottom: 10px; overflow-x: auto; overflow-y: auto; width: 620px; padding-top: 5px; padding-right: 5px; padding-bottom: 5px; padding-left: 5px; background-color: rgb(245, 245, 245); background-position: initial initial; font-family:Consolas, Monaco, 'Liberation Mono', 'Lucida Console', monospace;font-size:100%;"&gt;&lt;code    style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial;  vertical-align: baseline; background-image: initial; background-repeat: initial; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial; background-  background-position: initial initial; font-family:Consolas, Monaco, 'Liberation Mono', 'Lucida Console', monospace;font-size:100%;color:transparent;"&gt;&lt;span class="kwd"  style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial;  vertical-align: baseline; background-image: initial; background-repeat: initial; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial; background-color: transparent; color: rgb(0, 0, 139); background-position: initial initial; font-size:100%;"&gt;public&lt;/span&gt;&lt;span class="pln"   style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial;  vertical-align: baseline; background-image: initial; background-repeat: initial; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial; background-color: transparent;  background-position: initial initial; font-size:100%;color:black;"&gt; &lt;/span&gt;&lt;span class="kwd"  style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial;  vertical-align: baseline; background-image: initial; background-repeat: initial; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial; background-color: transparent; color: rgb(0, 0, 139); background-position: initial initial; font-size:100%;"&gt;class&lt;/span&gt;&lt;span class="pln"   style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial;  vertical-align: baseline; background-image: initial; background-repeat: initial; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial; background-color: transparent;  background-position: initial initial; font-size:100%;color:black;"&gt; &lt;/span&gt;&lt;span class="typ"  style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial;  vertical-align: baseline; background-image: initial; background-repeat: initial; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial; background-color: transparent; color: rgb(43, 145, 175); background-position: initial initial; font-size:100%;"&gt;ClassWithStaticInit&lt;/span&gt;&lt;span class="pln"   style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial;  vertical-align: baseline; background-image: initial; background-repeat: initial; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial; background-color: transparent;  background-position: initial initial; font-size:100%;color:black;"&gt; &lt;/span&gt;&lt;span class="pun"   style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial;  vertical-align: baseline; background-image: initial; background-repeat: initial; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial; background-color: transparent;  background-position: initial initial; font-size:100%;color:black;"&gt;{&lt;/span&gt;&lt;span class="pln"   style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial;  vertical-align: baseline; background-image: initial; background-repeat: initial; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial; background-color: transparent;  background-position: initial initial; font-size:100%;color:black;"&gt;&lt;br /&gt;  &lt;/span&gt;&lt;span class="kwd"  style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial;  vertical-align: baseline; background-image: initial; background-repeat: initial; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial; background-color: transparent; color: rgb(0, 0, 139); background-position: initial initial; font-size:100%;"&gt;static&lt;/span&gt;&lt;span class="pln"   style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial;  vertical-align: baseline; background-image: initial; background-repeat: initial; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial; background-color: transparent;  background-position: initial initial; font-size:100%;color:black;"&gt; &lt;/span&gt;&lt;span class="pun"   style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial;  vertical-align: baseline; background-image: initial; background-repeat: initial; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial; background-color: transparent;  background-position: initial initial; font-size:100%;color:black;"&gt;{&lt;/span&gt;&lt;span class="pln"   style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial;  vertical-align: baseline; background-image: initial; background-repeat: initial; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial; background-color: transparent;  background-position: initial initial; font-size:100%;color:black;"&gt;&lt;br /&gt;    staticInit&lt;/span&gt;&lt;span class="pun"   style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial;  vertical-align: baseline; background-image: initial; background-repeat: initial; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial; background-color: transparent;  background-position: initial initial; font-size:100%;color:black;"&gt;();&lt;/span&gt;&lt;span class="pln"   style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial;  vertical-align: baseline; background-image: initial; background-repeat: initial; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial; background-color: transparent;  background-position: initial initial; font-size:100%;color:black;"&gt;&lt;br /&gt;  &lt;/span&gt;&lt;span class="pun"   style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial;  vertical-align: baseline; background-image: initial; background-repeat: initial; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial; background-color: transparent;  background-position: initial initial; font-size:100%;color:black;"&gt;}&lt;/span&gt;&lt;span class="pln"   style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial;  vertical-align: baseline; background-image: initial; background-repeat: initial; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial; background-color: transparent;  background-position: initial initial; font-size:100%;color:black;"&gt;&lt;br /&gt;&lt;br /&gt;  &lt;/span&gt;&lt;span class="kwd"  style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial;  vertical-align: baseline; background-image: initial; background-repeat: initial; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial; background-color: transparent; color: rgb(0, 0, 139); background-position: initial initial; font-size:100%;"&gt;private&lt;/span&gt;&lt;span class="pln"   style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial;  vertical-align: baseline; background-image: initial; background-repeat: initial; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial; background-color: transparent;  background-position: initial initial; font-size:100%;color:black;"&gt; &lt;/span&gt;&lt;span class="kwd"  style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial;  vertical-align: baseline; background-image: initial; background-repeat: initial; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial; background-color: transparent; color: rgb(0, 0, 139); background-position: initial initial; font-size:100%;"&gt;static&lt;/span&gt;&lt;span class="pln"   style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial;  vertical-align: baseline; background-image: initial; background-repeat: initial; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial; background-color: transparent;  background-position: initial initial; font-size:100%;color:black;"&gt; &lt;/span&gt;&lt;span class="kwd"  style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial;  vertical-align: baseline; background-image: initial; background-repeat: initial; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial; background-color: transparent; color: rgb(0, 0, 139); background-position: initial initial; font-size:100%;"&gt;void&lt;/span&gt;&lt;span class="pln"   style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial;  vertical-align: baseline; background-image: initial; background-repeat: initial; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial; background-color: transparent;  background-position: initial initial; font-size:100%;color:black;"&gt; staticInit&lt;/span&gt;&lt;span class="pun"   style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial;  vertical-align: baseline; background-image: initial; background-repeat: initial; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial; background-color: transparent;  background-position: initial initial; font-size:100%;color:black;"&gt;()&lt;/span&gt;&lt;span class="pln"   style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial;  vertical-align: baseline; background-image: initial; background-repeat: initial; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial; background-color: transparent;  background-position: initial initial; font-size:100%;color:black;"&gt; &lt;/span&gt;&lt;span class="pun"   style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial;  vertical-align: baseline; background-image: initial; background-repeat: initial; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial; background-color: transparent;  background-position: initial initial; font-size:100%;color:black;"&gt;{&lt;/span&gt;&lt;span class="pln"   style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial;  vertical-align: baseline; background-image: initial; background-repeat: initial; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial; background-color: transparent;  background-position: initial initial; font-size:100%;color:black;"&gt;&lt;br /&gt;    &lt;/span&gt;&lt;span class="typ"  style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial;  vertical-align: baseline; background-image: initial; background-repeat: initial; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial; background-color: transparent; color: rgb(43, 145, 175); background-position: initial initial; font-size:100%;"&gt;System&lt;/span&gt;&lt;span class="pun"   style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial;  vertical-align: baseline; background-image: initial; background-repeat: initial; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial; background-color: transparent;  background-position: initial initial; font-size:100%;color:black;"&gt;.&lt;/span&gt;&lt;span class="kwd"  style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial;  vertical-align: baseline; background-image: initial; background-repeat: initial; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial; background-color: transparent; color: rgb(0, 0, 139); background-position: initial initial; font-size:100%;"&gt;out&lt;/span&gt;&lt;span class="pun"   style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial;  vertical-align: baseline; background-image: initial; background-repeat: initial; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial; background-color: transparent;  background-position: initial initial; font-size:100%;color:black;"&gt;.&lt;/span&gt;&lt;span class="pln"   style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial;  vertical-align: baseline; background-image: initial; background-repeat: initial; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial; background-color: transparent;  background-position: initial initial; font-size:100%;color:black;"&gt;println&lt;/span&gt;&lt;span class="pun"   style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial;  vertical-align: baseline; background-image: initial; background-repeat: initial; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial; background-color: transparent;  background-position: initial initial; font-size:100%;color:black;"&gt;(&lt;/span&gt;&lt;span class="str"   style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial;  vertical-align: baseline; background-image: initial; background-repeat: initial; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial; background-color: transparent;  background-position: initial initial; font-size:100%;color:maroon;"&gt;"static initialized."&lt;/span&gt;&lt;span class="pun"   style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial;  vertical-align: baseline; background-image: initial; background-repeat: initial; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial; background-color: transparent;  background-position: initial initial; font-size:100%;color:black;"&gt;);&lt;/span&gt;&lt;span class="pln"   style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial;  vertical-align: baseline; background-image: initial; background-repeat: initial; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial; background-color: transparent;  background-position: initial initial; font-size:100%;color:black;"&gt;&lt;br /&gt;  &lt;/span&gt;&lt;span class="pun"   style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial;  vertical-align: baseline; background-image: initial; background-repeat: initial; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial; background-color: transparent;  background-position: initial initial; font-size:100%;color:black;"&gt;}&lt;/span&gt;&lt;span class="pln"   style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial;  vertical-align: baseline; background-image: initial; background-repeat: initial; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial; background-color: transparent;  background-position: initial initial; font-size:100%;color:black;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span class="pun"   style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial;  vertical-align: baseline; background-image: initial; background-repeat: initial; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial; background-color: transparent;  background-position: initial initial; font-size:100%;color:black;"&gt;}&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/span&gt;So that we can do the following in a JUnit.&lt;br /&gt;&lt;span class="Apple-style-span"   style="border-collapse: collapse;   line-height: 18px; font-family:Arial;font-size:14px;"&gt;&lt;pre class="prettyprint"   style="margin-top: 0px; margin-right: 0px; margin-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial;  vertical-align: baseline; background-image: initial; background-repeat: initial; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial;  margin-bottom: 10px; overflow-x: auto; overflow-y: auto; width: 620px; padding-top: 5px; padding-right: 5px; padding-bottom: 5px; padding-left: 5px; background-color: rgb(245, 245, 245); background-position: initial initial; font-family:Consolas, Monaco, 'Liberation Mono', 'Lucida Console', monospace;font-size:100%;"&gt;&lt;code    style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial;  vertical-align: baseline; background-image: initial; background-repeat: initial; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial; background-  background-position: initial initial; font-family:Consolas, Monaco, 'Liberation Mono', 'Lucida Console', monospace;font-size:100%;color:transparent;"&gt;&lt;span class="kwd"  style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial;  vertical-align: baseline; background-image: initial; background-repeat: initial; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial; background-color: transparent; color: rgb(0, 0, 139); background-position: initial initial; font-size:100%;"&gt;public&lt;/span&gt;&lt;span class="pln"   style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial;  vertical-align: baseline; background-image: initial; background-repeat: initial; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial; background-color: transparent;  background-position: initial initial; font-size:100%;color:black;"&gt; &lt;/span&gt;&lt;span class="kwd"  style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial;  vertical-align: baseline; background-image: initial; background-repeat: initial; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial; background-color: transparent; color: rgb(0, 0, 139); background-position: initial initial; font-size:100%;"&gt;class&lt;/span&gt;&lt;span class="pln"   style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial;  vertical-align: baseline; background-image: initial; background-repeat: initial; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial; background-color: transparent;  background-position: initial initial; font-size:100%;color:black;"&gt; &lt;/span&gt;&lt;span class="typ"  style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial;  vertical-align: baseline; background-image: initial; background-repeat: initial; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial; background-color: transparent; color: rgb(43, 145, 175); background-position: initial initial; font-size:100%;"&gt;DependentClassTest&lt;/span&gt;&lt;span class="pln"   style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial;  vertical-align: baseline; background-image: initial; background-repeat: initial; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial; background-color: transparent;  background-position: initial initial; font-size:100%;color:black;"&gt; &lt;/span&gt;&lt;span class="pun"   style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial;  vertical-align: baseline; background-image: initial; background-repeat: initial; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial; background-color: transparent;  background-position: initial initial; font-size:100%;color:black;"&gt;{&lt;/span&gt;&lt;span class="pln"   style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial;  vertical-align: baseline; background-image: initial; background-repeat: initial; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial; background-color: transparent;  background-position: initial initial; font-size:100%;color:black;"&gt;&lt;br /&gt;  &lt;/span&gt;&lt;span class="kwd"  style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial;  vertical-align: baseline; background-image: initial; background-repeat: initial; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial; background-color: transparent; color: rgb(0, 0, 139); background-position: initial initial; font-size:100%;"&gt;public&lt;/span&gt;&lt;span class="pln"   style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial;  vertical-align: baseline; background-image: initial; background-repeat: initial; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial; background-color: transparent;  background-position: initial initial; font-size:100%;color:black;"&gt; &lt;/span&gt;&lt;span class="kwd"  style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial;  vertical-align: baseline; background-image: initial; background-repeat: initial; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial; background-color: transparent; color: rgb(0, 0, 139); background-position: initial initial; font-size:100%;"&gt;static&lt;/span&gt;&lt;span class="pln"   style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial;  vertical-align: baseline; background-image: initial; background-repeat: initial; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial; background-color: transparent;  background-position: initial initial; font-size:100%;color:black;"&gt; &lt;/span&gt;&lt;span class="kwd"  style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial;  vertical-align: baseline; background-image: initial; background-repeat: initial; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial; background-color: transparent; color: rgb(0, 0, 139); background-position: initial initial; font-size:100%;"&gt;class&lt;/span&gt;&lt;span class="pln"   style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial;  vertical-align: baseline; background-image: initial; background-repeat: initial; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial; background-color: transparent;  background-position: initial initial; font-size:100%;color:black;"&gt; &lt;/span&gt;&lt;span class="typ"  style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial;  vertical-align: baseline; background-image: initial; background-repeat: initial; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial; background-color: transparent; color: rgb(43, 145, 175); background-position: initial initial; font-size:100%;"&gt;MockClassWithStaticInit&lt;/span&gt;&lt;span class="pln"   style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial;  vertical-align: baseline; background-image: initial; background-repeat: initial; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial; background-color: transparent;  background-position: initial initial; font-size:100%;color:black;"&gt; &lt;/span&gt;&lt;span class="pun"   style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial;  vertical-align: baseline; background-image: initial; background-repeat: initial; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial; background-color: transparent;  background-position: initial initial; font-size:100%;color:black;"&gt;{&lt;/span&gt;&lt;span class="pln"   style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial;  vertical-align: baseline; background-image: initial; background-repeat: initial; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial; background-color: transparent;  background-position: initial initial; font-size:100%;color:black;"&gt;&lt;br /&gt;    &lt;/span&gt;&lt;span class="kwd"  style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial;  vertical-align: baseline; background-image: initial; background-repeat: initial; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial; background-color: transparent; color: rgb(0, 0, 139); background-position: initial initial; font-size:100%;"&gt;public&lt;/span&gt;&lt;span class="pln"   style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial;  vertical-align: baseline; background-image: initial; background-repeat: initial; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial; background-color: transparent;  background-position: initial initial; font-size:100%;color:black;"&gt; &lt;/span&gt;&lt;span class="kwd"  style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial;  vertical-align: baseline; background-image: initial; background-repeat: initial; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial; background-color: transparent; color: rgb(0, 0, 139); background-position: initial initial; font-size:100%;"&gt;static&lt;/span&gt;&lt;span class="pln"   style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial;  vertical-align: baseline; background-image: initial; background-repeat: initial; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial; background-color: transparent;  background-position: initial initial; font-size:100%;color:black;"&gt; &lt;/span&gt;&lt;span class="kwd"  style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial;  vertical-align: baseline; background-image: initial; background-repeat: initial; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial; background-color: transparent; color: rgb(0, 0, 139); background-position: initial initial; font-size:100%;"&gt;void&lt;/span&gt;&lt;span class="pln"   style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial;  vertical-align: baseline; background-image: initial; background-repeat: initial; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial; background-color: transparent;  background-position: initial initial; font-size:100%;color:black;"&gt; staticInit&lt;/span&gt;&lt;span class="pun"   style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial;  vertical-align: baseline; background-image: initial; background-repeat: initial; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial; background-color: transparent;  background-position: initial initial; font-size:100%;color:black;"&gt;()&lt;/span&gt;&lt;span class="pln"   style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial;  vertical-align: baseline; background-image: initial; background-repeat: initial; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial; background-color: transparent;  background-position: initial initial; font-size:100%;color:black;"&gt; &lt;/span&gt;&lt;span class="pun"   style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial;  vertical-align: baseline; background-image: initial; background-repeat: initial; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial; background-color: transparent;  background-position: initial initial; font-size:100%;color:black;"&gt;{&lt;/span&gt;&lt;span class="pln"   style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial;  vertical-align: baseline; background-image: initial; background-repeat: initial; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial; background-color: transparent;  background-position: initial initial; font-size:100%;color:black;"&gt;&lt;br /&gt;    &lt;/span&gt;&lt;span class="pun"   style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial;  vertical-align: baseline; background-image: initial; background-repeat: initial; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial; background-color: transparent;  background-position: initial initial; font-size:100%;color:black;"&gt;}&lt;/span&gt;&lt;span class="pln"   style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial;  vertical-align: baseline; background-image: initial; background-repeat: initial; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial; background-color: transparent;  background-position: initial initial; font-size:100%;color:black;"&gt;&lt;br /&gt;  &lt;/span&gt;&lt;span class="pun"   style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial;  vertical-align: baseline; background-image: initial; background-repeat: initial; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial; background-color: transparent;  background-position: initial initial; font-size:100%;color:black;"&gt;}&lt;/span&gt;&lt;span class="pln"   style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial;  vertical-align: baseline; background-image: initial; background-repeat: initial; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial; background-color: transparent;  background-position: initial initial; font-size:100%;color:black;"&gt;&lt;br /&gt;&lt;br /&gt;  &lt;/span&gt;&lt;span class="lit"   style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial;  vertical-align: baseline; background-image: initial; background-repeat: initial; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial; background-color: transparent;  background-position: initial initial; font-size:100%;color:maroon;"&gt;@BeforeClass&lt;/span&gt;&lt;span class="pln"   style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial;  vertical-align: baseline; background-image: initial; background-repeat: initial; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial; background-color: transparent;  background-position: initial initial; font-size:100%;color:black;"&gt;&lt;br /&gt;  &lt;/span&gt;&lt;span class="kwd"  style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial;  vertical-align: baseline; background-image: initial; background-repeat: initial; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial; background-color: transparent; color: rgb(0, 0, 139); background-position: initial initial; font-size:100%;"&gt;public&lt;/span&gt;&lt;span class="pln"   style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial;  vertical-align: baseline; background-image: initial; background-repeat: initial; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial; background-color: transparent;  background-position: initial initial; font-size:100%;color:black;"&gt; &lt;/span&gt;&lt;span class="kwd"  style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial;  vertical-align: baseline; background-image: initial; background-repeat: initial; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial; background-color: transparent; color: rgb(0, 0, 139); background-position: initial initial; font-size:100%;"&gt;static&lt;/span&gt;&lt;span class="pln"   style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial;  vertical-align: baseline; background-image: initial; background-repeat: initial; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial; background-color: transparent;  background-position: initial initial; font-size:100%;color:black;"&gt; &lt;/span&gt;&lt;span class="kwd"  style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial;  vertical-align: baseline; background-image: initial; background-repeat: initial; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial; background-color: transparent; color: rgb(0, 0, 139); background-position: initial initial; font-size:100%;"&gt;void&lt;/span&gt;&lt;span class="pln"   style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial;  vertical-align: baseline; background-image: initial; background-repeat: initial; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial; background-color: transparent;  background-position: initial initial; font-size:100%;color:black;"&gt; setUpBeforeClass&lt;/span&gt;&lt;span class="pun"   style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial;  vertical-align: baseline; background-image: initial; background-repeat: initial; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial; background-color: transparent;  background-position: initial initial; font-size:100%;color:black;"&gt;()&lt;/span&gt;&lt;span class="pln"   style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial;  vertical-align: baseline; background-image: initial; background-repeat: initial; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial; background-color: transparent;  background-position: initial initial; font-size:100%;color:black;"&gt; &lt;/span&gt;&lt;span class="pun"   style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial;  vertical-align: baseline; background-image: initial; background-repeat: initial; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial; background-color: transparent;  background-position: initial initial; font-size:100%;color:black;"&gt;{&lt;/span&gt;&lt;span class="pln"   style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial;  vertical-align: baseline; background-image: initial; background-repeat: initial; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial; background-color: transparent;  background-position: initial initial; font-size:100%;color:black;"&gt;&lt;br /&gt;    &lt;/span&gt;&lt;span class="typ"  style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial;  vertical-align: baseline; background-image: initial; background-repeat: initial; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial; background-color: transparent; color: rgb(43, 145, 175); background-position: initial initial; font-size:100%;"&gt;Mockit&lt;/span&gt;&lt;span class="pun"   style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial;  vertical-align: baseline; background-image: initial; background-repeat: initial; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial; background-color: transparent;  background-position: initial initial; font-size:100%;color:black;"&gt;.&lt;/span&gt;&lt;span class="pln"   style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial;  vertical-align: baseline; background-image: initial; background-repeat: initial; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial; background-color: transparent;  background-position: initial initial; font-size:100%;color:black;"&gt;redefineMethods&lt;/span&gt;&lt;span class="pun"   style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial;  vertical-align: baseline; background-image: initial; background-repeat: initial; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial; background-color: transparent;  background-position: initial initial; font-size:100%;color:black;"&gt;(&lt;/span&gt;&lt;span class="typ"  style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial;  vertical-align: baseline; background-image: initial; background-repeat: initial; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial; background-color: transparent; color: rgb(43, 145, 175); background-position: initial initial; font-size:100%;"&gt;ClassWithStaticInit&lt;/span&gt;&lt;span class="pun"   style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial;  vertical-align: baseline; background-image: initial; background-repeat: initial; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial; background-color: transparent;  background-position: initial initial; font-size:100%;color:black;"&gt;.&lt;/span&gt;&lt;span class="kwd"  style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial;  vertical-align: baseline; background-image: initial; background-repeat: initial; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial; background-color: transparent; color: rgb(0, 0, 139); background-position: initial initial; font-size:100%;"&gt;class&lt;/span&gt;&lt;span class="pun"   style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial;  vertical-align: baseline; background-image: initial; background-repeat: initial; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial; background-color: transparent;  background-position: initial initial; font-size:100%;color:black;"&gt;,&lt;/span&gt;&lt;span class="pln"   style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial;  vertical-align: baseline; background-image: initial; background-repeat: initial; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial; background-color: transparent;  background-position: initial initial; font-size:100%;color:black;"&gt; &lt;/span&gt;&lt;span class="typ"  style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial;  vertical-align: baseline; background-image: initial; background-repeat: initial; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial; background-color: transparent; color: rgb(43, 145, 175); background-position: initial initial; font-size:100%;"&gt;MockClassWithStaticInit&lt;/span&gt;&lt;span class="pun"   style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial;  vertical-align: baseline; background-image: initial; background-repeat: initial; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial; background-color: transparent;  background-position: initial initial; font-size:100%;color:black;"&gt;.&lt;/span&gt;&lt;span class="kwd"  style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial;  vertical-align: baseline; background-image: initial; background-repeat: initial; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial; background-color: transparent; color: rgb(0, 0, 139); background-position: initial initial; font-size:100%;"&gt;class&lt;/span&gt;&lt;span class="pun"   style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial;  vertical-align: baseline; background-image: initial; background-repeat: initial; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial; background-color: transparent;  background-position: initial initial; font-size:100%;color:black;"&gt;);&lt;/span&gt;&lt;span class="pln"   style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial;  vertical-align: baseline; background-image: initial; background-repeat: initial; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial; background-color: transparent;  background-position: initial initial; font-size:100%;color:black;"&gt;&lt;br /&gt;  &lt;/span&gt;&lt;span class="pun"   style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial;  vertical-align: baseline; background-image: initial; background-repeat: initial; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial; background-color: transparent;  background-position: initial initial; font-size:100%;color:black;"&gt;}&lt;/span&gt;&lt;span class="pln"   style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial;  vertical-align: baseline; background-image: initial; background-repeat: initial; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial; background-color: transparent;  background-position: initial initial; font-size:100%;color:black;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span class="pun"   style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial;  vertical-align: baseline; background-image: initial; background-repeat: initial; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial; background-color: transparent;  background-position: initial initial; font-size:100%;color:black;"&gt;}&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/span&gt;However this solution also comes with its own problems. You can't run &lt;code&gt;DependentClassTest&lt;/code&gt; and &lt;code&gt;ClassWithStaticInitTest&lt;/code&gt; on the same JVM since you actually want the static block to run for &lt;code&gt;ClassWithStaticInitTest&lt;/code&gt;.&lt;br /&gt;&lt;br /&gt;What would be your way of accomplishing this task? Or any better, non-JMockit based solutions that you think would work cleaner? Please follow the discussion at &lt;a href="http://beta.stackoverflow.com/questions/61150/mocking-static-blocks-in-java"&gt;StackOverflow.com&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/37190103-4583879412641045539?l=cem.catikkas.net'/&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/cemcatik/~4/cycdrIirfkk" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://cem.catikkas.net/feeds/4583879412641045539/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=37190103&amp;postID=4583879412641045539" title="1 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/37190103/posts/default/4583879412641045539?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/37190103/posts/default/4583879412641045539?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/cemcatik/~3/cycdrIirfkk/mocking-static-blocks-in-java.html" title="Mocking Static Blocks in Java" /><author><name>Cem Catikkas</name><uri>http://www.blogger.com/profile/03786191759259084957</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="05469241952739936300" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">1</thr:total><feedburner:origLink>http://cem.catikkas.net/2008/09/mocking-static-blocks-in-java.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CkYFQ3k6fyp7ImA9WxdUGUg.&quot;"><id>tag:blogger.com,1999:blog-37190103.post-6588579801664070509</id><published>2008-08-05T08:27:00.000-07:00</published><updated>2008-08-05T08:28:32.717-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2008-08-05T08:28:32.717-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="social network" /><category scheme="http://www.blogger.com/atom/ns#" term="brightkite" /><category scheme="http://www.blogger.com/atom/ns#" term="twitter" /><title>5 Ws Done Right</title><content type="html">&lt;p id="bx.q1"&gt;5 Ws, 6 Ws, 5 Ws and 1 H... Who cares? What did I do? When? With who? And where? That's what everybody care about! The point is that the hundreds of social networks we're involved with happens to manage one or some of these Ws. I think the other day a similar conversation was going around in Twitter but I don't remember all the details - too bad! That was around the time I started using &lt;a id="nos." title="brightkite" href="http://brightkite.com/" target="_blank"&gt;&lt;span id="p3.."  style="color:#810081;"&gt;brightkite&lt;/span&gt;&lt;/a&gt;.&lt;/p&gt;&lt;p id="bx.q1"&gt;Then, it got me thinking that what &lt;a id="m-.0" title="brightkite" href="http://brightkite.com/" target="_blank"&gt;&lt;span id="p3..3"  style="color:#810081;"&gt;brightkite&lt;/span&gt;&lt;/a&gt; is doing with Twitter sharing should actually be the other way around. I'm already putting what I am doing, where and with whom on Twitter - why should I do the same thing over again at brightkite? Why should brightkite forward what I post there to Twitter? What brightkite should be doing instead is to subscribe to my Twitter feed and check me in to the locations I mention in my status updates.&lt;br /&gt;&lt;/p&gt;&lt;p id="bx.q1"&gt;Of course this proposal doesn't make anything easy for brightkite... Natural language processing is not an easy problem. And I'm not expecting any service like this to show up any time soon.But I believe  &lt;b id="f50t"&gt;that&lt;/b&gt; should be the value-add of brightkite.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/37190103-6588579801664070509?l=cem.catikkas.net'/&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/cemcatik/~4/n02UOwgntiw" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://cem.catikkas.net/feeds/6588579801664070509/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=37190103&amp;postID=6588579801664070509" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/37190103/posts/default/6588579801664070509?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/37190103/posts/default/6588579801664070509?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/cemcatik/~3/n02UOwgntiw/5-ws-done-right.html" title="5 Ws Done Right" /><author><name>Cem Catikkas</name><uri>http://www.blogger.com/profile/03786191759259084957</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="05469241952739936300" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://cem.catikkas.net/2008/08/5-ws-done-right.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DUcFRnk7eip7ImA9WxZUEUw.&quot;"><id>tag:blogger.com,1999:blog-37190103.post-2779391604924699220</id><published>2008-03-29T16:35:00.000-07:00</published><updated>2008-04-01T23:16:57.702-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2008-04-01T23:16:57.702-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="blackberry" /><category scheme="http://www.blogger.com/atom/ns#" term="technology" /><category scheme="http://www.blogger.com/atom/ns#" term="rim" /><category scheme="http://www.blogger.com/atom/ns#" term="software" /><title>Mobile Innovators Falling Back?</title><content type="html">&lt;p&gt;&lt;a href="http://twitter.com/antoniocapo"&gt;&lt;em&gt;antoniocapo&lt;/em&gt;&lt;/a&gt;&lt;em&gt;: Blog Post: A twittering life. &lt;/em&gt;&lt;a id="zszy" href="http://tinyurl.com/33esrk" goog_docs_charindex="80"&gt;&lt;em&gt;http://tinyurl.com/33esrk&lt;/em&gt;&lt;/a&gt;&lt;em&gt;. Yours similar?&lt;/em&gt;&lt;/p&gt;&lt;p&gt;You can never be too fast to follow the latest trends in the World. Being slow, on the other hand, is unacceptable; it means you're not cool! Last night I was sitting around, doing some work, then @&lt;a id="ofe1" title="antoniocapo" href="http://twitter.com/antoniocapo" target="_blank" goog_docs_charindex="323"&gt;antoniocapo&lt;/a&gt; sent this out on &lt;a id="bdb3" title="Twitter" href="http://www.twitter.com/" target="_blank" goog_docs_charindex="356"&gt;Twitter&lt;/a&gt;, and the &lt;a id="zr3w" title="post" href="http://www.altamirano.org/a-twittering-life" target="_blank" goog_docs_charindex="375"&gt;post&lt;/a&gt; got me thinking... (It also got me thinking that I'm probably the only one amongst the 8,000 people at RIM that uses Twitter. Facebook is catching up :)). &lt;/p&gt;&lt;p&gt;Well, for those of you who don't know, I work at Research in Motion, &lt;a id="hcuf" title="RIM" href="http://www.rim.com/" target="_blank" goog_docs_charindex="618"&gt;RIM&lt;/a&gt; for short. We make the &lt;a id="qyjc" title="BlackBerry" href="http://www.blackberry.com/" target="_blank" goog_docs_charindex="647"&gt;BlackBerry&lt;/a&gt;. We are &lt;strong&gt;THE&lt;/strong&gt; innovators in mobile technology. To be more specific, I work in the group that makes your &lt;a id="xj6b" title="Gmail" href="http://www.gmail.com/" target="_blank" goog_docs_charindex="764"&gt;Gmail&lt;/a&gt;, &lt;a id="cq44" title="Yahoo!" href="http://mail.yahoo.com/" target="_blank" goog_docs_charindex="773"&gt;Yahoo!&lt;/a&gt;, heck all your personal emails delivered to your phone so you get more addicted to your device (more info &lt;a id="a0c9" title="here" href="http://na.blackberry.com/eng/services/internet/email.jsp" target="_blank" goog_docs_charindex="888"&gt;here&lt;/a&gt;). We are the &lt;strong&gt;kings&lt;/strong&gt; of &lt;a id="qhqz" title="push mail" href="http://en.wikipedia.org/wiki/Push_e-mail" target="_blank" goog_docs_charindex="919"&gt;push mail&lt;/a&gt; technology which saves you gazillions of dollars on mobile data bills.&lt;/p&gt;&lt;p&gt;So, what has this tweet got to do anything with what I do? It got me to realize that we're still very much on the corporate side. RIM's not trying hard enough to tap into the consumer market. Yes, last couple years we've done a lot to tap into the consumer market and achieved great success (ever heard of &lt;a id="o-4l" title="Pearl" href="http://na.blackberry.com/eng/devices/series-detail.jsp?navId=H0,C101" target="_blank" goog_docs_charindex="1314"&gt;Pearl&lt;/a&gt;, &lt;a id="hv_o" title="Curve" href="http://na.blackberry.com/eng/devices/series-detail.jsp?navId=H0,C221" target="_blank" goog_docs_charindex="1323"&gt;Curve&lt;/a&gt; ?). &lt;strong&gt;But we can do better&lt;/strong&gt;, we should be doing much better.&lt;/p&gt;&lt;p&gt;Then what happened next? We said, let's &lt;strong&gt;tap into social networks&lt;/strong&gt;. I bet only people that had Blackberry's heard about the infamous (!) &lt;a id="jgh7" title="Facebook app" href="http://na.blackberry.com/eng/devices/features/social/facebook.jsp" target="_blank" goog_docs_charindex="1532"&gt;Facebook app&lt;/a&gt;. In my opinion this brought the biggest shame on the company's profile but nobody has realized it yet. First of all it's no where as cool as the Facebook iPhone app - it's not even close, it &lt;strong&gt;hurts&lt;/strong&gt;. Let me tell you what this app does. You know, Facebook sends you emails on certain things - like somebody sent you a message, wrote on your wall, added you as a friend, right? All this app does, is sees these emails on your inbox and displays them to you in a pretty application. You can reply to the wall posts, etc from this app but that's about it. You can also tag the pictures you took with you BlackBerry and upload to Facebook, but that's the cool part of the app - so unimportant. &lt;strong&gt;Why don't I like this app? Because it relies on Facebook sending you an email&lt;/strong&gt; (I'm already pissed off at Facebook because it never delivers these emails in a timely fashion anyways). &lt;/p&gt;&lt;p&gt;If you ask me, any application on BlackBerry that doesn't use push data somehow is &lt;strong&gt;LAME&lt;/strong&gt;. A &lt;a id="afvw" title="Twitter app" href="http://orangatame.com/products/twitterberry/" target="_blank" goog_docs_charindex="2519"&gt;Twitter app&lt;/a&gt; that refreshes every 15 minutes is &lt;strong&gt;LAME&lt;/strong&gt; (The coolest thing so far - which is kind of accidental, is to have Twitter send notifications to your Google Talk on your BlackBerry; but still, that's not a true, native Twitter application). A Facebook app that doesn't send you all the notifications is &lt;strong&gt;LAME&lt;/strong&gt;. We provide really good infrastructure so you can write apps that will deliver real-time data to the device, i.e. push! Push, push, push, push. &lt;/p&gt;&lt;p&gt;What can I do so I don't cry myself at night? I take it as a personal goal to raise awareness of the BlackBerry &lt;a id="p1o7" title="API" href="http://www.blackberry.com/developers/docs/4.3.0api/index.html" target="_blank" goog_docs_charindex="3101"&gt;API&lt;/a&gt; to the masses, a la iPhone SDK. We already have a great &lt;a id="zcxi" title="network" href="http://www.blackberry.com/developers" target="_blank" goog_docs_charindex="3165"&gt;network&lt;/a&gt; of sources for BlackBerry developers, however - for some reason - it's not as cool, or popular as the iPhone's. Why isn't there any buzz about BlackBerry apps? What saddens me the most is the fact that even thought there is a tremendous amount of BlackBerry apps out there (yes, even US government has in-house apps built on BlackBerry infrastructure) the mass media - aka non BlackBerry users - don't know about them. &lt;/p&gt;&lt;p&gt;&lt;span style="font-size:130%;"&gt;All &lt;strong&gt;BlackBerry&lt;/strong&gt; &lt;strong&gt;developers&lt;/strong&gt; out there - make sure you drop me a line. I want to hear your thoughts and ambitions on how to improve your experience so &lt;strong&gt;YOU&lt;/strong&gt; can design and develop the coolest applications. &lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:130%;"&gt;All &lt;strong&gt;BlackBerry&lt;/strong&gt; &lt;strong&gt;users&lt;/strong&gt; - drop me a line as well. What kind of cool applications do &lt;strong&gt;YOU&lt;/strong&gt; want to see on your device so iPhone and other smart phone users are jealous of your BlackBerry?&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;PS:&lt;/strong&gt; I'm no where related to the group that publishes the BlackBerry APIs, nor am I a PR person. I have no influence what so ever on those groups and I don't want to be. This is totally a non-work-related initiative of mine.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/37190103-2779391604924699220?l=cem.catikkas.net'/&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/cemcatik/~4/AWDCuVS9Q8U" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://cem.catikkas.net/feeds/2779391604924699220/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=37190103&amp;postID=2779391604924699220" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/37190103/posts/default/2779391604924699220?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/37190103/posts/default/2779391604924699220?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/cemcatik/~3/AWDCuVS9Q8U/mobile-innovators-falling-back.html" title="Mobile Innovators Falling Back?" /><author><name>Cem Catikkas</name><uri>http://www.blogger.com/profile/03786191759259084957</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="05469241952739936300" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://cem.catikkas.net/2008/03/mobile-innovators-falling-back.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DEQDRXY8eyp7ImA9WxZQF00.&quot;"><id>tag:blogger.com,1999:blog-37190103.post-3641081428533647162</id><published>2008-02-22T10:48:00.000-08:00</published><updated>2008-02-22T10:52:54.873-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2008-02-22T10:52:54.873-08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="web application" /><category scheme="http://www.blogger.com/atom/ns#" term="social network" /><category scheme="http://www.blogger.com/atom/ns#" term="technology" /><category scheme="http://www.blogger.com/atom/ns#" term="dataportability.org" /><title>Your Online Presence</title><content type="html">This is a very tricky and fragile matter. Actually there are two matters here, first the standardization of web services - whether this be SOAP, REST or WS-*, this problem has been solved long time ago - and then there is creating a standard infrastructure of web services - this is what I'd like to rant on. Feeling confused? Well, don't, because this will be the next greatest thing after my grandmother's crunchy walnut baklava.&lt;br /&gt;&lt;br /&gt;Here is the problem I see with the web services and Web 2.0 applications out there today:&lt;br /&gt;&lt;br /&gt;&lt;ol&gt;&lt;li&gt;There are a lot of new websites that do pretty much the same things. RSS readers, social networks, heck even word processing sites (&lt;a title="Google Docs" href="http://www.blogger.com/" target="_blank"&gt;Google Docs&lt;/a&gt; rocks, I know, it's so cool!). &lt;/li&gt;&lt;li&gt;I have my established (or maybe not so, who knows?) online presence and I'm using certain tools/applications to maintain it (&lt;a id="u4.0" title="Facebook" href="http://www.facebook.com/" target="_blank"&gt;Facebook&lt;/a&gt;, &lt;a id="jow8" title="Twitter" href="http://www.twitter.com/" target="_blank"&gt;Twitter&lt;/a&gt;, &lt;a id="u4-z" title="Blogger" href="http://www.blogger.com/" target="_blank"&gt;Blogger&lt;/a&gt;, etc.) &lt;/li&gt;&lt;li&gt;If I'm not happy with one service, it's almost impossible to move to a different one. This fact makes me locked in to one application either because I started using it the first, or because the majority of my friends circle is in it.&lt;/li&gt;&lt;/ol&gt;&lt;p&gt;One of the major problems people have been arguing around is the question of who owns the data/pictures/videos people upload? If I put up a video on &lt;a id="ig8a" title="YouTube" href="http://www.youtube.com/" target="_blank"&gt;YouTube&lt;/a&gt;, does that video becomes YouTube's property? For the sake of simplicity, you can replace "media" with "profile", "data", etc. &lt;/p&gt;&lt;p&gt;The way I think of this issue is rather different than any other person's I've heard so far. I believe that you are the sole owner of your own media. Hence, you have a hard copy (offline) of the media at your person. The problem you're facing is, in order to share your media with your friends, you have to go through some third party social network. It also happens that this social network also makes tagging your friends on this media and commenting on the same media available to your and your friends' disposal. The key here is that the media is now in the 3rd party's control. &lt;/p&gt;&lt;p&gt;Are you with me so far? Here is what you've been trying to accomplish so far.&lt;/p&gt;&lt;ol&gt;&lt;li&gt;You have some media you want to share with your friends.&lt;/li&gt;&lt;li&gt;You upload this media where all or most of your friends can access.&lt;/li&gt;&lt;li&gt;The place you uploaded allows you to link this media with your friends through tags or comments, etc. &lt;/li&gt;&lt;/ol&gt;&lt;p&gt;Good. We can get back to what I believe in. My God says that even if I own the original media, the social network owns the plumbing that connects me to my friends. It's the social network's value-add to society. It may be your personal profile, your blog, your status updates. but it's the social network that provides you with the infrastructure to host this data. &lt;/p&gt;&lt;p&gt;It used to be that getting your data back from social networks was hard; not impossible, but hard. If you really wanted, you could use screen scraping. Nowadays, most sites give you public links that will take anybody outside the social network easily see the media or provide you with web service APIs that would allow you to look at your information from outside the social network's web site. &lt;/p&gt;&lt;p&gt;&lt;a id="t_nm" title="Twitter's API" href="http://groups.google.com/group/twitter-development-talk/web/api-documentation" target="_blank"&gt;Twitter's API&lt;/a&gt;, for example, allows you to do pretty much everything you want to do on Twitter - including getting a list of your friends, followers, your and their statuses. When you think about the power Twitter gives in the user's hands, this is a great step towards enabling the user owning their own data. &lt;/p&gt;&lt;p&gt;Similarly, &lt;a id="h0a8" title="OPML" href="http://en.wikipedia.org/wiki/OPML" target="_blank"&gt;OPML&lt;/a&gt; - the XML document that describes "outlines" - lets you easily move your RSS subscriptions from one reader to another. &lt;/p&gt;&lt;p&gt;Don't even get me started on the power of &lt;a id="un3j" title="Facebook" href="http://developers.facebook.com/" target="_blank"&gt;Facebook&lt;/a&gt; and &lt;a id="qhue" title="Ning" href="http://developer.ning.com/" target="_blank"&gt;Ning&lt;/a&gt; APIs. &lt;/p&gt;&lt;p&gt;Now, imagine that you can move all your online presence over to wherever you want. In comes &lt;a id="fjij" title="DataPortability.org" href="http://www.dataportability.org/" target="_blank"&gt;DataPortability.org&lt;/a&gt;. It's a project that started in November 2007 and has seen a lot of attention in the last couple of months. The idea behind the group is to merge the existing open standards, protocols, formats (such as &lt;a id="hz-y" title="OpenID" href="http://openid.net/" target="_blank"&gt;OpenID&lt;/a&gt;, &lt;a id="sw0o" title="APML" href="http://www.apml.org/" target="_blank"&gt;APML&lt;/a&gt;, and various APIs) with people's online presences (profiles, friends, media) in a way that the users have the control over their data. I'm very hopeful about the steps this group has been taking so far, and hopefully it's going to result in a new era in web applications. &lt;/p&gt;&lt;p&gt;Imagine tagging a picture on Facebook and viewing that same picture with same tags (and maybe more) on Flickr without doing anything... It's going to be slow but hopefully that's the direction I'd like to see social networks and web sites evolving into. Of course this might require different ways for you to host your data but what the hell, we're humans, we evolve!&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/37190103-3641081428533647162?l=cem.catikkas.net'/&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/cemcatik/~4/Kd8d4LsEDvw" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://cem.catikkas.net/feeds/3641081428533647162/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=37190103&amp;postID=3641081428533647162" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/37190103/posts/default/3641081428533647162?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/37190103/posts/default/3641081428533647162?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/cemcatik/~3/Kd8d4LsEDvw/your-online-presence.html" title="Your Online Presence" /><author><name>Cem Catikkas</name><uri>http://www.blogger.com/profile/03786191759259084957</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="05469241952739936300" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://cem.catikkas.net/2008/02/your-online-presence.html</feedburner:origLink></entry><entry gd:etag="W/&quot;AkEESHc7fip7ImA9WB9aGEQ.&quot;"><id>tag:blogger.com,1999:blog-37190103.post-1381339805313022302</id><published>2008-01-09T09:08:00.000-08:00</published><updated>2008-01-09T09:10:09.906-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2008-01-09T09:10:09.906-08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="teknolojinin karanlik yuzu" /><category scheme="http://www.blogger.com/atom/ns#" term="blackberry" /><category scheme="http://www.blogger.com/atom/ns#" term="technology" /><title>Ben De Artik Meshurum - Teknoloji'nin Karanlik Yuzu</title><content type="html">Iki hafta once Christmas arti yilbasi vesilesiyle ufak bir kacamak yapip Istanbul'a donmustum. Sira Murat Lostar'la (&lt;a href="http://www.lostar.com/" goog_docs_charindex="173"&gt;www.lostar.com&lt;/a&gt;) bayramlasamaya geldiginde beni &lt;a id="jqju" title="Teknoloji'nin Karanlik Yuzu" href="http://teknoloji.lostar.com/" target="_blank" goog_docs_charindex="222"&gt;Teknoloji'nin Karanlik Yuzu&lt;/a&gt;'ne davet etti; BlackBerry'den "Daha sanal, daha sosyal"den konustuk. Lafi daha fazla uzatmadan buradan podcast'e buyurun... &lt;a href="http://teknoloji.lostar.com/2008/01/blackberry-gvenlii.html" goog_docs_charindex="376"&gt;http://teknoloji.lostar.com/2008/01/blackberry-gvenlii.html&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/37190103-1381339805313022302?l=cem.catikkas.net'/&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/cemcatik/~4/f3Q74l6iGM8" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://cem.catikkas.net/feeds/1381339805313022302/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=37190103&amp;postID=1381339805313022302" title="1 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/37190103/posts/default/1381339805313022302?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/37190103/posts/default/1381339805313022302?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/cemcatik/~3/f3Q74l6iGM8/ben-de-artik-meshurum-teknolojinin.html" title="Ben De Artik Meshurum - Teknoloji'nin Karanlik Yuzu" /><author><name>Cem Catikkas</name><uri>http://www.blogger.com/profile/03786191759259084957</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="05469241952739936300" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">1</thr:total><feedburner:origLink>http://cem.catikkas.net/2008/01/ben-de-artik-meshurum-teknolojinin.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DUUGR30-eSp7ImA9WB9XFEg.&quot;"><id>tag:blogger.com,1999:blog-37190103.post-1141519761193632464</id><published>2007-11-07T09:19:00.000-08:00</published><updated>2007-11-07T09:40:26.351-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2007-11-07T09:40:26.351-08:00</app:edited><title>BlackBerry's New in Town</title><content type="html">For those of you who don't know, technology evangelism runs in our family. My parents own an IT infrastructure/consulting firm and I grew up in this environment where people were trying to fix a lot of every-day enterprise problems by using various technologies, primarily on the Microsoft front (Go check out &lt;a title="www.datasistem.com.tr" href="http://www.datasistem.com.tr/" target="_blank"&gt;www.datasistem.com.tr&lt;/a&gt;, but I guess they don't have an English site anymore!).&lt;br /&gt;&lt;br /&gt;While I'm back in Istanbul for my first ever vacation from work, I've been hanging out with the old man. I usually prefer to just meet with customers and listen to what's going on in the industry. One very good aspect of these visits is that I get to meet a lot of CxOs (buzzword - networking!). But the best part is I get the chance to talk to them about the new/different technologies they use within their Enterprise. I usually prefer to converse with people higher up in the food chain, because most often they are the ones who decided to go forward with the chosen technology. No offense to anybody, but unfortunately the IT personnel is often grumpy and they don't like to enjoy these technologies from an engineering/innovation point of view.&lt;br /&gt;&lt;br /&gt;Also, my dad has a very unique sense of humor. I mean it's really awkward when you're visiting your father's customers and while they are demoing the iPAQs the customer turns over to &lt;strong&gt;&lt;em&gt;me&lt;/em&gt;&lt;/strong&gt; and &lt;strong&gt;&lt;em&gt;begs me&lt;/em&gt;&lt;/strong&gt; to fix their BES. He didn't take me there to teach me how to sell, he &lt;strong&gt;&lt;em&gt;knew&lt;/em&gt;&lt;/strong&gt; that they were having problems with their BlackBerries. Half the meeting revolved along the lines of "Hey look, this guy works at RIM, he built that thing you're holding!"&lt;br /&gt;&lt;br /&gt;So, guess what? The latest hype in Turkey is on the smartphone front. BlackBerry entered the market around Summer of 2006 and now HP is pushing forward with its new iPAQ Voice Messengers. Both the BlackBerry and Windows Mobile sides have their pros and cons (NO, BlackBerry doesn't have cons!) - but for the sake of simplicity I will assume that they all have the same features - push email, synchronization, phone, Internet browsing, etc. So what do people make their final decisions on? From all the people I've talked recently, the winning answer, by far, is "which ever just works".&lt;br /&gt;&lt;br /&gt;Wait a minute, so BlackBerry should be ahead by two touchdowns and a field goal! After all BlackBerry just works! Apparently it doesn't and what's worse is this has nothing to do with BlackBerry not working. The apparent market penetration strategy so far - from what I have heard from several of these CxOs - is &lt;a id="q.cn" title="Turkcell" href="http://www.turkcell.com.tr/" target="_blank"&gt;Turkcell&lt;/a&gt; says here are 10 - 15 8800s for free and here is &lt;a id="kpfb" title="BES" href="http://na.blackberry.com/eng/services/server/exchange/" target="_blank"&gt;BES&lt;/a&gt;, go install and evaluate, we'll see if you like it within a couple of months. Guess what? The local IT crew can't setup the BES properly so your BlackBerry gets all the Service Books except for CMIME which turns out to be your Exchange email Service Book. So they call up Turkcell's customer support and the only answer they know to solve this problem is to say "Open up your BES settings and click on 'Send Service Books'". Give me a fucking break!&lt;br /&gt;&lt;br /&gt;And guess which side Data Sistem is on? Of course, they are going to push harder to sell the iPAQs to customers who've already started using BlackBerries. On the Windows side, they have the power to at least setup a system that "just works", plus they will make a ton of money on extra consulting and the device sales. After all the &lt;strong&gt;&lt;em&gt;dark side&lt;/em&gt;&lt;/strong&gt; aligns better with their business. So their new plot goes like this&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Customer&lt;/strong&gt;: I heard you're son's working at RIM, too bad our BES doesn't work - do you think he can come over and fix this thing?&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Dad&lt;/strong&gt;: Hey, we actually have these new HP thingys that actually works perfect - We'll setup it up for you to test AND it's going to cost you less - you don't have to pay for BES with Exchange 2007!&lt;br /&gt;&lt;br /&gt;RIM, on the other hand, has only the next few months - OK I give them (us?) until the end of next summer - to fix their strategies and to gain a faithful customer base. It's not going to be easy! I know that we - as RIM - don't have that many subscribers yet in Turkey but as everybody acknowledges there is great potential to expand. What that means is, we have to make sure that we have to provide a smoother experience than any Windows Mobile solution. It has to work even if these are evaluation units. We have to continue giving the world class customer support that we're proud of. Unfortunately I don't see any future for BlackBerry in Turkey - not if we're not going to put in the effort.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;PS&lt;/strong&gt;: It's really awkward to talk about RIM in third person - in the R&amp;amp;D groups, we rarely hear about the marketing side of things.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/37190103-1141519761193632464?l=cem.catikkas.net'/&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/cemcatik/~4/ohkya5CByaw" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://cem.catikkas.net/feeds/1141519761193632464/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=37190103&amp;postID=1141519761193632464" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/37190103/posts/default/1141519761193632464?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/37190103/posts/default/1141519761193632464?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/cemcatik/~3/ohkya5CByaw/blackberrys-new-in-town.html" title="BlackBerry's New in Town" /><author><name>Cem Catikkas</name><uri>http://www.blogger.com/profile/03786191759259084957</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="05469241952739936300" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://cem.catikkas.net/2007/11/blackberrys-new-in-town.html</feedburner:origLink></entry><entry gd:etag="W/&quot;A0ACRns6fSp7ImA9WB5UGEw.&quot;"><id>tag:blogger.com,1999:blog-37190103.post-5158096028341111506</id><published>2007-08-22T14:02:00.000-07:00</published><updated>2007-08-22T14:56:07.515-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2007-08-22T14:56:07.515-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Personal" /><title>My Shared Items</title><content type="html">I'm probably the biggest fan of &lt;a title="Google Reader" target="_blank" href="http://www.google.com/reader"&gt;Google Reader&lt;/a&gt;. There are minor details that I don't like; i.e. the "All Items (100+)". I lost track of how many feeds I'm following, so I consulted my "Trends" and I'm pasting it what it says right here...&lt;br /&gt;&lt;br /&gt;From your &lt;b&gt; 72  subscriptions&lt;/b&gt;, over the last 30 days &lt;b&gt;you read  11,426  items&lt;/b&gt;, &lt;b&gt;starred  13  items&lt;/b&gt;, and &lt;b&gt;shared  33  items&lt;/b&gt;.&lt;br /&gt;&lt;br /&gt;The point is, I easily get more than 100 items when I wake up in the West Coast. Usually I get the "(100+)" almost all of my folders there. That's probably another reason why I stopped using &lt;a target="_blank" title="del.icio.us" href="http://del.icio.us/" id="ryvg"&gt;del.icio.us&lt;/a&gt; long time ago. It's just too much hassle to add stuff to a list and tag them when I'm just skimming through millions of posts every day.&lt;br /&gt;&lt;br /&gt;Just because of this sole issue, I decided to publish my "Shared Items" from Google Reader. I added the widget on my &lt;span class="misspell" suggestions="blogs,bloc's,Belg's,block's,bloke's"&gt;blog's&lt;/span&gt; sidebar. You can also check it out from &lt;a title="here" target="_blank" href="http://www.google.com/reader/shared/10543693085440085931" id="eknv"&gt;here&lt;/a&gt;. And if you're a Google Reader bloke like me, you might want to add the &lt;a title="feed" target="_blank" href="http://www.google.com/reader/public/atom/user/10543693085440085931/state/com.google/broadcast" id="z_l4"&gt;feed&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/37190103-5158096028341111506?l=cem.catikkas.net'/&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/cemcatik/~4/yJDpxatKQ4A" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://cem.catikkas.net/feeds/5158096028341111506/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=37190103&amp;postID=5158096028341111506" title="2 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/37190103/posts/default/5158096028341111506?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/37190103/posts/default/5158096028341111506?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/cemcatik/~3/yJDpxatKQ4A/my-shared-items.html" title="My Shared Items" /><author><name>Cem Catikkas</name><uri>http://www.blogger.com/profile/03786191759259084957</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="05469241952739936300" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">2</thr:total><feedburner:origLink>http://cem.catikkas.net/2007/08/my-shared-items.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CU8GQX47fip7ImA9WB5UFE0.&quot;"><id>tag:blogger.com,1999:blog-37190103.post-7613650840530745915</id><published>2007-08-17T19:20:00.000-07:00</published><updated>2007-08-17T19:23:40.006-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2007-08-17T19:23:40.006-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="outsourcing" /><category scheme="http://www.blogger.com/atom/ns#" term="software" /><title>Can You Really Export Software?</title><content type="html">Just a little thought experiment... Today,&amp;nbsp;I came across an article (I really don't remember where) about &lt;a href="http://pseb.org.pk/" id="e7_d" target="_blank" title="Pakistan Software Export Board"&gt;Pakistan Software Export Board&lt;/a&gt;'s new goals and expectations and what not. What really struck me the most is the name of the board and I have a gut feeling that it's actually misleading. I really believe i the fact that in the world we're living in today, software really became a mainstream commodity. My question however, is, can you really "export" software or is it the "labour" that you export by the means of &lt;a href="http://en.wikipedia.org/wiki/Outsourcing" id="ambc" target="_blank" title="outsourcing"&gt;outsourcing&lt;/a&gt;?&lt;br /&gt;&lt;br /&gt;The best resource I've seen on this so far is &lt;a href="http://www.emich.edu/ict_usa/exporting_software.htm" id="h:uz" target="_blank" title="http://www.emich.edu/ict_usa/exporting_software.htm"&gt;http://www.emich.edu/ict_usa/exporting_software.htm&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;What I'm most concerned about is how can you really regulate the software trade? With products like shoes, books, DVD's at least the Customs Authorities can do something. How can you monitor downloaded software? How about open source software?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/37190103-7613650840530745915?l=cem.catikkas.net'/&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/cemcatik/~4/FhNHnmm15B0" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://cem.catikkas.net/feeds/7613650840530745915/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=37190103&amp;postID=7613650840530745915" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/37190103/posts/default/7613650840530745915?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/37190103/posts/default/7613650840530745915?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/cemcatik/~3/FhNHnmm15B0/can-you-really-export-software.html" title="Can You Really Export Software?" /><author><name>Cem Catikkas</name><uri>http://www.blogger.com/profile/03786191759259084957</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="05469241952739936300" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://cem.catikkas.net/2007/08/can-you-really-export-software.html</feedburner:origLink></entry><entry gd:etag="W/&quot;Ck8BQ34yfyp7ImA9WB5UEk8.&quot;"><id>tag:blogger.com,1999:blog-37190103.post-4455159028364119275</id><published>2007-08-15T16:23:00.000-07:00</published><updated>2007-08-15T16:34:12.097-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2007-08-15T16:34:12.097-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="technology" /><category scheme="http://www.blogger.com/atom/ns#" term="Personal" /><title>Worst Way to Communicate - SMS</title><content type="html">I'm quite certain I never liked communicating over SMS. I have to admit that texting occupied a great deal of my life growing up, but that doesn't stop me from hating it. Anyway, a couple of weeks ago I started using &lt;a id="ew2s" title="GrandCentral" href="http://www.grandcentral.com/" target="_blank"&gt;GrandCentral&lt;/a&gt; now that I have a desk phone, two BlackBerry's and my good old cell phone. This made me re-realise how much I hate text messaging.&lt;br /&gt;&lt;br /&gt;When we were younger, for some reason it seemed to us that texting was cheaper than directly calling the person and I remember sending an SMS to learn the whereabouts of my friends when they were late to the movies. Trust me it was time consuming; go to Menu, then Messages/Create new message, type the message, wait until the guy receives and responds to your text. How can this be faster then just calling the dude? Anyways that's not the point. On the plus side, practice really made perfect; we were really fast typing on the dial pad (Remember, my childhood were the times before T9 or any other text prediction was introduced). Soon, cell phones and SMS became the greatest cheating device - we could text without looking at the phone under the desk&lt;br /&gt;&lt;br /&gt;So why do I have so much hatred now that I'm all "grown up"? Now that I'm paying for my own phone bill, I find the charges unacceptably high. Whether you have a texting plan or not, I think it's really expensive. Aside from that I still think they are slow. Actually, come to think about it, if you have a BlackBerry, it's not slower then typing an email, but did I tell you SMS is extremely unreliable?&lt;br /&gt;&lt;br /&gt;Here is my breakdown:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Doesn't guarantee that the message will be delivered (at least I have come across a lot of cases where the message was not delivered). &lt;/li&gt;&lt;li&gt;You can only RECEIVE on your cell phone. &lt;/li&gt;&lt;li&gt;You can only SEND TO a cell phone. &lt;/li&gt;&lt;li&gt;You can't redirect your text messages if your phone's battery dies (or any other reason for that matter). &lt;/li&gt;&lt;/ol&gt;I guess that'd make a nice list, did I forget anything else? Here is the single most reason my hatred grew once again - now that I'm using GrandCentral as my "phone hub", I don't check my old cell phone anymore (I think it's somewhere on my desk hiding under a huge pile of papers). So what then? I DON'T GET TEXT MESSAGES ANYMORE.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/37190103-4455159028364119275?l=cem.catikkas.net'/&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/cemcatik/~4/RP7HBMiRaLA" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://cem.catikkas.net/feeds/4455159028364119275/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=37190103&amp;postID=4455159028364119275" title="2 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/37190103/posts/default/4455159028364119275?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/37190103/posts/default/4455159028364119275?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/cemcatik/~3/RP7HBMiRaLA/worst-way-to-communicate-sms.html" title="Worst Way to Communicate - SMS" /><author><name>Cem Catikkas</name><uri>http://www.blogger.com/profile/03786191759259084957</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="05469241952739936300" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">2</thr:total><feedburner:origLink>http://cem.catikkas.net/2007/08/worst-way-to-communicate-sms.html</feedburner:origLink></entry><entry gd:etag="W/&quot;Ak8AQnY4fSp7ImA9WB5SEkk.&quot;"><id>tag:blogger.com,1999:blog-37190103.post-4442007765428476478</id><published>2007-06-07T13:36:00.000-07:00</published><updated>2007-06-07T13:40:43.835-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2007-06-07T13:40:43.835-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="software" /><title>All Your Code Base is Legacy</title><content type="html">I hope, I'm not the first one two say this but I totally stand firm behind my wisdom! It's usually "legacy this" or "legacy that" but the general terminology lies around the concept of trying to work your way around existing source code.&lt;br /&gt;&lt;br /&gt;When the term "&lt;a title="legacy system" target="_blank" href="http://en.wikipedia.org/wiki/Legacy_system"&gt;legacy system&lt;/a&gt;" was first introduced all it meant was that the system had been there long enough that the owner/maintainer didn't want to replace it. But recently I've been hearing the "L" word a lot around my colleagues and the code they are talking about is from our last release which was only a couple of weeks ago. I keep thinking to myself, "Code that young can't be legacy, right?"&lt;br /&gt;&lt;br /&gt;Truth of the matter is &lt;b&gt;AS SOON AS YOU CHECK YOUR CODE INTO REPOSITORY&lt;/b&gt;, it becomes&lt;b&gt; LEGACY&lt;/b&gt; (You &lt;i&gt;&lt;b&gt;have&lt;/b&gt;&lt;/i&gt; a repository right? Don't make me force you to take &lt;a title="the Joel Test" target="_blank" href="http://www.joelonsoftware.com/articles/fog0000000043.html"&gt;the Joel Test&lt;/a&gt;!). Little disclaimer here, of course having a repository also means you use it frequently - if you don't, again, please please PLEASE check your code in frequently and in small increments; it's a good practice and you'll actually see your progress easier.&lt;br /&gt;&lt;br /&gt;You're in total denial if you don't believe me; how many times have you thought "What the hell does this method do?" or "How am I supposed to use this API?" Off the top of my head, here is a very short list of ways any code becomes legacy:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Some guy wrote it 7 years ago, the day before he was let go.&lt;/li&gt;&lt;li&gt;You HACKED it for the last release in order to fix your bug, but now, it doesn't click anymore.&lt;/li&gt;&lt;li&gt;You thought you had some progress last night and decided to check it in. This morning, how ever, you think you have a better solution but it's so damn hard to retrieve to the last version and you sit in your cube, beingmiserable and all... You get the idea. &lt;/li&gt;&lt;/ol&gt;Nothing is set in stone in the software world; you have to be able to adopt to changes all the time and often very quickly. One of the first things they teach you in Software Engineering is to design your solution to accept future improvements. No matter how well you designed your product at the beginning, you will come up with avenues of improvements which you would never have thought of  before. Hell, even every step you take to approach your solution has the potential to make the solution legacy.&lt;br /&gt;&lt;br /&gt;Only defense you have is to be aware that one way or another your code &lt;i&gt;will&lt;/i&gt; become legacy and you can't stop that. Live by this rule for the next day, week or month and let's see how your life changes.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/37190103-4442007765428476478?l=cem.catikkas.net'/&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/cemcatik/~4/2pm7TnFVTCA" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://cem.catikkas.net/feeds/4442007765428476478/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=37190103&amp;postID=4442007765428476478" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/37190103/posts/default/4442007765428476478?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/37190103/posts/default/4442007765428476478?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/cemcatik/~3/2pm7TnFVTCA/all-your-code-base-is-legacy.html" title="All Your Code Base is Legacy" /><author><name>Cem Catikkas</name><uri>http://www.blogger.com/profile/03786191759259084957</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="05469241952739936300" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://cem.catikkas.net/2007/06/all-your-code-base-is-legacy.html</feedburner:origLink></entry><entry gd:etag="W/&quot;Ak4CQHc-fyp7ImA9WB5SEkk.&quot;"><id>tag:blogger.com,1999:blog-37190103.post-5278124274896101914</id><published>2007-05-22T18:31:00.000-07:00</published><updated>2007-06-07T13:42:41.957-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2007-06-07T13:42:41.957-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="software" /><category scheme="http://www.blogger.com/atom/ns#" term="architecture" /><title>Interoperability that Actually Works</title><content type="html">If your applications are already talking to each other, at least make them talk correctly! Web services and the ability to communicate between different applications ease our lives a lot. And I mean a lot; imagine going shopping without a credit card. Credit cards are convenient because &lt;strong&gt;they actually work&lt;/strong&gt; (as long as you don't exceed your credit limit, blah blah blah...).&lt;br /&gt;&lt;br /&gt;Last weekend I got quite frustrated trying to publish my last entry. I'm using &lt;a title="Google Docs" href="http://docs.google.com/" target="_blank"&gt;Google Docs&lt;/a&gt; as my text editor for this blog. I'm actually in love with it - it makes my life easier in many ways.&lt;br /&gt;&lt;ol&gt;&lt;li&gt;All my blog entries are in one online place - &lt;em&gt;I can access them from home or work without carrying them around (by the way there&lt;/em&gt; &lt;strong&gt;needs&lt;/strong&gt; &lt;em&gt;to be more online storage services; I used to love &lt;/em&gt;&lt;a title="Xdrive" href="http://www.xdrive.com/" target="_blank"&gt;&lt;em&gt;Xdrive&lt;/em&gt;&lt;/a&gt;&lt;em&gt; back when it wasn't &lt;/em&gt;&lt;a title="AOL" href="http://www.aol.com/" target="_blank"&gt;&lt;em&gt;AOL&lt;/em&gt;&lt;/a&gt;&lt;em&gt;'s puppet).&lt;/em&gt; &lt;/li&gt;&lt;li&gt;I can easily collaborate my side-project specs with relevant people - &lt;em&gt;Almost everybody now has a &lt;/em&gt;&lt;a title="Gmail" href="http://www.gmail.com/" target="_blank"&gt;&lt;em&gt;Gmail&lt;/em&gt;&lt;/a&gt;&lt;em&gt; account, so I don't even need to create or manage accounts for them.&lt;/em&gt;&lt;/li&gt;&lt;li&gt;Automatically publish to my blog since I'm using &lt;a title="Blogger" href="http://www.blogger.com/" target="_blank"&gt;Blogger&lt;/a&gt; to host this wonderful page - &lt;em&gt;Oh, by the way this is what I'm going to be bi*%#ing very soon. &lt;/em&gt;&lt;/li&gt;&lt;/ol&gt;&lt;p&gt;As I said, I was writing the entry on Google Docs, placed my fancy picture in the correct location and finally "Published" it. The experience is perfect until now. Then I go back to my blog to see if the layout actually looks correct; and of course I get disappointed with the results immediately.&lt;br /&gt;&lt;br /&gt;Most obvious flaw in this experience is the title of the post - as a matter of fact the lack there of. A Google Docs document has its own title, which is (I'm totally guessing here) the first line of the document when it's first saved. Usually my first line is the actual title of the post which is totally OK. But the title of the post is technically nothing, therefore Blogger picks up the first 6 words that doesn't contain weird characters of the entry. The following is the table of the title and the URLs of my previous posts.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;p align="center"&gt;&lt;strong&gt;Title&lt;/strong&gt;&lt;/p&gt;&lt;/td&gt;&lt;td&gt;&lt;p align="center"&gt;&lt;strong&gt;URL&lt;/strong&gt;&lt;/p&gt;&lt;/td&gt;&lt;td&gt;&lt;p align="center"&gt;&lt;strong&gt;Published From&lt;/strong&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;I Give Up&lt;/td&gt;&lt;td&gt;.../i-give-up.html&lt;/td&gt;&lt;td&gt;&lt;p align="center"&gt;Blogger&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Design to Interface&lt;/td&gt;&lt;td&gt;.../design-to-interface-were-all-familiar.html&lt;/td&gt;&lt;td&gt;&lt;p align="center"&gt;Google Docs&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;p&gt;High Fidelity =? High User Experience&lt;/p&gt;&lt;/td&gt;&lt;td&gt;.../high-fidelity-high-user-experience-ok.html&lt;/td&gt;&lt;td&gt;&lt;p align="center"&gt;Google Docs&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;As you can see the URL of the one entry I posted from Blogger actually complies to its real title. But the other two, come on Google, you can do better than that. I haven't tried using &lt;a title="Windows Live Writer" href="http://get.live.com/betas/writer_betas" target="_blank"&gt;Windows Live Writer&lt;/a&gt;, so Google, you are off the hook for now. I'll keep writing my entries from Google Docs but I'll manually publish them from Blogger to satisfy my &lt;a title="OCD" href="http://en.wikipedia.org/wiki/Obsessive-compulsive_disorder" target="_blank"&gt;OCD&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;The point I want to make here is not to blame everything on Google. "Publish" is a very "nice-to-have" feature and I don't know what priority Google gives it; but since both the services are owned by the same people I would like to feel safe and assume that the feature will actually cooperate as expected. I have a feeling (experience speaking?) this is not that hard of a feature to fix anyways.&lt;br /&gt;&lt;br /&gt;In the world we're living now, inter-process communication is gaining more and more power every day. I've even heard people &lt;a title="talking about Web 3.0" href="http://weblog.infoworld.com/techwatch/archives/012016.html" target="_blank"&gt;talking about Web 3.0&lt;/a&gt; which essentially is the idea of having "Web Data" instead of "Web Pages". The Internet is moving to a place where which client you use is irrelevant, however these clients still need to understand and represent the data correctly. And in order for &lt;strong&gt;&lt;em&gt;your&lt;/em&gt;&lt;/strong&gt; products to survive in the wild, &lt;strong&gt;&lt;em&gt;you&lt;/em&gt;&lt;/strong&gt; will have to consider every such use case carefully and comply with &lt;strong&gt;&lt;em&gt;your own &lt;/em&gt;&lt;/strong&gt;standards.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;PS: Wow, creating tables in Blogger is not that easy!!! The real table in Google Docs looks so much cooler.&lt;/strong&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/37190103-5278124274896101914?l=cem.catikkas.net'/&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/cemcatik/~4/6wyszLGHVcg" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://cem.catikkas.net/feeds/5278124274896101914/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=37190103&amp;postID=5278124274896101914" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/37190103/posts/default/5278124274896101914?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/37190103/posts/default/5278124274896101914?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/cemcatik/~3/6wyszLGHVcg/interoperability-that-actually-works.html" title="Interoperability that Actually Works" /><author><name>Cem Catikkas</name><uri>http://www.blogger.com/profile/03786191759259084957</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="05469241952739936300" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://cem.catikkas.net/2007/05/interoperability-that-actually-works.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CEEBR3o-fCp7ImA9WBFaFUk.&quot;"><id>tag:blogger.com,1999:blog-37190103.post-100279771863699038</id><published>2007-05-17T18:16:00.000-07:00</published><updated>2007-05-18T19:44:16.454-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2007-05-18T19:44:16.454-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="software" /><title>High Fidelity ?= High User Experience</title><content type="html">&lt;strong&gt;[OK, so I was going to publish this like 4 months ago, actually before new years, I mean really long time ago. So what happened in he mean time? I moved back to Seattle from my 3-month vacation after graduation; nice!]&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;Lately I've been looking into the Software as a Service (SaaS) demos Microsoft published. Especially the &lt;a title="Litware" href="http://www.codeplex.com/LitwareHR" target="blank_"&gt;Litware&lt;/a&gt; project, and its architecture explained &lt;a title="here" href="http://msdn2.microsoft.com/en-us/architecture/bb229292.aspx" target="blank_"&gt;here&lt;/a&gt; and with more details &lt;a title="here" href="http://www.skyscrapr.net/architects-in-action.aspx" target="blank_"&gt;here&lt;/a&gt;. It's a great guidance tool that demonstrates how an SaaS application should be.&lt;br /&gt;&lt;br /&gt;One of their core take on designing an SaaS application was to define how configurable your application will be. How much of the application's features am I allowing the users to tweak? If I have a dumb, simple application then it will be easier to deploy and maintain it. If I let every single option to be managed by users then they can configure the application to look and behave exactly how they like.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/_A_M2mazrfio/Rk5jNvuqFgI/AAAAAAAAABA/3Z_N-hLRK20/s1600-h/SaaS_Configurability.PNG"&gt;&lt;img id="BLOGGER_PHOTO_ID_5066095718639998466" style="FLOAT: right; MARGIN: 0px 0px 10px 10px; CURSOR: hand" alt="" src="http://1.bp.blogspot.com/_A_M2mazrfio/Rk5jNvuqFgI/AAAAAAAAABA/3Z_N-hLRK20/s320/SaaS_Configurability.PNG" border="0" /&gt;&lt;/a&gt;In their presentation they have this nice rainbow spectrum with "One size fits all" on one end and "Fully configurable" on the other. My two cents on this? I totally agree with the rainbow but High Fidelity &amp; High User Experience? OK, I guess UX is not only GUI interaction experience but can also mean to configure the software to such detail to fit my needs perfectly. But then I thought that meant High Fidelity. It's actually a great feature that I can put my company's logo in &lt;a title="Basecamp" href="http://www.basecamphq.com/" target="_blank"&gt;Basecamp&lt;/a&gt;. But then again this example lies on the side of configurability (I don't think this word even exists, my Google Docs spell checker is complaining). Whatever, I'm not here to dis the great work Litware guys have put forth.&lt;br /&gt;&lt;br /&gt;Then there is the other question; Does a "Fully Configurable" application give you the best User Experience? My head explodes every time I think about &lt;a title="MySpace" href="http://www.myspace.com/" target="_blank"&gt;MySpace&lt;/a&gt;. I know it's been a hit by millions of users but come on. The only reason I prefer &lt;a title="Facebook" href="http://www.facebook.com/" target="_blank"&gt;Facebook&lt;/a&gt; is the fact that Facebook looks so much elegant the way it is and it would take me days to create a MySpace page that &lt;em&gt;I&lt;/em&gt; will like myself. With Facebook, the page is already setup for you, you don't have any options to change your font color or the background image. It's perfect, I'd rather spend time reading my friends' walls and look at their picture.&lt;br /&gt;&lt;br /&gt;But then again we're talking about SaaS, it's &lt;em&gt;enterprisey&lt;/em&gt; and you need to be scared of those kinds of software. The idea is that my &lt;a title="SharePoint" href="http://www.microsoft.com/sharepoint"&gt;SharePoint&lt;/a&gt; page's background should be in sync with my company's logo and I should be able to receive any kind of notifications when the "Company Roster.doc" is updated, right?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/37190103-100279771863699038?l=cem.catikkas.net'/&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/cemcatik/~4/YMdT_hoJUJ0" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://cem.catikkas.net/feeds/100279771863699038/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=37190103&amp;postID=100279771863699038" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/37190103/posts/default/100279771863699038?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/37190103/posts/default/100279771863699038?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/cemcatik/~3/YMdT_hoJUJ0/high-fidelity-high-user-experience-ok.html" title="High Fidelity ?= High User Experience" /><author><name>Cem Catikkas</name><uri>http://www.blogger.com/profile/03786191759259084957</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="05469241952739936300" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://1.bp.blogspot.com/_A_M2mazrfio/Rk5jNvuqFgI/AAAAAAAAABA/3Z_N-hLRK20/s72-c/SaaS_Configurability.PNG" height="72" width="72" /><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://cem.catikkas.net/2007/05/high-fidelity-high-user-experience-ok.html</feedburner:origLink></entry><entry gd:etag="W/&quot;A0MMQnw5eip7ImA9WBFRFUo.&quot;"><id>tag:blogger.com,1999:blog-37190103.post-4613133309031779405</id><published>2007-02-26T08:28:00.000-08:00</published><updated>2007-02-27T04:31:23.222-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2007-02-27T04:31:23.222-08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="software" /><category scheme="http://www.blogger.com/atom/ns#" term="design" /><title>Design to Interface</title><content type="html">We're all familiar with the concept; always design to interface, not to the implementation. This is very powerful; if I want to use some sort of a list in my code, I just declare a &lt;span style="font-family:Lucida Console;"&gt;List&lt;/span&gt; and don't care whether it's a &lt;span style="font-family:Lucida Console;"&gt;LinkedList&lt;/span&gt; or a &lt;span style="font-family:Lucida Console;"&gt;DonaldDuckList&lt;/span&gt;. As long as I want the object to act as a list, I have no problem since every class that implements the &lt;span style="font-family:Lucida Console;"&gt;List&lt;/span&gt; interface will give me the same functionality.&lt;br /&gt;&lt;br /&gt;I want to take the Design to Interface paradigm to another level of abstraction. I say the software should be designed to the user interface. This is often called "Design by Use Case". The major idea here is to design how the user will interact with the application before designing the application itself. I like to believe that nailing down the user interface is the most important part of designing a great application. I don't want to claim that the user interface design is the only thing that makes the application great but rather it plays a very significant role. At the end, if your application has a great interface but doesn't do what it's supposed to, then we're back in square one.&lt;br /&gt;&lt;br /&gt;I believe that all good software is created for a purpose. I mean good software, like &lt;a title="Gmail" href="http://www.gmail.com/" target="blank_"&gt;Gmail&lt;/a&gt; or &lt;a title="Word 2007" href="http://www.microsoft.com/word" target="blank_"&gt;Word 2007&lt;/a&gt;, etc. The purpose of this breed of applications is to create a platform so you - the user - can easily pursue &lt;em&gt;your&lt;/em&gt; purpose. I want to send and receive emails. Google solved this problem very elegantly; Gmail is a web application that allows me to check my email from anywhere in the world (we're making some assumptions here - that "anywhere in the world" actually means "anywhere with an Internet connection"), with enough storage space that will last me two lifetimes and so easy to use that my 80-year-old grandmother easily started using before she understood what the "start" button is for.&lt;br /&gt;&lt;br /&gt;On the other hand Word has always been a controversial product. Word, as well as other Microsoft products are considered to be feature behemoths. Tons of functionality that no one in his or her right mind would try to learn them all, but they are still there. Some people argue that having so many features is unnecessary and any application should only contain the main features used by the &lt;em&gt;most&lt;/em&gt; people. But I still believe that Word 2007 is still a very sexy product that is designed to show everybody that they needn't be afraid of it.&lt;br /&gt;&lt;br /&gt;This paradox is also known as the "80-20 rule"; &lt;strong&gt;80% of the people use only 20% of the functionality but these functionality are never the same among the users.&lt;/strong&gt; While the Web 2.0 startups are trying to find the sweet 20%, Microsoft always aims for the 100. Well, I think with Office 2007, Microsoft found the sweet 100%. With the &lt;a title="Ribbon" href="http://office.microsoft.com/en-us/products/HA101679411033.aspx" target="blank_"&gt;Ribbon&lt;/a&gt;, they found a great way that lets the users to find every single feature in Office without having to go through the excessive list of menus. Now even though users are still presented with all the features and options it is easier to accompish for them to accomplish their goals. This Ribbon UI was designed after years of usability tests and revisions, and I believe that shows a great anti-thesis against the simplistic nature of the Web 2.0 applications. It's not a matter of how many features a product has, but rather how they are represented to the user so they can better interface with the product.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/37190103-4613133309031779405?l=cem.catikkas.net'/&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/cemcatik/~4/StJHCAfhfik" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://cem.catikkas.net/feeds/4613133309031779405/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=37190103&amp;postID=4613133309031779405" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/37190103/posts/default/4613133309031779405?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/37190103/posts/default/4613133309031779405?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/cemcatik/~3/StJHCAfhfik/design-to-interface-were-all-familiar.html" title="Design to Interface" /><author><name>Cem Catikkas</name><uri>http://www.blogger.com/profile/03786191759259084957</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="05469241952739936300" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://cem.catikkas.net/2007/02/design-to-interface-were-all-familiar.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DUANSHY8fip7ImA9WBFTEkk.&quot;"><id>tag:blogger.com,1999:blog-37190103.post-116276805653944806</id><published>2006-11-05T14:37:00.000-08:00</published><updated>2007-01-31T04:49:59.876-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2007-01-31T04:49:59.876-08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Personal" /><title>I Give Up!</title><content type="html">I had to start somewhere or all my talent would have gone to waste...&lt;br /&gt;&lt;br /&gt;It's a competitive world we're living in. I might be young and inexperienced but I believe I've had my exposure in the industry to reflect on it. So, I'm giving up my ambition to &lt;em&gt;not&lt;/em&gt; write and hopefully have the tiniest influence on however wants to listen.&lt;br /&gt;&lt;br /&gt;So here is the plan. Here I'm going to talk about what's bleeding edge in software and what makes the hot applications hot while my housemates are trying to make pizza from scratch.&lt;br /&gt;&lt;br /&gt;I had to start somewhere; therefore this is my mark in the territory. I hope I don’t get bitten by the killer whales, so whish me good luck!&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;PS:&lt;/strong&gt; the name is Cem, but you read the "C" as a "J". Don't even get me started with the last name.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/37190103-116276805653944806?l=cem.catikkas.net'/&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/cemcatik/~4/pDyhOaZ1R90" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://cem.catikkas.net/feeds/116276805653944806/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=37190103&amp;postID=116276805653944806" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/37190103/posts/default/116276805653944806?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/37190103/posts/default/116276805653944806?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/cemcatik/~3/pDyhOaZ1R90/i-give-up.html" title="I Give Up!" /><author><name>Cem Catikkas</name><uri>http://www.blogger.com/profile/09897043050188812442</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="05205162987979478529" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://cem.catikkas.net/2006/11/i-give-up.html</feedburner:origLink></entry></feed>
