<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-8089567797675957527</id><updated>2012-01-18T08:56:10.848+01:00</updated><category term='sshfs ubuntu'/><category term='synergy share mouse keyboard &quot;os x&quot; &quot;snow leopard&quot; ubuntu 10.04'/><category term='spotify playlist ubuntu google chrome chromium'/><category term='Ubuntu clipboard command line xsel pbcopy pbpaste'/><category term='android source javadoc eclipse android.jar'/><category term='new create junit test static import hamcrest equalTo is Matchers'/><category term='java graphviz aop aspectJ point cut aspect aspects spring logging graph graphical call stack monitoring'/><category term='bit.ly android'/><category term='Android beginner tips tip Eclipse ApiDemos API SDK Getting Started'/><category term='Android beginner tip icon drawable SDK'/><category term='android source  eclipse android.jar fake dummy source jar'/><category term='android market console downloads statistics'/><title type='text'>cat brain | grep stuff &gt; blog</title><subtitle type='html'>- Random stuff, maybe programming related, maybe crap not worth your time</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://johnsenf.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8089567797675957527/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://johnsenf.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Finn Johnsen</name><uri>http://www.blogger.com/profile/16113049669710039361</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-XHvcg_MLv74/Twqmu7DANfI/AAAAAAAASwc/SoJTloGFHas/s220/IMG_1674.JPG'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>18</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-8089567797675957527.post-4137833438681997218</id><published>2011-04-16T02:13:00.014+02:00</published><updated>2011-04-16T02:46:03.709+02:00</updated><title type='text'>Android Sources in Eclipse</title><content type='html'>&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;I've blogged about getting Eclipse to show Android sources before, but these techniques&amp;nbsp;no longer work. So I'll toss a working how-to out there again.&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;I'm still&amp;nbsp;&lt;/span&gt;baffled&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;&amp;nbsp;that Google hasn't ensured this working from day #1 with this eclipse plugin. But enough crying :)&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;I should also mention there is an &lt;a href="http://code.google.com/p/adt-addons/"&gt;eclipse plugin&lt;/a&gt; made for this. I've never tried it. I don't like bloating eclipse with tons of plugins, unless I really have to. And this boils down to 8 pretty easy steps, so an eclipse plugin isn't something Id'e consider. (But I may change my mind later)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Download the sources from github, and attach them:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Head over to &lt;a href="http://android.git.kernel.org/?p=platform/frameworks/base.git;a=tags"&gt;the android source at github&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://android.git.kernel.org/?p=platform/frameworks/base.git;a=tags"&gt;&lt;/a&gt;Click the android SDK you're working on.&amp;nbsp;(*1)&amp;nbsp;I'll choose &lt;i&gt;&lt;a class="list subject" href="http://android.git.kernel.org/?p=platform/frameworks/base.git;a=tag;h=4b37fbc6d31a7ccc53a71d34b8c411a6b1a10285" style="color: black; font-weight: normal;"&gt;Android 2.2 SDK release&amp;nbsp;&lt;/a&gt;&lt;u&gt;2&lt;/u&gt;&lt;/i&gt;&amp;nbsp;&lt;/li&gt;&lt;li&gt;Click the tiny link which says &lt;u&gt;&lt;i&gt;Tree&lt;/i&gt;&lt;/u&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-pfylKiyF1jA/TajfkqhZVfI/AAAAAAAAOjQ/6jQvtt3kMGM/s1600/treeLink.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="232" src="http://4.bp.blogspot.com/-pfylKiyF1jA/TajfkqhZVfI/AAAAAAAAOjQ/6jQvtt3kMGM/s320/treeLink.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;ul&gt;&lt;li&gt;&lt;b&gt;Click&lt;/b&gt; the &lt;b&gt;Snapshot&lt;/b&gt; link which just&amp;nbsp;appeared&amp;nbsp;by the Tree -link&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;You'll start downloading a file which is about 130mb. This is the android source file. It's filename starts with &lt;i&gt;base&lt;/i&gt;, for me it's called &lt;i&gt;&lt;b&gt;base-08d9d9a.tar.gz&lt;/b&gt;&lt;/i&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;b&gt;move&lt;/b&gt; the base -file to the &lt;b&gt;SDK platform directory&lt;/b&gt;, for me that's &lt;b&gt;/opt/android-sdk-linux_x86/platforms/android-8&lt;/b&gt;&lt;/li&gt;&lt;li&gt;&lt;b&gt;&lt;/b&gt;&lt;b&gt;unpack&lt;/b&gt; it (&lt;i&gt;tar xvfz&amp;nbsp;&lt;/i&gt;&lt;i&gt;&lt;u&gt;base-08d9d9a.tar.gz).&lt;/u&gt;&lt;/i&gt;&lt;/li&gt;&lt;li&gt;&lt;i&gt;&lt;u&gt;&lt;/u&gt;&lt;/i&gt;head into &lt;b&gt;eclipse&lt;/b&gt;, and press F3 over some android source you're missing, like Activity. And get this pesky window, which we all hate:&lt;/li&gt;&lt;/ul&gt;&lt;a href="http://1.bp.blogspot.com/-EOLiLbgezpM/TajcmKaBt3I/AAAAAAAAOjM/KoMgkn8OQRE/s1600/NotWorking.png" imageanchor="1" style="clear: left; display: inline !important; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="190" src="http://1.bp.blogspot.com/-EOLiLbgezpM/TajcmKaBt3I/AAAAAAAAOjM/KoMgkn8OQRE/s320/NotWorking.png" width="320" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Click &lt;b&gt;Attach Source&lt;/b&gt;, choose &lt;i&gt;External Folder&lt;/i&gt;, and choose the &lt;b&gt;core/java&lt;/b&gt;&amp;nbsp;in the base folder. For me that's&amp;nbsp;&lt;b&gt;/opt/android-sdk-linux_x86/platforms/android-8/base-08d9d9a/core/java&lt;/b&gt;&lt;/li&gt;&lt;/ul&gt;There you go. Please post a comment and tell me how this turns out for you :)&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;.finn&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;(*1) There are loads of versions there, and it's a bit confusing. I've concluded the stuff we're looking for should end with &lt;i&gt;SDK.&lt;/i&gt;&amp;nbsp;However I'm not 100% certain about what version to download to match the Android version we see in the Android SDK download tool - this is just me guessing.&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8089567797675957527-4137833438681997218?l=johnsenf.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://johnsenf.blogspot.com/feeds/4137833438681997218/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://johnsenf.blogspot.com/2011/04/android-sources-in-eclipse.html#comment-form' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8089567797675957527/posts/default/4137833438681997218'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8089567797675957527/posts/default/4137833438681997218'/><link rel='alternate' type='text/html' href='http://johnsenf.blogspot.com/2011/04/android-sources-in-eclipse.html' title='Android Sources in Eclipse'/><author><name>Finn Johnsen</name><uri>http://www.blogger.com/profile/16113049669710039361</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-XHvcg_MLv74/Twqmu7DANfI/AAAAAAAASwc/SoJTloGFHas/s220/IMG_1674.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/-pfylKiyF1jA/TajfkqhZVfI/AAAAAAAAOjQ/6jQvtt3kMGM/s72-c/treeLink.png' height='72' width='72'/><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8089567797675957527.post-631124256190141677</id><published>2011-04-14T12:29:00.004+02:00</published><updated>2011-04-16T02:49:58.990+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='new create junit test static import hamcrest equalTo is Matchers'/><title type='text'>Getting that Skeleton test up</title><content type='html'>When creating a new unit test file, getting the import statics right with Hamcrest is 30 seconds of hassle, every time.&lt;br /&gt;&lt;br /&gt;Here is the typical unit test start-up I prefer:&lt;br /&gt;&lt;blockquote&gt;&lt;blockquote&gt;&lt;blockquote&gt;&lt;span class="Apple-tab-span" style="font-weight: bold; white-space: pre;"&gt; &lt;/span&gt;@Test&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;public void skeletonTest() {&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;b&gt; &lt;/b&gt;&lt;/span&gt;&lt;b&gt;assertThat(true, is(equalTo(true)));&lt;/b&gt;&lt;br /&gt;}&lt;/blockquote&gt;&lt;/blockquote&gt;&lt;/blockquote&gt;Here is a eclipse &lt;b&gt;template&lt;/b&gt;, which may solve this. But may also not, as I tend to forget little tricks like these. Time will tell if I've been able to incorporate this my reflexes.&lt;br /&gt;&lt;br /&gt;So, get the template in, make the new junit test file, type &lt;b&gt;&lt;i&gt;skeltest&lt;/i&gt;&lt;/b&gt;&amp;nbsp;and press ctrl+space.&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-Cu1dlacRBJ0/TabKi4FaXeI/AAAAAAAAOi4/beZeR0wrJ8M/s1600/eclipse-skeleton-test.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="400" src="http://1.bp.blogspot.com/-Cu1dlacRBJ0/TabKi4FaXeI/AAAAAAAAOi4/beZeR0wrJ8M/s400/eclipse-skeleton-test.png" width="355" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;The template:&lt;br /&gt;&lt;blockquote&gt;&lt;b&gt;${imp:import(org.junit.Test)}&lt;br /&gt;${imps:importStatic(&lt;br /&gt;org.hamcrest.Matchers.equalTo,&lt;br /&gt;org.hamcrest.Matchers.is,&lt;br /&gt;org.junit.Assert.assertThat)}&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;@Test&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;public void skeletonTest() {&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;  &lt;/span&gt;assertThat(true, is(equalTo(true)));&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;}&lt;/b&gt;&lt;/blockquote&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8089567797675957527-631124256190141677?l=johnsenf.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://johnsenf.blogspot.com/feeds/631124256190141677/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://johnsenf.blogspot.com/2011/04/skeleton-test.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8089567797675957527/posts/default/631124256190141677'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8089567797675957527/posts/default/631124256190141677'/><link rel='alternate' type='text/html' href='http://johnsenf.blogspot.com/2011/04/skeleton-test.html' title='Getting that Skeleton test up'/><author><name>Finn Johnsen</name><uri>http://www.blogger.com/profile/16113049669710039361</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-XHvcg_MLv74/Twqmu7DANfI/AAAAAAAASwc/SoJTloGFHas/s220/IMG_1674.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/-Cu1dlacRBJ0/TabKi4FaXeI/AAAAAAAAOi4/beZeR0wrJ8M/s72-c/eclipse-skeleton-test.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8089567797675957527.post-8222773178534797103</id><published>2010-07-19T23:44:00.006+02:00</published><updated>2011-04-16T02:50:18.889+02:00</updated><title type='text'>Tired of killing browsers?</title><content type='html'>Launching the browser a lot from your IDE while working on / developing &amp;lt;some&amp;gt; web app?&lt;br /&gt;&lt;br /&gt;Getting zillions of tabs or new browser instances?&lt;br /&gt;&lt;br /&gt;Killing them all by hand every now and then?&lt;br /&gt;&lt;br /&gt;Small trick which &lt;b&gt;tells Firefox to put all URL requests in the same tab, reusing one tab.&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;in the URL type: &lt;b&gt;about:config&lt;/b&gt;&lt;/blockquote&gt;&lt;blockquote&gt;find the property&amp;nbsp;&lt;b&gt;browser.link.open_newwindow&lt;/b&gt;&lt;/blockquote&gt;&lt;blockquote&gt;change the value to &lt;b&gt;1&lt;/b&gt;&lt;/blockquote&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;br /&gt;Follow up tip: Keep some &lt;b&gt;Firefox fork&lt;/b&gt;/clone (or whatever) installation which you use just for development, and apply this setting to it. This way you don't mess up your Firefox for normal surfing. I keep swiftweasel in /opt/swiftweasel&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8089567797675957527-8222773178534797103?l=johnsenf.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://johnsenf.blogspot.com/feeds/8222773178534797103/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://johnsenf.blogspot.com/2010/07/tired-of-killing-browsers.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8089567797675957527/posts/default/8222773178534797103'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8089567797675957527/posts/default/8222773178534797103'/><link rel='alternate' type='text/html' href='http://johnsenf.blogspot.com/2010/07/tired-of-killing-browsers.html' title='Tired of killing browsers?'/><author><name>Finn Johnsen</name><uri>http://www.blogger.com/profile/16113049669710039361</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-XHvcg_MLv74/Twqmu7DANfI/AAAAAAAASwc/SoJTloGFHas/s220/IMG_1674.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8089567797675957527.post-1859446216570216335</id><published>2010-06-02T23:21:00.019+02:00</published><updated>2010-07-20T00:10:57.518+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='java graphviz aop aspectJ point cut aspect aspects spring logging graph graphical call stack monitoring'/><title type='text'>watch your code do actual work - in runtime</title><content type='html'>Short version: &lt;i&gt;Use AOP to log your method invocations. Store method input parameters and result object, serialized to XML. Put it all into context with a Graphviz file generated as a side-effect.&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;Visual beats plain old text for a lot of purposes. So why not generate something visual from your running code, showing you what's happening using &lt;b&gt;boxes and arrows&lt;/b&gt;. I've had tons of fun (and not too much sleep) lately digging into this using &lt;a href="http://www.graphviz.org/"&gt;Graphviz&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;The value of this is to track that the flow is as expected, and if you need to you can investigate the input and output data going into your ex. repositories or "logical services". The limitation of this is that all needs to run within the same VM and thread.&lt;br /&gt;&lt;br /&gt;Here is what the&amp;nbsp;&lt;a href="http://github.com/finnjohnsen/vizpoc"&gt;proof of concept&lt;/a&gt; app produced from a &lt;a href="http://github.com/finnjohnsen/vizpoc/blob/master/src/test/java/com/finnjohnsen/vizpoc/sample/ActionIntegrationTest.java"&gt;dummy java stack in a unit test&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/_NOtfuEjKBzI/TAbDvUbydMI/AAAAAAAAL28/0uKzdfxCT2I/s1600/graphviz.dot.png" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"&gt;&lt;img border="0" height="316" src="http://4.bp.blogspot.com/_NOtfuEjKBzI/TAbDvUbydMI/AAAAAAAAL28/0uKzdfxCT2I/s640/graphviz.dot.png" width="640" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;The text on the arrows are&amp;nbsp;&lt;b&gt;clickable&amp;nbsp;links&lt;/b&gt; and gives the user this if clicking the "0.Arguments":&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_NOtfuEjKBzI/TAbEk8hI8hI/AAAAAAAAL3E/V99sSL_dO0Q/s1600/xml.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://4.bp.blogspot.com/_NOtfuEjKBzI/TAbEk8hI8hI/AAAAAAAAL3E/V99sSL_dO0Q/s320/xml.png" /&gt;&lt;/a&gt;&lt;/div&gt;Okok, the arguments and results are just boring serialized XML data. They could probably be graphs too, but I haven't come around to that and that isn't really what I'm after.&lt;br /&gt;&lt;br /&gt;I also made &lt;a href="http://github.com/finnjohnsen/vizpoc/blob/master/src/main/java/com/finnjohnsen/vizpoc/servlet/VizServlet.java"&gt;a simple Servlet&lt;/a&gt;, which lists all generated graphs and makes you able to click and view any of these.&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-size: x-large;"&gt;the code&lt;/span&gt;&lt;br /&gt;The rest of this blog will be slightly in-depth and describing the knots and bolts of this.&lt;br /&gt;&lt;br /&gt;The main idea is to&amp;nbsp;accumulate a&amp;nbsp;&lt;a href="http://www.graphviz.org/doc/info/shapes.html#record"&gt;graphviz dot -file&lt;/a&gt;&amp;nbsp;a cross a&amp;nbsp;call-stack. At the points you want as opposed to everything (using reflection and looking at your entire call stack).&lt;br /&gt;&lt;br /&gt;Aspect point cuts (&lt;a href="http://static.springsource.org/spring/docs/2.5.x/reference/aop.html"&gt;Spring and AspectJ&lt;/a&gt;) is perfect for the job. I use &lt;a href="http://java.sun.com/javase/6/docs/api/java/lang/ThreadLocal.html"&gt;ThreadLocal&lt;/a&gt; to keep a&amp;nbsp;&lt;a href="http://github.com/finnjohnsen/vizpoc/blob/master/src/main/java/com/finnjohnsen/vizpoc/aop/GraphvizContext.java"&gt;graph contex&lt;/a&gt;t/handler and simply append to it every time the aspect is invoked. The context saves a file and is released when the call-stack is done.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://github.com/finnjohnsen/vizpoc/blob/master/src/main/java/com/finnjohnsen/vizpoc/servlet/VizServlet.java"&gt;The Servlet&lt;/a&gt;&amp;nbsp;in the proof of concept code is just a nice-to-have and requires graphviz to be installed on the "server". It invokes the 'dot' executable and pushes the output &lt;a href="http://en.wikipedia.org/wiki/Scalable_Vector_Graphics"&gt;svg&lt;/a&gt; (or pdf / png /&amp;nbsp;&lt;a href="http://www.graphviz.org/doc/info/output.html"&gt;whatever you want&lt;/a&gt;) to the user.&lt;br /&gt;&lt;br /&gt;You probably don't want this logging done all the time, due to performance and extensive logging to your temp. So I've stuck a check for an&amp;nbsp;environment&amp;nbsp;variable in the aspect - so you can enable and disable when you need this.&lt;br /&gt;&lt;br /&gt;That's it really. You can check out the &lt;a href="http://github.com/finnjohnsen/vizpoc"&gt;proof of concept from github&lt;/a&gt; and run the tests to see the graph-files get generated. Use the code as you please. Check out the README and please comment if you see any weaknesses or have any&amp;nbsp;opinions.&lt;br /&gt;&lt;br /&gt;/Finn&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8089567797675957527-1859446216570216335?l=johnsenf.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://johnsenf.blogspot.com/feeds/1859446216570216335/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://johnsenf.blogspot.com/2010/06/watch-your-code-work-in-runtime.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8089567797675957527/posts/default/1859446216570216335'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8089567797675957527/posts/default/1859446216570216335'/><link rel='alternate' type='text/html' href='http://johnsenf.blogspot.com/2010/06/watch-your-code-work-in-runtime.html' title='watch your code do actual work - in runtime'/><author><name>Finn Johnsen</name><uri>http://www.blogger.com/profile/16113049669710039361</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-XHvcg_MLv74/Twqmu7DANfI/AAAAAAAASwc/SoJTloGFHas/s220/IMG_1674.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_NOtfuEjKBzI/TAbDvUbydMI/AAAAAAAAL28/0uKzdfxCT2I/s72-c/graphviz.dot.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8089567797675957527.post-393947660646533700</id><published>2010-05-12T22:26:00.006+02:00</published><updated>2011-04-15T23:56:10.621+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Ubuntu clipboard command line xsel pbcopy pbpaste'/><title type='text'>+rw clipboard</title><content type='html'>&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;I saw some guy do a &lt;/span&gt;&lt;i&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;cat&lt;/span&gt;&lt;/i&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;&amp;nbsp;on some file (directly into his clipboard) and then paste/ctrl-v the text into his editor. My brain immediataly went "gimme! gimme! gimme!"&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;div&gt;&lt;s&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;&lt;br /&gt;&lt;/span&gt; &lt;/s&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;After a little googling around I found that his tools,&amp;nbsp;&lt;/span&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;pbcopy&lt;/span&gt;&lt;/b&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;/&lt;/span&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;pbpaste,&lt;/span&gt;&lt;/b&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt; was&amp;nbsp;exclusively&amp;nbsp;&lt;/span&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;for OS X&lt;/span&gt;&lt;/b&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;. A few minutes more with google showed me that the tool for the job in Ubuntu was &lt;/span&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;xsel&lt;/span&gt;&lt;/b&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;.&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;&lt;br /&gt;&lt;/span&gt; &lt;br /&gt;&lt;i&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;#apt-cache search xsel&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;xsel - command-line tool to access X clipboard and selection buffers&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;&lt;br /&gt;&lt;/span&gt; &lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;However xsel covers both read and write and uses parameter to distinct them. My brain isn't up for the job remembering parameters so I decided Steve Jobs'es command was my way. Alias will fix this right up and I have &lt;/span&gt;&lt;i&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;pbcopy&lt;/span&gt;&lt;/i&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt; and &lt;/span&gt;&lt;i&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;pbpaste&lt;/span&gt;&lt;/i&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;&amp;nbsp;and feel happy and warm inside.&lt;/span&gt;&lt;br /&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;&lt;br /&gt;&lt;/span&gt; &lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;get xsel&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;#sudo apt-get install xsel&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;s&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;&lt;br /&gt;&lt;/span&gt; &lt;/s&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;Here are the commands:&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;#cat myfile.txt | xsel -ib&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;#xsel -o &amp;gt; mycopy.txt&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;&lt;br /&gt;&lt;/span&gt; &lt;/b&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;put these two lines into ~/.bashrc if you want this the OS X -way.&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;&lt;b&gt;&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;b&gt;&lt;i&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;alias pbcopy='xsel -ib'&lt;/span&gt;&lt;/i&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;&lt;br /&gt;&lt;/span&gt; &lt;i&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;alias pbpaste='xsel -ob'&lt;/span&gt;&lt;/i&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;   &lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;Do it like apple does:&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;&lt;br /&gt;#cat myfiles.txt | pbcopy&lt;br /&gt;#pbpaste &amp;gt; mycopy.txt&lt;/span&gt;   &lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;&lt;br /&gt;&lt;/span&gt; &lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;/Finn&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;&lt;span class="Apple-style-span" style="color: #333333; font-family: Georgia, serif; font-size: 13px; line-height: 20px;"&gt;edit.(15.04.2011)&lt;/span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;span class="Apple-style-span" style="color: #333333; font-family: Georgia, serif; font-size: 13px; line-height: 20px;"&gt;For some reason the xsel with Ubuntu 10.10. needs xsel -ib (not just xsel -i). No idea why, but blog post is updated accordingly.&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8089567797675957527-393947660646533700?l=johnsenf.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://johnsenf.blogspot.com/feeds/393947660646533700/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://johnsenf.blogspot.com/2010/05/rw-clipboard.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8089567797675957527/posts/default/393947660646533700'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8089567797675957527/posts/default/393947660646533700'/><link rel='alternate' type='text/html' href='http://johnsenf.blogspot.com/2010/05/rw-clipboard.html' title='+rw clipboard'/><author><name>Finn Johnsen</name><uri>http://www.blogger.com/profile/16113049669710039361</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-XHvcg_MLv74/Twqmu7DANfI/AAAAAAAASwc/SoJTloGFHas/s220/IMG_1674.JPG'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8089567797675957527.post-7980921278004623061</id><published>2010-04-24T20:14:00.015+02:00</published><updated>2011-04-16T02:51:36.113+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='spotify playlist ubuntu google chrome chromium'/><title type='text'>Spotify links in Ubuntu &amp; Chrome</title><content type='html'>&lt;a href="http://3.bp.blogspot.com/_NOtfuEjKBzI/S9M9i1xajyI/AAAAAAAALus/TgZivZG7on0/s1600/ubuntu_wine_spotify.png" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5463778441689730850" src="http://3.bp.blogspot.com/_NOtfuEjKBzI/S9M9i1xajyI/AAAAAAAALus/TgZivZG7on0/s200/ubuntu_wine_spotify.png" style="cursor: hand; cursor: pointer; float: left; height: 35px; margin: 0 0 10px 10px; width: 200px;" /&gt;&lt;/a&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;Spotify doesn't work in Linux, natively. (&lt;span class="Apple-style-span" style="color: red;"&gt;edit: it does now&lt;/span&gt;) So it's done using wine following this excellent &lt;a href="http://www.spotify.com/no/help/faq/wine/"&gt;howto&lt;/a&gt;.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;This means however, that Chrome (and your Ubuntu) is unaware of spotify running "under the radar" as a wine/spotify.exe process. So when clicking a link, like this one: &lt;a href="http://open.spotify.com/track/61K2lUXbNSvhEIOkhcozK4"&gt;http://open.spotify.com/track/61K2lUXbNSvhEIOkhcozK4&lt;/a&gt; spotify doesn't react.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;I've Copy&amp;amp;Paste this dead-on recipe from &lt;a href="http://neo22s.com/spotify-links/"&gt;another blog&lt;/a&gt; I found, just so I don't loose it in the future. I can confirm it's working on my Ubuntu 10.04 x64 desktop machine.&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt;echo '#!/bin/sh' &amp;gt; ~/.browser2spotify&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt;echo 'wine  "$HOME/.wine/drive_c/Program Files/Spotify/spotify.exe" /uri "$@"' &amp;gt;&amp;gt; ~/.browser2spotify&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt;chmod 755 ~/.browser2spotify&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt;gconftool-2 -t string -s /desktop/gnome/url-handlers/spotify/command "/home/${USER}/.browser2spotify %s"&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt;gconftool-2 -s /desktop/gnome/url-handlers/spotify/needs_terminal false -t bool&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt;gconftool-2 -s /desktop/gnome/url-handlers/spotify/enabled true -t bool&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt;The clue with this is to make gnome pass URLs starting with &lt;i&gt;spotify: &lt;/i&gt;to the script which passes the URL to spotify.exe&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt;This will do the job until Spotify makes a proper native linux client. Id'e think that wouldn't be too hard as it's an Adobe Air application, which is flash, which is pretty platform independent and very capable of running properly on Linux.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt;/Finn&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8089567797675957527-7980921278004623061?l=johnsenf.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://johnsenf.blogspot.com/feeds/7980921278004623061/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://johnsenf.blogspot.com/2010/04/spotify-links-in-ubuntu-chrome.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8089567797675957527/posts/default/7980921278004623061'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8089567797675957527/posts/default/7980921278004623061'/><link rel='alternate' type='text/html' href='http://johnsenf.blogspot.com/2010/04/spotify-links-in-ubuntu-chrome.html' title='Spotify links in Ubuntu &amp; Chrome'/><author><name>Finn Johnsen</name><uri>http://www.blogger.com/profile/16113049669710039361</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-XHvcg_MLv74/Twqmu7DANfI/AAAAAAAASwc/SoJTloGFHas/s220/IMG_1674.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_NOtfuEjKBzI/S9M9i1xajyI/AAAAAAAALus/TgZivZG7on0/s72-c/ubuntu_wine_spotify.png' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8089567797675957527.post-3417451119718509355</id><published>2010-04-13T23:50:00.022+02:00</published><updated>2010-04-27T21:59:21.984+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='sshfs ubuntu'/><title type='text'>sshfs - brilliantly simple</title><content type='html'>&lt;div&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;Got another linux/unix -box sitting somewhere in your home? I do, and I want _everything_ available to me from where I sit at my desktop.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;I've used nfs quite a bit in the past, while quite easy to set-up it's a hassle compared to the simpleness of sshfs. And setting up samba is like getting skinned alive on this scale. &lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;(ubuntu)&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;#apt-get install sshfs&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;(ubuntu, the other machine / slave)&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;#apt-get install openssh-server&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;put this in /etc/fstab, and you can on-demand mount/unmount the other computer when you see fit:&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;i&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;sshfs#finn@10.0.0.53:/ /home/finn/theslavecomputer fuse noauto,defaults,users,idmap=user 0 0&lt;/span&gt;&lt;/span&gt;&lt;/i&gt;&lt;/div&gt;&lt;div&gt;&lt;i&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/i&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;Now you have the &lt;/span&gt;&lt;/span&gt;&lt;b&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;root of the filesystem&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt; of the other machine sitting in your home directory. Sweet?&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;#mount &lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;i&gt;&lt;b&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;theslavecomputer&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/i&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;... any time you need it. I prefer not using auto mount as I only need access to the other machine like 1 in 20 times I boot. A good rule on fstab in my experience is to not put a lot of stuff on auto-mount. It will get you in trouble when booting eventually which makes you so miserable you'll not click 'like' on any comments you'll read Facebook that day.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;Tip: make this password less by uploading the public certificate. Google it and you'll get a step-by-step in a sec.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;/Finn&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8089567797675957527-3417451119718509355?l=johnsenf.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://johnsenf.blogspot.com/feeds/3417451119718509355/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://johnsenf.blogspot.com/2010/04/sshfs-brilliantly-simple.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8089567797675957527/posts/default/3417451119718509355'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8089567797675957527/posts/default/3417451119718509355'/><link rel='alternate' type='text/html' href='http://johnsenf.blogspot.com/2010/04/sshfs-brilliantly-simple.html' title='sshfs - brilliantly simple'/><author><name>Finn Johnsen</name><uri>http://www.blogger.com/profile/16113049669710039361</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-XHvcg_MLv74/Twqmu7DANfI/AAAAAAAASwc/SoJTloGFHas/s220/IMG_1674.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8089567797675957527.post-8481337977228368098</id><published>2010-04-07T23:39:00.023+02:00</published><updated>2010-04-27T22:00:02.290+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='synergy share mouse keyboard &quot;os x&quot; &quot;snow leopard&quot; ubuntu 10.04'/><title type='text'>Synergy between Ubuntu and OS X</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_NOtfuEjKBzI/S8TIqVQWo3I/AAAAAAAABoE/CrSpdrQagYA/s1600/2010-04-08+22.07.34.jpg"&gt;&lt;img style="float:right; margin:0 0 10px 10px;cursor:pointer; cursor:hand;width: 200px; height: 150px;" src="http://2.bp.blogspot.com/_NOtfuEjKBzI/S8TIqVQWo3I/AAAAAAAABoE/CrSpdrQagYA/s200/2010-04-08+22.07.34.jpg" border="0" alt="" id="BLOGGER_PHOTO_ID_5459709277865681778" /&gt;&lt;/a&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_NOtfuEjKBzI/S8THprd05kI/AAAAAAAABfU/YBMgJVnSE0Y/s1600/2010-04-08+22.07.34.jpg"&gt;&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;I use &lt;/span&gt;&lt;/span&gt;&lt;a href="http://synergy2.sourceforge.net/"&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;Synergy&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt; to share one set of mouse and keyboard between my workstation PC, running Ubuntu 10.04 and my laptop sitting on my desk next to my workstation screen. The laptop is running OS X.&lt;/span&gt;&lt;/span&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;How about not raising your hands off your keyboard and mouse when you have to do stuff on that laptop? Greetings &lt;/span&gt;&lt;/span&gt;&lt;a href="http://synergy2.sourceforge.net/"&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;Synergy&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;Here is how I configured it.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;b&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;On OS X, the keboard+mouse -client&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;... I followed &lt;/span&gt;&lt;/span&gt;&lt;a href="http://synergy2.sourceforge.net/autostart.html"&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;one of the suggested steps&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt; on synergys website. Copy&amp;amp;Paste:&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;# sudo su -&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;# &lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;span class="Apple-style-span" style="white-space: pre; "&gt;&lt;b&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;defaults read com.apple.loginwindow LoginHook&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="white-space: pre; "&gt;&lt;b&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;# sudo mkdir -p /Library/LoginWindow&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="white-space: pre; "&gt;&lt;b&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;# sudo vi &lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;b&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;LoginHook.sh&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="white-space: pre; "&gt;&lt;span class="Apple-style-span" style="font-weight: bold; "&gt;&lt;span class="Apple-style-span" style="font-weight: normal; "&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="white-space: pre; "&gt;&lt;span class="Apple-style-span" style="font-weight: bold; "&gt;&lt;span class="Apple-style-span" style="font-weight: normal; "&gt;&lt;i&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;#!/bin/sh &lt;/span&gt;&lt;/span&gt;&lt;/i&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="white-space: pre; "&gt;&lt;span class="Apple-style-span" style="font-weight: bold; "&gt;&lt;span class="Apple-style-span" style="font-weight: normal; "&gt;&lt;i&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;prog=(/opt/synergy-1.3.1/synergyc &lt;/span&gt;&lt;/span&gt;&lt;/i&gt;&lt;i&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;192.168.3.47&lt;/span&gt;&lt;/span&gt;&lt;/i&gt;&lt;i&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;) &lt;/span&gt;&lt;/span&gt;&lt;/i&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="white-space: pre; "&gt;&lt;span class="Apple-style-span" style="font-weight: bold; "&gt;&lt;span class="Apple-style-span" style="font-weight: normal; "&gt;&lt;i&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;killall ${prog[0]##*/} &lt;/span&gt;&lt;/span&gt;&lt;/i&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="white-space: pre; "&gt;&lt;span class="Apple-style-span" style="font-weight: bold; "&gt;&lt;span class="Apple-style-span" style="font-weight: normal; "&gt;&lt;i&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;exec "${prog[@]}"&lt;/span&gt;&lt;/span&gt;&lt;/i&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="white-space: pre; "&gt;&lt;span class="Apple-style-span" style="font-weight: bold; "&gt;&lt;span class="Apple-style-span" style="font-weight: normal; "&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="white-space: pre; "&gt;&lt;b&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;# sudo chmod 755 /Library/LoginWindow/LoginHook.sh&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="white-space: pre; "&gt;&lt;b&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;# defaults write com.apple.loginwindow LoginHook /Library/LoginWindow/LoginHook.sh&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="white-space: pre; "&gt;&lt;span class="Apple-style-span" style="font-weight: bold; "&gt;&lt;span class="Apple-style-span" style="font-weight: normal; "&gt;&lt;span class="Apple-style-span" style="font-weight: bold; "&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="white-space: pre; "&gt;&lt;span class="Apple-style-span" style="font-weight: bold; "&gt;&lt;span class="Apple-style-span" style="font-weight: normal; "&gt;&lt;span class="Apple-style-span" style="font-weight: bold; "&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;On Ubuntu, the server with mouse+keyboard attached&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="white-space: pre; "&gt;&lt;span class="Apple-style-span" style="font-weight: bold; "&gt;&lt;span class="Apple-style-span" style="font-weight: normal; "&gt;&lt;span class="Apple-style-span" style="font-weight: bold; "&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;... &lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;the guide wasn't that much help as it wasn't specific for any distribution, so I decided to just put the startup after gdm is fired up.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="white-space: pre; font-weight: bold; "&gt;&lt;span class="Apple-style-span" style="font-weight: normal; "&gt;&lt;span class="Apple-style-span" style="font-weight: bold; "&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;# sudo vi /etc/gdm/PostLogin/Default&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="white-space: pre; font-weight: bold; "&gt;&lt;span class="Apple-style-span" style="font-weight: normal; "&gt;&lt;span class="Apple-style-span" style="font-weight: bold; "&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;span class="Apple-style-span"  style="white-space: pre; font-size:medium;"&gt;&lt;div&gt;&lt;i&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;killall synergys&lt;/span&gt;&lt;/i&gt;&lt;/div&gt;&lt;div&gt;&lt;i&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;sleep 1&lt;/span&gt;&lt;/i&gt;&lt;/div&gt;&lt;div&gt;&lt;i&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;/usr/bin/synergys -c /etc/synergy.conf &amp;amp;&lt;/span&gt;&lt;/i&gt;&lt;/div&gt;&lt;div&gt;&lt;i&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/i&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;My /etc/synergy.conf looks like this:&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;i&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;section: screens   &lt;/span&gt;&lt;/i&gt;&lt;/div&gt;&lt;div&gt;&lt;i&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;  finnbuntu:  &lt;/span&gt;&lt;/i&gt;&lt;/div&gt;&lt;div&gt;&lt;i&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;  finnmac.local: &lt;/span&gt;&lt;/i&gt;&lt;/div&gt;&lt;div&gt;&lt;i&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;end &lt;/span&gt;&lt;/i&gt;&lt;/div&gt;&lt;div&gt;&lt;i&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/i&gt;&lt;/div&gt;&lt;div&gt;&lt;i&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;section: links         &lt;/span&gt;&lt;/i&gt;&lt;/div&gt;&lt;div&gt;&lt;i&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-style: normal; "&gt;&lt;i&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;  finnbuntu&lt;/span&gt;&lt;/i&gt;&lt;/span&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;:      &lt;/span&gt;&lt;/i&gt;&lt;/div&gt;&lt;div&gt;&lt;i&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;    right = finnmac.local         &lt;/span&gt;&lt;/i&gt;&lt;/div&gt;&lt;div&gt;&lt;i&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;  finnmac.local:             &lt;/span&gt;&lt;/i&gt;&lt;/div&gt;&lt;div&gt;&lt;i&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;    left = &lt;/span&gt;&lt;span class="Apple-style-span" style="font-style: normal; "&gt;&lt;i&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;finnbuntu&lt;/span&gt;&lt;/i&gt;&lt;/span&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt; &lt;/span&gt;&lt;/i&gt;&lt;/div&gt;&lt;div&gt;&lt;i&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;end&lt;/span&gt;&lt;/i&gt;&lt;/div&gt;&lt;div&gt;&lt;i&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/i&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;/Finn&lt;/span&gt;&lt;/div&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8089567797675957527-8481337977228368098?l=johnsenf.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://johnsenf.blogspot.com/feeds/8481337977228368098/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://johnsenf.blogspot.com/2010/04/synergy-between-ubuntu-and-os-x.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8089567797675957527/posts/default/8481337977228368098'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8089567797675957527/posts/default/8481337977228368098'/><link rel='alternate' type='text/html' href='http://johnsenf.blogspot.com/2010/04/synergy-between-ubuntu-and-os-x.html' title='Synergy between Ubuntu and OS X'/><author><name>Finn Johnsen</name><uri>http://www.blogger.com/profile/16113049669710039361</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-XHvcg_MLv74/Twqmu7DANfI/AAAAAAAASwc/SoJTloGFHas/s220/IMG_1674.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_NOtfuEjKBzI/S8TIqVQWo3I/AAAAAAAABoE/CrSpdrQagYA/s72-c/2010-04-08+22.07.34.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8089567797675957527.post-5451425270877432862</id><published>2010-04-07T00:08:00.003+02:00</published><updated>2010-04-07T00:21:35.238+02:00</updated><title type='text'>Rescue Ubuntu 10.04 graphics crash after grub</title><content type='html'>This is a note to self, in case I run into this problem again. Obviously a (beta) problem with the nvidia -driver.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;The symptoms is that you get the grub chooser showing just fine, but get a distorted strange looking graphics crash screen directly after - when it's supposed to show the boot splash. Turned out I had to disable nvidia to find my underlying problem which prevented me booting. This was a error in /etc/fstab, my own fault entirely.&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;This is a very generic and nice way to mount up and rescue your system, and using chroot you've almost got your system running as if you've booted it off your hard drive. (well, not entirely true)&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt; Boot off the Ubuntu the 10.04 CD and open a terminal&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;#mount /dev/sda1 /mnt&lt;/div&gt;&lt;div&gt;#mount -o bind /proc /mnt/proc&lt;/div&gt;&lt;div&gt;#mount -o bind /dev /mnt/dev&lt;/div&gt;&lt;div&gt;#sudo chroot /mnt&lt;/div&gt;&lt;div&gt;#apt-get remove nvidia-96 --purge&lt;/div&gt;&lt;div&gt;#apt-get remove nvidia-173 --purge&lt;/div&gt;&lt;div&gt;#reboot&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8089567797675957527-5451425270877432862?l=johnsenf.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://johnsenf.blogspot.com/feeds/5451425270877432862/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://johnsenf.blogspot.com/2010/04/rescue-ubuntu-1004-graphics-crash-after.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8089567797675957527/posts/default/5451425270877432862'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8089567797675957527/posts/default/5451425270877432862'/><link rel='alternate' type='text/html' href='http://johnsenf.blogspot.com/2010/04/rescue-ubuntu-1004-graphics-crash-after.html' title='Rescue Ubuntu 10.04 graphics crash after grub'/><author><name>Finn Johnsen</name><uri>http://www.blogger.com/profile/16113049669710039361</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-XHvcg_MLv74/Twqmu7DANfI/AAAAAAAASwc/SoJTloGFHas/s220/IMG_1674.JPG'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8089567797675957527.post-5629219923532792357</id><published>2010-03-11T01:39:00.004+01:00</published><updated>2010-03-22T21:26:53.914+01:00</updated><title type='text'>Android Market - The power of the latest comment</title><content type='html'>&lt;div&gt;I've watched my download statistics closely about a month for Workout Rotation Diary on Android Market.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;I've seen a clear pattern telling me that the latest comment has &lt;b&gt;a huge&lt;/b&gt; of impact on daily downloads. When the latest comment and rating is positive, the app can do 100-200 downloads a day. With a loud negative comment being the newest (like at the time of writing I have 2 really negative, the latest being: "USELESS!") it's down to 10-50 a day.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;My comfort is that it has 2k active installations and 5k downloads, so maybe there are some individuals who find it useful.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;... so not going to kill myself quite yet.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8089567797675957527-5629219923532792357?l=johnsenf.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://johnsenf.blogspot.com/feeds/5629219923532792357/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://johnsenf.blogspot.com/2010/03/android-market-power-of-latest-comment.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8089567797675957527/posts/default/5629219923532792357'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8089567797675957527/posts/default/5629219923532792357'/><link rel='alternate' type='text/html' href='http://johnsenf.blogspot.com/2010/03/android-market-power-of-latest-comment.html' title='Android Market - The power of the latest comment'/><author><name>Finn Johnsen</name><uri>http://www.blogger.com/profile/16113049669710039361</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-XHvcg_MLv74/Twqmu7DANfI/AAAAAAAASwc/SoJTloGFHas/s220/IMG_1674.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8089567797675957527.post-7545873108717037622</id><published>2010-02-23T02:04:00.012+01:00</published><updated>2011-04-16T02:24:26.203+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='android source  eclipse android.jar fake dummy source jar'/><title type='text'>Developing Android apps -&gt; the android.jar source #2</title><content type='html'>&lt;span style="font-weight: bold;"&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;edit:&lt;/span&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="color: red;"&gt;this method is outdated&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;.&lt;/span&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&lt;a href="http://johnsenf.blogspot.com/2011/04/android-sources-in-eclipse.html"&gt;This one&lt;/a&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;works now (16 April 2011).&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;For some reason, I've had a fight or two with eclipse on getting these sources right. Even after completing the steps I've mentioned in the other blog post.&lt;br /&gt;&lt;br /&gt;The steps I'll describe now makes a fake android-src.jar, and fixed it for me tonight. *puh*&lt;br /&gt;&lt;br /&gt;&lt;i&gt;(requires you've done &lt;a href="http://johnsenf.blogspot.com/2009/12/android-sources-and-javadoc-in-eclipse.html"&gt;everything else I've mentioned&lt;/a&gt;)&lt;/i&gt;&lt;br /&gt;&lt;b&gt;#cd/opt/android-sdk-linux_86/platforms/&lt;/b&gt;&lt;br /&gt;&lt;b&gt;#ln -s ~/src/android-sources android-src.jar&lt;/b&gt;&lt;br /&gt;In eclipse&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;b&gt;Select your project&lt;/b&gt; on the right menu of eclipse&lt;/li&gt;&lt;li&gt;Choose &lt;b&gt;Properties&lt;/b&gt;&lt;/li&gt;&lt;li&gt;Select &lt;b&gt;Android&lt;/b&gt; on the left hand list.&lt;/li&gt;&lt;li&gt;Choose a &lt;b&gt;different SDK&lt;/b&gt; version, 1.6 for example.&lt;/li&gt;&lt;li&gt;Click &lt;b&gt;Apply&lt;/b&gt;. &lt;/li&gt;&lt;li&gt;&lt;b&gt;Wait&lt;/b&gt; for building workspace (on the bottom right side of the eclipse window).&lt;/li&gt;&lt;li&gt;Choose your &lt;b&gt;correct SDK&lt;/b&gt; version again. 1.5 in my example. &lt;/li&gt;&lt;li&gt;Click &lt;b&gt;Apply&lt;/b&gt;.&lt;/li&gt;&lt;/ul&gt;Note that the dummy android-src-jar we've made by sym-link needs to be replaced if you're swapping SDK versions.&lt;br /&gt;&lt;br /&gt;This is a bit fuzzy and I'm not sure why these sources are causing such grief. There may be better ways of doing this, please tell me if you come across one.&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;/Finn&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8089567797675957527-7545873108717037622?l=johnsenf.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://johnsenf.blogspot.com/feeds/7545873108717037622/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://johnsenf.blogspot.com/2010/02/developing-android-apps-androidjar.html#comment-form' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8089567797675957527/posts/default/7545873108717037622'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8089567797675957527/posts/default/7545873108717037622'/><link rel='alternate' type='text/html' href='http://johnsenf.blogspot.com/2010/02/developing-android-apps-androidjar.html' title='Developing Android apps -&gt; the android.jar source #2'/><author><name>Finn Johnsen</name><uri>http://www.blogger.com/profile/16113049669710039361</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-XHvcg_MLv74/Twqmu7DANfI/AAAAAAAASwc/SoJTloGFHas/s220/IMG_1674.JPG'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8089567797675957527.post-3434771190528637297</id><published>2010-02-13T20:54:00.006+01:00</published><updated>2010-07-10T10:44:18.951+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Android beginner tip icon drawable SDK'/><title type='text'>Android -&gt; SDK provided icons, images and such</title><content type='html'>&lt;a href="http://1.bp.blogspot.com/_NOtfuEjKBzI/S3cEZUkufcI/AAAAAAAAARw/UShu7kevkGU/s1600-h/built-in-resources.png" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5437819908139154882" src="http://1.bp.blogspot.com/_NOtfuEjKBzI/S3cEZUkufcI/AAAAAAAAARw/UShu7kevkGU/s320/built-in-resources.png" style="cursor: hand; cursor: pointer; float: left; height: 214px; margin: 0 10px 10px 0; width: 320px;" /&gt;&lt;/a&gt;Another fairly beginner thing I thought I'd toss out there. I found this out by chance after doing stuff the hard way for a while.&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;I've spent (aka wasted) time finding my icon this way: changing the icon, launched the app in the emulator, changed the icon, launched the app. Until I finally was pleased with the icon. &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;... well, like I said, waste of time. The icons are in the open in the SDK in data/res/drawable ex (/opt/android-sdk-linux/platforms/android-1.5/data/res/drawable)&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;/Finn&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8089567797675957527-3434771190528637297?l=johnsenf.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://johnsenf.blogspot.com/feeds/3434771190528637297/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://johnsenf.blogspot.com/2010/02/android-sdk-provided-icons-images-and.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8089567797675957527/posts/default/3434771190528637297'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8089567797675957527/posts/default/3434771190528637297'/><link rel='alternate' type='text/html' href='http://johnsenf.blogspot.com/2010/02/android-sdk-provided-icons-images-and.html' title='Android -&gt; SDK provided icons, images and such'/><author><name>Finn Johnsen</name><uri>http://www.blogger.com/profile/16113049669710039361</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-XHvcg_MLv74/Twqmu7DANfI/AAAAAAAASwc/SoJTloGFHas/s220/IMG_1674.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_NOtfuEjKBzI/S3cEZUkufcI/AAAAAAAAARw/UShu7kevkGU/s72-c/built-in-resources.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8089567797675957527.post-7324618164630379680</id><published>2010-02-08T23:18:00.012+01:00</published><updated>2010-02-28T04:11:01.133+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='bit.ly android'/><title type='text'>bit.ly for android</title><content type='html'>&lt;div&gt;I want to use the url shortening service &lt;a href="http://bit.ly/"&gt;bit.ly&lt;/a&gt; in an android app I'm working on, and was looking for a .jar or something to help me.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Couldn't find anything made for Android which used the httpclient and json -stuff we have bundled with the the Dalvik vm, so I made one myself today and put it on github.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;a href="http://github.com/finnjohnsen/BitlyAndroid"&gt;http://github.com/finnjohnsen/BitlyAndroid&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Easiest way is just go grab the &lt;a href="http://github.com/finnjohnsen/BitlyAndroid/raw/master/src/com/finnjohnsen/bitlyandroid/test/BitlyAndroid.java"&gt;BitlyAndroid.java&lt;/a&gt;, put it into your source code and start making short URLs. The github project is just a "proof of concept" android junit project.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Usage:&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"   style="  ;font-family:monospace;font-size:small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"   style="  ;font-family:monospace;font-size:small;"&gt;BitlyAndroid bitly = new BitlyAndroid("bitlyapidemo","R_0da49e0a9118ff35f52f629d2d71bf07");&lt;/span&gt;&lt;/div&gt;&lt;code&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;String shortUrl = bitly.getShortUrl("http://johnsenf.blogspot.com/2009/12/android-sources-and-javadoc-in-eclipse.ht&lt;/span&gt;&lt;span class="Apple-style-span"  style="font-size:x-small;"&gt;ml");&lt;/span&gt;&lt;/code&gt;&lt;div&gt;&lt;span class="Apple-style-span"   style="  ;font-family:monospace;font-size:13px;"&gt;//shortUrl = "http://bit.ly/9LSEfV"&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;code&gt;&lt;span class="Apple-style-span"  style="font-size:x-small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/code&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:monospace;"&gt;&lt;span class="Apple-style-span"  style="font-family:Georgia, serif;"&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;/Finn&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8089567797675957527-7324618164630379680?l=johnsenf.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://johnsenf.blogspot.com/feeds/7324618164630379680/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://johnsenf.blogspot.com/2010/02/bitly-for-android.html#comment-form' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8089567797675957527/posts/default/7324618164630379680'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8089567797675957527/posts/default/7324618164630379680'/><link rel='alternate' type='text/html' href='http://johnsenf.blogspot.com/2010/02/bitly-for-android.html' title='bit.ly for android'/><author><name>Finn Johnsen</name><uri>http://www.blogger.com/profile/16113049669710039361</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-XHvcg_MLv74/Twqmu7DANfI/AAAAAAAASwc/SoJTloGFHas/s220/IMG_1674.JPG'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8089567797675957527.post-8039016086153418016</id><published>2010-01-24T13:24:00.015+01:00</published><updated>2010-02-13T21:28:51.632+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='android market console downloads statistics'/><title type='text'>Android app published 1 week ago</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_NOtfuEjKBzI/S1znC-X_7AI/AAAAAAAAARQ/9wXbJHvO2zQ/s1600-h/Untitled.png"&gt;&lt;img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 320px; height: 130px;" src="http://1.bp.blogspot.com/_NOtfuEjKBzI/S1znC-X_7AI/AAAAAAAAARQ/9wXbJHvO2zQ/s320/Untitled.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5430469288991386626" /&gt;&lt;/a&gt;&lt;br /&gt;I'm trying to figure out what to make of the download/active installs figures I get in the &lt;b&gt;Android Market -console&lt;/b&gt;. As to how much activity there really is in the android market.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;After exactly 1 week from publishing, the new free app &lt;a href="http://sites.google.com/site/johnsenf/wrd"&gt;workout rotation diary&lt;/a&gt; has &lt;b&gt;941 downloads and 578 current installs&lt;/b&gt;. &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;It's not much, but not terrible either. I've made no effort in promoting or marketing it anywhere. Except my personal Twitter and Facebook, which spans a maximum total of 200 people. Where I figure less than 10% to be people who remotely care about the subject.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;In as little as a week no active installs can be regarded as users&lt;/b&gt;. So I figured the downloads being mere curiosity downloads or try-outs. &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;The category for the app is Health, which is not the hottest category in android market. At least not in my view. It's a boring category for most people who want cool gadgets and show-offs in these early days of Android. (this is purely based on gut feeling on my part of course). &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Most people using android phones are tech heads and early adapters. The non-tech moms and dads will hopefully come around in.... a year(?)&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;We'll see what happens, and what feedback it gets (comments and the ratings). I'll keep posting about it if it takes any turns. I'm considering promoting it in various health and fitness forums and sites, but haven't decided if I'll bother yet.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;/Finn&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8089567797675957527-8039016086153418016?l=johnsenf.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://johnsenf.blogspot.com/feeds/8039016086153418016/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://johnsenf.blogspot.com/2010/01/android-app-published-1-week-ago.html#comment-form' title='12 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8089567797675957527/posts/default/8039016086153418016'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8089567797675957527/posts/default/8039016086153418016'/><link rel='alternate' type='text/html' href='http://johnsenf.blogspot.com/2010/01/android-app-published-1-week-ago.html' title='Android app published 1 week ago'/><author><name>Finn Johnsen</name><uri>http://www.blogger.com/profile/16113049669710039361</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-XHvcg_MLv74/Twqmu7DANfI/AAAAAAAASwc/SoJTloGFHas/s220/IMG_1674.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_NOtfuEjKBzI/S1znC-X_7AI/AAAAAAAAARQ/9wXbJHvO2zQ/s72-c/Untitled.png' height='72' width='72'/><thr:total>12</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8089567797675957527.post-1110658179462490032</id><published>2010-01-13T23:39:00.007+01:00</published><updated>2010-01-14T00:04:29.788+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Android beginner tips tip Eclipse ApiDemos API SDK Getting Started'/><title type='text'>Developing Android apps -&gt; get familiar with ApiDemos</title><content type='html'>&lt;div&gt;... just another beginner tip I thought Id'e put out there in case it saves anyone some time.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;When starting off with Android development, you'll immediately start wondering how basic stuff is done and you'll need example code. Like how to get a menu in your app, how to launch new Activities and how to get data into your Spinner (aka drop down)&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;My second best tip&lt;/b&gt; for this is to &lt;b&gt;get ApiDemos into your workspace&lt;/b&gt;. &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;You'll find it here:&lt;b&gt;android-sdk/platforms/android-2.0/samples/ApiDemos&lt;/b&gt;&lt;/div&gt;&lt;div&gt;(replace the SDK version for what you're using obviously)&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;File -&gt; New -&gt; Other -&gt; Android Project.&lt;/div&gt;&lt;div&gt;Select "Create project from existing sample"&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Fire it up in your emulator and start clicking about. The app is brilliantly organized and you'll find everything pretty quickly after spending a few minutes toying with it. I got quite few ideas and gotchas just by clicking around looking.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;The only downside with ApiDemo that it has complex reflection-like bootstrap, which makes it a bit hard to see how they actually start activities. So sometimes it's hard to find the source by tracking it. I ignored the bootup and took up the habbit of just doing a source search based on guessing, or click through the namespaces - you'll figure it out as I did I'm sure. &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;The silly #1 tip&lt;/b&gt; you already know: Google it ffs ;)&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Lastly I'll add that the &lt;a href="http://developer.android.com/guide/appendix/faq/commontasks.html"&gt;Common Tasks&lt;/a&gt; -page on the android site is quite useful.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;/Finn&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8089567797675957527-1110658179462490032?l=johnsenf.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://johnsenf.blogspot.com/feeds/1110658179462490032/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://johnsenf.blogspot.com/2010/01/developing-android-apps-get-familiar.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8089567797675957527/posts/default/1110658179462490032'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8089567797675957527/posts/default/1110658179462490032'/><link rel='alternate' type='text/html' href='http://johnsenf.blogspot.com/2010/01/developing-android-apps-get-familiar.html' title='Developing Android apps -&gt; get familiar with ApiDemos'/><author><name>Finn Johnsen</name><uri>http://www.blogger.com/profile/16113049669710039361</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-XHvcg_MLv74/Twqmu7DANfI/AAAAAAAASwc/SoJTloGFHas/s220/IMG_1674.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8089567797675957527.post-7605381541125039562</id><published>2009-12-26T23:17:00.028+01:00</published><updated>2011-04-16T02:24:08.880+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='android source javadoc eclipse android.jar'/><title type='text'>Developing Android apps -&gt; the android.jar source</title><content type='html'>edit: &lt;b&gt;&lt;span class="Apple-style-span" style="color: red;"&gt;this method is outdated&lt;/span&gt;&lt;/b&gt;. &lt;a href="http://johnsenf.blogspot.com/2011/04/android-sources-in-eclipse.html"&gt;This one&lt;/a&gt; works now (16 April 2011).&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;An android project in eclipse don't provide JavaDoc nor sources to android.jar out of the box. Which is quite annoying once you start doing some real development, especially for a first timer who don't know the API too well (like yours truly).&lt;br /&gt;&lt;br /&gt;Here is how I fixed it, by checking out the source.&lt;br /&gt;&lt;i&gt;&lt;b&gt;#cd ~/src/&lt;/b&gt;&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&lt;b&gt;#git clone git://android.git.kernel.org/platform/frameworks/base.git android-sources&lt;/b&gt;&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&lt;b&gt;#cd android-sources&lt;/b&gt;&lt;/i&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;i&gt;&lt;b&gt;#git branch -&lt;/b&gt;r&lt;/i&gt;&lt;br /&gt;origin/HEAD -&amp;gt; origin/master&lt;br /&gt;origin/cdma-import&lt;br /&gt;origin/cupcake&lt;br /&gt;origin/cupcake-release&lt;br /&gt;origin/donut&lt;br /&gt;origin/donut-plus-aosp&lt;br /&gt;origin/donut-release&lt;br /&gt;origin/eclair&lt;br /&gt;origin/master&lt;br /&gt;origin/release-1.0&lt;br /&gt;&lt;br /&gt;I'm using &lt;a href="http://en.wikipedia.org/wiki/Android_(operating_system)#Update_history"&gt;1.5 aka Cupcake&lt;/a&gt;, so I'll checkout that&lt;br /&gt;&lt;i&gt;&lt;b&gt;#git checkout origin/cupcake-release&lt;/b&gt;&lt;/i&gt;&lt;br /&gt;&lt;div&gt;&lt;i&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/i&gt;&lt;/div&gt;&lt;div&gt;assuming you've got the sdk in /opt/ like me&lt;/div&gt;&lt;div&gt;&lt;i&gt;&lt;b&gt;#cd/opt/android-sdk-linux_86/platforms/android-1.5&lt;/b&gt;&lt;/i&gt;&lt;/div&gt;&lt;div&gt;&lt;i&gt;&lt;b&gt;#ln -s ~/src/android-sources sources&lt;/b&gt;&lt;/i&gt;&lt;/div&gt;&lt;div&gt;&lt;i&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/i&gt;&lt;/div&gt;&lt;div&gt;That's it, restart Eclipse and you should get the source (with javadoc) when stepping into android classes.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;Still not getting the source? &lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&lt;a href="http://johnsenf.blogspot.com/2010/02/developing-android-apps-androidjar.html"&gt;See the follow up&lt;/a&gt; made after having another fight on this.&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;/Finn&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8089567797675957527-7605381541125039562?l=johnsenf.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://johnsenf.blogspot.com/feeds/7605381541125039562/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://johnsenf.blogspot.com/2009/12/android-sources-and-javadoc-in-eclipse.html#comment-form' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8089567797675957527/posts/default/7605381541125039562'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8089567797675957527/posts/default/7605381541125039562'/><link rel='alternate' type='text/html' href='http://johnsenf.blogspot.com/2009/12/android-sources-and-javadoc-in-eclipse.html' title='Developing Android apps -&gt; the android.jar source'/><author><name>Finn Johnsen</name><uri>http://www.blogger.com/profile/16113049669710039361</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-XHvcg_MLv74/Twqmu7DANfI/AAAAAAAASwc/SoJTloGFHas/s220/IMG_1674.JPG'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8089567797675957527.post-322578142285010073</id><published>2008-07-21T15:03:00.000+02:00</published><updated>2008-07-31T13:05:47.076+02:00</updated><title type='text'>Eclipse and maven 2 integration wars?</title><content type='html'>...&lt;span style="font-weight:bold;"&gt;stuck with #mvn eclipse:eclipse?&lt;/span&gt; I am. :(&lt;br /&gt;&lt;br /&gt;Why can't there be something which just works already? Like my colleagues using IntelliJ has had for a long time now. &lt;br /&gt;&lt;br /&gt;First, there is the maven built-in #&lt;span style="font-weight:bold;"&gt;mvn eclipse:eclipse&lt;/span&gt;. Which is probably what one consider "good enough". It's a bit painful when you add a new dependency: have to rebuild/mvn the project in console, then clean the project in eclipse. (often you find yourself having to do this 2-3 times before eclipse finally gets it's classpath shizzle sorted and stops flashing red under your new import statements)&lt;br /&gt;&lt;br /&gt;Then along came &lt;span style="font-weight:bold;"&gt;&lt;a href="http://m2eclipse.codehaus.org/"&gt;m2eclipse&lt;/a&gt;&lt;/span&gt; on the codehaus site. Which hasn't proved itself usable over the years it's been at codehaus. Slow and didn't want to import my large project structures.&lt;br /&gt;&lt;br /&gt;Then, Google Code gave birth to &lt;a href="http://code.google.com/p/q4e/"&gt;Q4E&lt;/a&gt; pretty recently (a year ago?), which looked promising and very active for a while. But had my same problem with a lot of artifacts. &lt;br /&gt;&lt;br /&gt;Both of these have some cool stuff in them. Like Q4Es grapical dependency viewer, and m2eclipse has a nice artchetype wizard which creates a nice skeleton projects for you if you want a "Hello World" up and running using ex Wicket. But, I can't get either to load my large structure, so I'm stuck with eclipse:eclipse!!&lt;br /&gt;&lt;br /&gt;And now? What's going on these days? Seems to me, both of them are trying to get into the eclipse foundation (incubated as they call it) as &lt;a href="http://eclipse.org/m2e/"&gt;m2e&lt;/a&gt; and &lt;a href="http://www.eclipse.org/projects/project_summary.php?projectid=technology.iam"&gt;Eclipse IAM&lt;/a&gt;. So, what I would like to know, from Eclipse Foundation: &lt;span style="font-weight:bold;"&gt;WTF is going on?&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Are we seeing a nother subclipse vs subversive -battle?&lt;br /&gt;&lt;br /&gt;I hope not. I hope eclipse.org accepts one of them ASAP, and they both join forces and create a kick-ass plugin.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8089567797675957527-322578142285010073?l=johnsenf.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://johnsenf.blogspot.com/feeds/322578142285010073/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://johnsenf.blogspot.com/2008/07/eclipse-and-maven-2-wars.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8089567797675957527/posts/default/322578142285010073'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8089567797675957527/posts/default/322578142285010073'/><link rel='alternate' type='text/html' href='http://johnsenf.blogspot.com/2008/07/eclipse-and-maven-2-wars.html' title='Eclipse and maven 2 integration wars?'/><author><name>Finn Johnsen</name><uri>http://www.blogger.com/profile/16113049669710039361</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-XHvcg_MLv74/Twqmu7DANfI/AAAAAAAASwc/SoJTloGFHas/s220/IMG_1674.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8089567797675957527.post-67806360220836277</id><published>2008-04-19T16:39:00.000+02:00</published><updated>2008-04-19T16:41:31.333+02:00</updated><title type='text'>Hello world.</title><content type='html'>What else do you put in the first post?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8089567797675957527-67806360220836277?l=johnsenf.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://johnsenf.blogspot.com/feeds/67806360220836277/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://johnsenf.blogspot.com/2008/04/hello-world.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8089567797675957527/posts/default/67806360220836277'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8089567797675957527/posts/default/67806360220836277'/><link rel='alternate' type='text/html' href='http://johnsenf.blogspot.com/2008/04/hello-world.html' title='Hello world.'/><author><name>Finn Johnsen</name><uri>http://www.blogger.com/profile/16113049669710039361</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-XHvcg_MLv74/Twqmu7DANfI/AAAAAAAASwc/SoJTloGFHas/s220/IMG_1674.JPG'/></author><thr:total>0</thr:total></entry></feed>
