<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/atom10full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><feed xmlns="http://www.w3.org/2005/Atom" xmlns:openSearch="http://a9.com/-/spec/opensearch/1.1/" xmlns:georss="http://www.georss.org/georss" xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr="http://purl.org/syndication/thread/1.0" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" gd:etag="W/&quot;DkIASHs9eip7ImA9WhRUGEk.&quot;"><id>tag:blogger.com,1999:blog-2809297633566666445</id><updated>2012-01-29T14:42:29.562+01:00</updated><category term="native client" /><category term="android vs iphone" /><category term="spanish" /><category term="tools" /><category term="cernlib" /><category term="development" /><category term="argument" /><category term="conversion" /><category term="competition" /><category term="Apple" /><category term="mixcraft" /><category term="file renaming" /><category term="sudoku" /><category term="rom" /><category term="configuration" /><category term="makefile" /><category term="video" /><category term="file editing" /><category term="google wave profile" /><category term="c++" /><category term="ubuntu 9.04" /><category term="gcc 4" /><category term="google wave" /><category term="LAPACK" /><category term="gutsy gibbon" /><category term="nacl" /><category term="html tutorial" /><category term="lcio" /><category term="wifi" /><category term="android phones" /><category term="putty" /><category term="carter cole" /><category term="themes" /><category term="c" /><category term="desktop" /><category term="build" /><category term="emulator" /><category term="marketing" /><category term="fix" /><category term="network" /><category term="ubuntu" /><category term="compiler" /><category term="google" /><category term="job management" /><category term="gfortran" /><category term="operator" /><category term="HTC Magic" /><category term="symbolic link" /><category term="apps marketplace" /><category term="parallel software build" /><category term="syntax highlight" /><category term="google mobile phone" /><category term="demo" /><category term="buying" /><category term="grid" /><category term="Dalvik" /><category term="emoticons" /><category term="sound" /><category term="compilation" /><category term="shell" /><category term="virtual machine" /><category term="fixed background" /><category term="web server" /><category term="code" /><category term="customization" /><category term="driver" /><category term="alex gorbatchev" /><category term="cloud computing" /><category term="usb" /><category term="howto" /><category term="fortran" /><category term="plurk emoticons" /><category term="music" /><category term="ssh" /><category term="gvim" /><category term="3d display" /><category term="gcc" /><category term="Samsung" /><category term="visual c++" /><category term="google wave robot" /><category term="acer liquid" /><category term="VOMS" /><category term="flashing phone" /><category term="problem" /><category term="mobile" /><category term="templates" /><category term="pc" /><category term="installation" /><category term="characters" /><category term="rsync" /><category term="os module" /><category term="SFR" /><category term="android 2.1" /><category term="AVD" /><category term="phone" /><category term="fast web browser" /><category term="dell" /><category term="pointers" /><category term="WMS" /><category term="iphone" /><category term="css" /><category term="cast" /><category term="google wave extensions" /><category term="grep" /><category term="function" /><category term="keyboard" /><category term="alsa" /><category term="eclipse" /><category term="cron" /><category term="yahoo messenger" /><category term="laptop" /><category term="backup" /><category term="google wave emoticons" /><category term="android OS" /><category term="virtualbox" /><category term="HTC" /><category term="google wave extension settings" /><category term="CVS" /><category term="webcam" /><category term="screen capture" /><category term="smartphone" /><category term="bash" /><category term="Blogger" /><category term="portable sfr" /><category term="garageband" /><category term="editor" /><category term="MinGW" /><category term="android" /><category term="photo" /><category term="htc sapphire" /><category term="software" /><category term="android features" /><category term="html" /><category term="Lenovo" /><category term="Qt" /><category term="ganga" /><category term="version control" /><category term="web browser" /><category term="acer" /><category term="gLite" /><category term="oPhone" /><category term="vista" /><category term="google apps" /><category term="ide" /><category term="web design" /><category term="proxy" /><category term="javascript" /><category term="lessons" /><category term="business apps" /><category term="Coin3d" /><category term="html development" /><category term="building software" /><category term="smart phone" /><category term="skype" /><category term="phone htc" /><category term="ubuntu jaunty" /><category term="android 1.6" /><category term="vimrc" /><category term="recording" /><category term="DDMS" /><category term="find" /><category term="template designer" /><category term="acer liquid stream" /><category term="python" /><category term="sdk" /><category term="script" /><category term="html 5" /><category term="parallel" /><category term="layout" /><category term="windows" /><category term="background" /><category term="lawsuit" /><category term="labtec webcam pro" /><category term="syntaxhighlighter" /><category term="d630" /><category term="g++ 4" /><category term="const" /><category term="merge" /><category term="apache" /><category term="linux" /><category term="video for linux" /><category term="debug" /><category term="android 2.0" /><category term="guide" /><category term="vi" /><category term="kubuntu" /><category term="web2py" /><category term="CamStudio" /><category term="monitoring" /><category term="blog" /><category term="google chrome" /><category term="french" /><category term="hello world" /><category term="blogging tools" /><category term="plurk" /><category term="g++" /><category term="SVN" /><category term="client-side code" /><title>Allister on Web &amp; Mobile Software</title><subtitle type="html">Notes, guides and tutorials on software development tools,   with a focus on open source web development and mobile computing.</subtitle><link rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml" href="http://allisterx.blogspot.com/feeds/posts/default" /><link rel="alternate" type="text/html" href="http://allisterx.blogspot.com/" /><link rel="next" type="application/atom+xml" href="http://www.blogger.com/feeds/2809297633566666445/posts/default?start-index=26&amp;max-results=25&amp;redirect=false&amp;v=2" /><author><name>Allister</name><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://2.bp.blogspot.com/_y1ZYsD4ubm0/ScIUPiwP7xI/AAAAAAAADvk/SQU1pmDEb7M/S220/me_at_golfe_juan.jpg" /></author><generator version="7.00" uri="http://www.blogger.com">Blogger</generator><openSearch:totalResults>54</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/atom+xml" href="http://feeds.feedburner.com/AllisterOnWebMobileSoftware" /><feedburner:info uri="allisteronwebmobilesoftware" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><entry gd:etag="W/&quot;A04DQ3g9fCp7ImA9WxFWEEs.&quot;"><id>tag:blogger.com,1999:blog-2809297633566666445.post-1666512242904508792</id><published>2010-05-28T20:04:00.002+02:00</published><updated>2010-05-28T20:06:12.664+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-05-28T20:06:12.664+02:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="android phones" /><category scheme="http://www.blogger.com/atom/ns#" term="acer liquid stream" /><category scheme="http://www.blogger.com/atom/ns#" term="acer liquid" /><category scheme="http://www.blogger.com/atom/ns#" term="demo" /><category scheme="http://www.blogger.com/atom/ns#" term="acer" /><category scheme="http://www.blogger.com/atom/ns#" term="android 2.1" /><category scheme="http://www.blogger.com/atom/ns#" term="android" /><title>Acer Liquid Stream: I wanna have one!</title><content type="html">
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/J3w8OcISbGLo0Kzm9A8LCUfZ1eY/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/J3w8OcISbGLo0Kzm9A8LCUfZ1eY/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/J3w8OcISbGLo0Kzm9A8LCUfZ1eY/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/J3w8OcISbGLo0Kzm9A8LCUfZ1eY/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;object width="500" height="325"&gt;&lt;param name="allowfullscreen" value="true" /&gt;&lt;param name="allowscriptaccess" value="always" /&gt;&lt;param name="movie" value="http://vimeo.com/moogaloop.swf?clip_id=12066497&amp;amp;server=vimeo.com&amp;amp;show_title=1&amp;amp;show_byline=1&amp;amp;show_portrait=0&amp;amp;color=&amp;amp;fullscreen=1" /&gt;&lt;embed src="http://vimeo.com/moogaloop.swf?clip_id=12066497&amp;amp;server=vimeo.com&amp;amp;show_title=1&amp;amp;show_byline=1&amp;amp;show_portrait=0&amp;amp;color=&amp;amp;fullscreen=1" type="application/x-shockwave-flash" allowfullscreen="true" allowscriptaccess="always" width="500" height="325"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;
&lt;br /&gt;
Put your hands together for Acer's new Liquid Stream phone. This is a really cool multimedia-oriented smartphone. I would really love to get my hands on this gem!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2809297633566666445-1666512242904508792?l=allisterx.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/AllisterOnWebMobileSoftware/~4/_OWGSYfpJ8A" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://allisterx.blogspot.com/feeds/1666512242904508792/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=2809297633566666445&amp;postID=1666512242904508792" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2809297633566666445/posts/default/1666512242904508792?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2809297633566666445/posts/default/1666512242904508792?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/AllisterOnWebMobileSoftware/~3/_OWGSYfpJ8A/acer-liquid-stream-i-wanna-have-one.html" title="Acer Liquid Stream: I wanna have one!" /><author><name>Allister</name><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://2.bp.blogspot.com/_y1ZYsD4ubm0/ScIUPiwP7xI/AAAAAAAADvk/SQU1pmDEb7M/S220/me_at_golfe_juan.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://allisterx.blogspot.com/2010/05/acer-liquid-stream-i-wanna-have-one.html</feedburner:origLink></entry><entry gd:etag="W/&quot;C0QCR3kyeip7ImA9WxFQGU0.&quot;"><id>tag:blogger.com,1999:blog-2809297633566666445.post-520972076954893800</id><published>2010-05-15T07:28:00.001+02:00</published><updated>2010-05-15T07:29:26.792+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-05-15T07:29:26.792+02:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="javascript" /><category scheme="http://www.blogger.com/atom/ns#" term="c++" /><category scheme="http://www.blogger.com/atom/ns#" term="nacl" /><category scheme="http://www.blogger.com/atom/ns#" term="sdk" /><category scheme="http://www.blogger.com/atom/ns#" term="native client" /><category scheme="http://www.blogger.com/atom/ns#" term="client-side code" /><category scheme="http://www.blogger.com/atom/ns#" term="c" /><category scheme="http://www.blogger.com/atom/ns#" term="google" /><category scheme="http://www.blogger.com/atom/ns#" term="google chrome" /><title>Google's Native Client SDK</title><content type="html">
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/GLJIM1kAO59WQplftTcEDhMa5jI/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/GLJIM1kAO59WQplftTcEDhMa5jI/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/GLJIM1kAO59WQplftTcEDhMa5jI/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/GLJIM1kAO59WQplftTcEDhMa5jI/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;object height="385" width="5000"&gt;&lt;param name="movie" value="http://www.youtube.com/v/nP8Mo0jGQDk&amp;amp;rel=0&amp;amp;color1=0xb1b1b1&amp;amp;color2=0xd0d0d0&amp;amp;hl=en_US&amp;amp;feature=player_embedded&amp;amp;fs=1"&gt;&lt;/param&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;/param&gt;&lt;param name="allowScriptAccess" value="always"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/nP8Mo0jGQDk&amp;amp;rel=0&amp;amp;color1=0xb1b1b1&amp;amp;color2=0xd0d0d0&amp;amp;hl=en_US&amp;amp;feature=player_embedded&amp;amp;fs=1" type="application/x-shockwave-flash" allowfullscreen="true" allowScriptAccess="always" width="500" height="385"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;
&lt;br /&gt;
One way to speed up web applications is to move part of the application logic from the server into the client. This is made popular with the AJAX approach.&amp;nbsp; However, due to the nature of JavaScript, this approach has inherent limitation in terms of speed. So, to enable faster code on the client side, why not use C/C++ code that can be called by JavaScript?&amp;nbsp; That's the idea behind the Google Native Client SDK. For the moment, this is only possible with the Chrome browser.&lt;br /&gt;
&lt;br /&gt;
Think of playing fast 3D games on your browser. Interested? Check out the NaCl SDK project page: &lt;a href="http://code.google.com/p/nativeclient-sdk/"&gt;http://code.google.com/p/nativeclient-sdk/&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;i&gt;Related reading(s):&lt;/i&gt;&lt;br /&gt;
&lt;a href="http://www.amazon.com/JavaScript-Definitive-Guide-David-Flanagan/dp/0596101996?ie=UTF8&amp;amp;tag=andrgamedeve-20&amp;amp;link_code=bil&amp;amp;camp=213689&amp;amp;creative=392969" imageanchor="1" target="_blank"&gt;&lt;img alt="JavaScript: The Definitive Guide" src="http://ws.amazon.com/widgets/q?MarketPlace=US&amp;amp;ServiceVersion=20070822&amp;amp;ID=AsinImage&amp;amp;WS=1&amp;amp;Format=_SL160_&amp;amp;ASIN=0596101996&amp;amp;tag=andrgamedeve-20" /&gt;&lt;/a&gt;&lt;img alt="" border="0" height="1" src="http://www.assoc-amazon.com/e/ir?t=andrgamedeve-20&amp;amp;l=bil&amp;amp;camp=213689&amp;amp;creative=392969&amp;amp;o=1&amp;amp;a=0596101996" style="border: medium none ! important; margin: 0px ! important; padding: 0px ! important;" width="1" /&gt; &lt;a href="http://www.amazon.com/Programming-Language-2nd-Brian-Kernighan/dp/0131103628?ie=UTF8&amp;amp;tag=andrgamedeve-20&amp;amp;link_code=bil&amp;amp;camp=213689&amp;amp;creative=392969" imageanchor="1" target="_blank"&gt;&lt;img alt="C Programming Language (2nd Edition)" src="http://ws.amazon.com/widgets/q?MarketPlace=US&amp;amp;ServiceVersion=20070822&amp;amp;ID=AsinImage&amp;amp;WS=1&amp;amp;Format=_SL160_&amp;amp;ASIN=0131103628&amp;amp;tag=andrgamedeve-20" /&gt;&lt;/a&gt;&lt;img alt="" border="0" height="1" src="http://www.assoc-amazon.com/e/ir?t=andrgamedeve-20&amp;amp;l=bil&amp;amp;camp=213689&amp;amp;creative=392969&amp;amp;o=1&amp;amp;a=0131103628" style="border: medium none ! important; margin: 0px ! important; padding: 0px ! important;" width="1" /&gt; &lt;a href="http://www.amazon.com/Programming-Principles-Practice-Using-C/dp/0321543726?ie=UTF8&amp;amp;tag=andrgamedeve-20&amp;amp;link_code=bil&amp;amp;camp=213689&amp;amp;creative=392969" imageanchor="1" target="_blank"&gt;&lt;img alt="Programming: Principles and Practice Using C++" src="http://ws.amazon.com/widgets/q?MarketPlace=US&amp;amp;ServiceVersion=20070822&amp;amp;ID=AsinImage&amp;amp;WS=1&amp;amp;Format=_SL160_&amp;amp;ASIN=0321543726&amp;amp;tag=andrgamedeve-20" /&gt;&lt;/a&gt;&lt;img alt="" border="0" height="1" src="http://www.assoc-amazon.com/e/ir?t=andrgamedeve-20&amp;amp;l=bil&amp;amp;camp=213689&amp;amp;creative=392969&amp;amp;o=1&amp;amp;a=0321543726" style="border: medium none ! important; margin: 0px ! important; padding: 0px ! important;" width="1" /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2809297633566666445-520972076954893800?l=allisterx.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/AllisterOnWebMobileSoftware/~4/XPxhofDgWWQ" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://allisterx.blogspot.com/feeds/520972076954893800/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=2809297633566666445&amp;postID=520972076954893800" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2809297633566666445/posts/default/520972076954893800?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2809297633566666445/posts/default/520972076954893800?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/AllisterOnWebMobileSoftware/~3/XPxhofDgWWQ/googles-native-client-sdk.html" title="Google's Native Client SDK" /><author><name>Allister</name><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://2.bp.blogspot.com/_y1ZYsD4ubm0/ScIUPiwP7xI/AAAAAAAADvk/SQU1pmDEb7M/S220/me_at_golfe_juan.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://allisterx.blogspot.com/2010/05/googles-native-client-sdk.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DkUAQHk_eyp7ImA9WxFTEkk.&quot;"><id>tag:blogger.com,1999:blog-2809297633566666445.post-3141816704139649530</id><published>2010-04-02T23:36:00.001+02:00</published><updated>2010-04-02T23:37:21.743+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-04-02T23:37:21.743+02:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="blog" /><category scheme="http://www.blogger.com/atom/ns#" term="Blogger" /><category scheme="http://www.blogger.com/atom/ns#" term="fixed background" /><category scheme="http://www.blogger.com/atom/ns#" term="template designer" /><category scheme="http://www.blogger.com/atom/ns#" term="templates" /><category scheme="http://www.blogger.com/atom/ns#" term="background" /><category scheme="http://www.blogger.com/atom/ns#" term="html" /><category scheme="http://www.blogger.com/atom/ns#" term="css" /><title>Fixed web page background with CSS</title><content type="html">
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/RMLcEOqLSyj4Vg_12Kn7B8ZfUBs/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/RMLcEOqLSyj4Vg_12Kn7B8ZfUBs/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/RMLcEOqLSyj4Vg_12Kn7B8ZfUBs/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/RMLcEOqLSyj4Vg_12Kn7B8ZfUBs/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;The other day I had a little problem because I have a photo that's big enough for a blog (on Blogger) background and I wanted to use it. &amp;nbsp;The first thing I noticed is that by default it moves with the rest of the page when you scroll it with either the mouse or the keyboard. &amp;nbsp;So here's what I did (from within the new &lt;a href="http://bloggerindraft.blogspot.com/2010/03/blogger-template-designer.html"&gt;Blogger Template Designer&lt;/a&gt;) to keep the background from moving with the rest of the page.&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_y1ZYsD4ubm0/S7ZgNzU3ygI/AAAAAAAAERU/jDKZvZmXQTw/s1600/blogger_advanced_css.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://3.bp.blogspot.com/_y1ZYsD4ubm0/S7ZgNzU3ygI/AAAAAAAAERU/jDKZvZmXQTw/s320/blogger_advanced_css.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
If you're not using Blogger, you can do similarly in the CSS file:&lt;br /&gt;
&lt;br /&gt;
&lt;pre class="brush: css"&gt;/* myclass.css */
.aClassName {
&amp;nbsp;&amp;nbsp; background-attachment: fixed;
}&lt;/pre&gt;&lt;br /&gt;
And in your blog page's HTML template header, you include this:&lt;br /&gt;
&lt;br /&gt;
&lt;pre class="brush: html"&gt;&amp;lt;!-- E.g. in template.html --&amp;gt;
&amp;lt;link type="text/css" rel="stylesheet" href="myclass.css" media="screen" /&amp;gt;
&lt;/pre&gt;&lt;br /&gt;
With this, your background image will no longer move with the rest of your webpage.&lt;br /&gt;
&lt;br /&gt;
Related reading(s):&lt;br /&gt;
&lt;a href="http://www.amazon.com/HTML-XHTML-Sixth-Elizabeth-Castro/dp/0321430840?ie=UTF8&amp;amp;tag=andrgamedeve-20&amp;amp;link_code=bil&amp;amp;camp=213689&amp;amp;creative=392969" imageanchor="1" target="_blank"&gt;&lt;img alt="HTML, XHTML, and CSS, Sixth Edition" src="http://ws.amazon.com/widgets/q?MarketPlace=US&amp;amp;ServiceVersion=20070822&amp;amp;ID=AsinImage&amp;amp;WS=1&amp;amp;Format=_SL160_&amp;amp;ASIN=0321430840&amp;amp;tag=andrgamedeve-20" /&gt;&lt;/a&gt;&lt;img alt="" border="0" height="1" src="http://www.assoc-amazon.com/e/ir?t=andrgamedeve-20&amp;amp;l=bil&amp;amp;camp=213689&amp;amp;creative=392969&amp;amp;o=1&amp;amp;a=0321430840" style="border: none !important; margin: 0px !important; padding: 0px !important;" width="1" /&gt;&amp;nbsp;&lt;a href="http://www.amazon.com/Google-Blogger-Dummies-Susan-Gunelius/dp/0470407425?ie=UTF8&amp;amp;tag=andrgamedeve-20&amp;amp;link_code=bil&amp;amp;camp=213689&amp;amp;creative=392969" imageanchor="1" target="_blank"&gt;&lt;img alt="Google Blogger For Dummies" src="http://ws.amazon.com/widgets/q?MarketPlace=US&amp;amp;ServiceVersion=20070822&amp;amp;ID=AsinImage&amp;amp;WS=1&amp;amp;Format=_SL160_&amp;amp;ASIN=0470407425&amp;amp;tag=andrgamedeve-20" /&gt;&lt;/a&gt;&lt;img alt="" border="0" height="1" src="http://www.assoc-amazon.com/e/ir?t=andrgamedeve-20&amp;amp;l=bil&amp;amp;camp=213689&amp;amp;creative=392969&amp;amp;o=1&amp;amp;a=0470407425" style="border: none !important; margin: 0px !important; padding: 0px !important;" width="1" /&gt;&amp;nbsp;&amp;nbsp;&lt;a href="http://www.amazon.com/Creating-Websites-Blogger-Clarence-Galapon/dp/055706645X?ie=UTF8&amp;amp;tag=andrgamedeve-20&amp;amp;link_code=bil&amp;amp;camp=213689&amp;amp;creative=392969" imageanchor="1" target="_blank"&gt;&lt;img alt="Creating Unique Websites With Blogger" src="http://ws.amazon.com/widgets/q?MarketPlace=US&amp;amp;ServiceVersion=20070822&amp;amp;ID=AsinImage&amp;amp;WS=1&amp;amp;Format=_SL160_&amp;amp;ASIN=055706645X&amp;amp;tag=andrgamedeve-20" /&gt;&lt;/a&gt;&lt;img alt="" border="0" height="1" src="http://www.assoc-amazon.com/e/ir?t=andrgamedeve-20&amp;amp;l=bil&amp;amp;camp=213689&amp;amp;creative=392969&amp;amp;o=1&amp;amp;a=055706645X" style="border: none !important; margin: 0px !important; padding: 0px !important;" width="1" /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2809297633566666445-3141816704139649530?l=allisterx.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/AllisterOnWebMobileSoftware/~4/tu6w5X4AOZs" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://allisterx.blogspot.com/feeds/3141816704139649530/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=2809297633566666445&amp;postID=3141816704139649530" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2809297633566666445/posts/default/3141816704139649530?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2809297633566666445/posts/default/3141816704139649530?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/AllisterOnWebMobileSoftware/~3/tu6w5X4AOZs/fixed-web-page-background-with-css.html" title="Fixed web page background with CSS" /><author><name>Allister</name><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://2.bp.blogspot.com/_y1ZYsD4ubm0/ScIUPiwP7xI/AAAAAAAADvk/SQU1pmDEb7M/S220/me_at_golfe_juan.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://3.bp.blogspot.com/_y1ZYsD4ubm0/S7ZgNzU3ygI/AAAAAAAAERU/jDKZvZmXQTw/s72-c/blogger_advanced_css.png" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://allisterx.blogspot.com/2010/04/fixed-web-page-background-with-css.html</feedburner:origLink></entry><entry gd:etag="W/&quot;A0YHQno8cCp7ImA9WxBaFkk.&quot;"><id>tag:blogger.com,1999:blog-2809297633566666445.post-357728482387949220</id><published>2010-03-27T01:01:00.005+01:00</published><updated>2010-03-27T01:18:53.478+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-03-27T01:18:53.478+01:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="javascript" /><category scheme="http://www.blogger.com/atom/ns#" term="blogging tools" /><category scheme="http://www.blogger.com/atom/ns#" term="code" /><category scheme="http://www.blogger.com/atom/ns#" term="alex gorbatchev" /><category scheme="http://www.blogger.com/atom/ns#" term="syntaxhighlighter" /><category scheme="http://www.blogger.com/atom/ns#" term="syntax highlight" /><category scheme="http://www.blogger.com/atom/ns#" term="carter cole" /><title>Code syntax highlighting</title><content type="html">
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/ItFXgcptg4V9wsymU3Qecw4DSq8/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/ItFXgcptg4V9wsymU3Qecw4DSq8/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/ItFXgcptg4V9wsymU3Qecw4DSq8/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/ItFXgcptg4V9wsymU3Qecw4DSq8/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;My main complaint with most blogs is that it's very tedious writing lines of code. &amp;nbsp;Then I found Alex Gorbatchev's &lt;a href="http://alexgorbatchev.com/wiki/SyntaxHighlighter"&gt;SyntaxHighlighter&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;pre class="brush: cpp"&gt;#include &amp;lt;iostream&amp;gt;

int main() {
&amp;nbsp;&amp;nbsp; &amp;nbsp;std::cout &amp;lt;&amp;lt; "Hello, syntax highlights!" &amp;lt;&amp;lt; std::endl;
&amp;nbsp;&amp;nbsp; &amp;nbsp;return 0;
}&lt;/pre&gt;&lt;br /&gt;
See how wonderful it is?! &amp;nbsp;Now this syntax highlighter not only makes my blogging life easier, it also supports the highlighting of several programming languages! &amp;nbsp;As of this writing here are the supported languages:&amp;nbsp;C/C++, C#, CSS, Java, JavaScript, PHP, Python, Ruby, SQL, VB, XML, and Perl.&lt;br /&gt;
&lt;br /&gt;
It is very easy to setup. &amp;nbsp;It is of course implemented using JavaScript and you'll have to put the script somewhere. &amp;nbsp;But even if you don't have a web server to upload it to, you can simply use the ones in Alex Gorbatchev's website, just like I did! &amp;nbsp;Thanks also to Carter Cole for posting on his blog &lt;a href="http://blog.cartercole.com/2009/10/awesome-syntax-highlighting-made-easy.html"&gt;a quick guide&lt;/a&gt; on how to do it.&lt;br /&gt;
&lt;br /&gt;
Related reading(s):&lt;br /&gt;
&lt;br /&gt;
&lt;a href="http://www.amazon.com/JavaScript-Definitive-Guide-David-Flanagan/dp/0596101996?ie=UTF8&amp;amp;tag=andrgamedeve-20&amp;amp;link_code=bil&amp;amp;camp=213689&amp;amp;creative=392969" imageanchor="1" target="_blank"&gt;&lt;img alt="JavaScript: The Definitive Guide" src="http://ws.amazon.com/widgets/q?MarketPlace=US&amp;amp;ServiceVersion=20070822&amp;amp;ID=AsinImage&amp;amp;WS=1&amp;amp;Format=_SL160_&amp;amp;ASIN=0596101996&amp;amp;tag=andrgamedeve-20" /&gt;&lt;/a&gt;&lt;img alt="" border="0" height="1" src="http://www.assoc-amazon.com/e/ir?t=andrgamedeve-20&amp;amp;l=bil&amp;amp;camp=213689&amp;amp;creative=392969&amp;amp;o=1&amp;amp;a=0596101996" style="border: none !important; margin: 0px !important; padding: 0px !important;" width="1" /&gt;&amp;nbsp;&lt;a href="http://www.amazon.com/JavaScript-Beginners-Guide-Osborne-Mcgraw/dp/0071632956?ie=UTF8&amp;amp;tag=andrgamedeve-20&amp;amp;link_code=bil&amp;amp;camp=213689&amp;amp;creative=392969" imageanchor="1" target="_blank"&gt;&lt;img alt="JavaScript, A Beginner's Guide, Third Edition (Beginner's Guide (Osborne Mcgraw Hill))" src="http://ws.amazon.com/widgets/q?MarketPlace=US&amp;amp;ServiceVersion=20070822&amp;amp;ID=AsinImage&amp;amp;WS=1&amp;amp;Format=_SL160_&amp;amp;ASIN=0071632956&amp;amp;tag=andrgamedeve-20" /&gt;&lt;/a&gt;&lt;img alt="" border="0" height="1" src="http://www.assoc-amazon.com/e/ir?t=andrgamedeve-20&amp;amp;l=bil&amp;amp;camp=213689&amp;amp;creative=392969&amp;amp;o=1&amp;amp;a=0071632956" style="border: none !important; margin: 0px !important; padding: 0px !important;" width="1" /&gt;&amp;nbsp;&lt;a href="http://www.amazon.com/Professional-JavaScript-Developers-Wrox-Programmer/dp/047022780X?ie=UTF8&amp;amp;tag=andrgamedeve-20&amp;amp;link_code=bil&amp;amp;camp=213689&amp;amp;creative=392969" imageanchor="1" target="_blank"&gt;&lt;img alt="Professional JavaScript for Web Developers (Wrox Programmer to Programmer)" src="http://ws.amazon.com/widgets/q?MarketPlace=US&amp;amp;ServiceVersion=20070822&amp;amp;ID=AsinImage&amp;amp;WS=1&amp;amp;Format=_SL160_&amp;amp;ASIN=047022780X&amp;amp;tag=andrgamedeve-20" /&gt;&lt;/a&gt;&lt;img alt="" border="0" height="1" src="http://www.assoc-amazon.com/e/ir?t=andrgamedeve-20&amp;amp;l=bil&amp;amp;camp=213689&amp;amp;creative=392969&amp;amp;o=1&amp;amp;a=047022780X" style="border: none !important; margin: 0px !important; padding: 0px !important;" width="1" /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2809297633566666445-357728482387949220?l=allisterx.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/AllisterOnWebMobileSoftware/~4/jEnrzyqlBYU" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://allisterx.blogspot.com/feeds/357728482387949220/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=2809297633566666445&amp;postID=357728482387949220" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2809297633566666445/posts/default/357728482387949220?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2809297633566666445/posts/default/357728482387949220?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/AllisterOnWebMobileSoftware/~3/jEnrzyqlBYU/code-syntax-highlighting.html" title="Code syntax highlighting" /><author><name>Allister</name><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://2.bp.blogspot.com/_y1ZYsD4ubm0/ScIUPiwP7xI/AAAAAAAADvk/SQU1pmDEb7M/S220/me_at_golfe_juan.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://allisterx.blogspot.com/2010/03/code-syntax-highlighting.html</feedburner:origLink></entry><entry gd:etag="W/&quot;AkYFRXg5eyp7ImA9WxBaE0U.&quot;"><id>tag:blogger.com,1999:blog-2809297633566666445.post-8073091535019151347</id><published>2010-03-24T00:39:00.002+01:00</published><updated>2010-03-24T00:48:34.623+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-03-24T00:48:34.623+01:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="c++" /><category scheme="http://www.blogger.com/atom/ns#" term="g++ 4" /><category scheme="http://www.blogger.com/atom/ns#" term="g++" /><category scheme="http://www.blogger.com/atom/ns#" term="gcc" /><category scheme="http://www.blogger.com/atom/ns#" term="compilation" /><category scheme="http://www.blogger.com/atom/ns#" term="gcc 4" /><title>Migrating from GCC 3 to GCC 4</title><content type="html">
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/R9BFygvi3QjwfO0a6rdiaGyrUf0/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/R9BFygvi3QjwfO0a6rdiaGyrUf0/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/R9BFygvi3QjwfO0a6rdiaGyrUf0/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/R9BFygvi3QjwfO0a6rdiaGyrUf0/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;I'm currently migrating some of our server code from &lt;a href="http://gcc.gnu.org/"&gt;gcc&lt;/a&gt; 3.4.2 to gcc 4.3.2 and I found some compilation issues. &amp;nbsp;I highlight in red what must be avoided, and in&amp;nbsp;yellow what must be used instead.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Declaration of friend functions&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
In header:&lt;br /&gt;
namespace NS {&lt;br /&gt;
class A {&lt;br /&gt;
public:&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;A();&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;...&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;friend std::ostream&amp;amp; operator &amp;lt;&amp;lt; (std::ostream &amp;amp;, const A &amp;amp;);&lt;br /&gt;
private:&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;int _data;&lt;br /&gt;
}; // A&lt;br /&gt;
&lt;br /&gt;
&lt;span class="Apple-style-span" style="background-color: yellow;"&gt;std::ostream&amp;amp; operator &amp;lt;&amp;lt; (std::ostream &amp;amp;, const A &amp;amp;);&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
} // NS&lt;br /&gt;
&lt;br /&gt;
In implementation:&lt;br /&gt;
std::ostream&amp;amp; NS::operator&amp;lt;&amp;lt;(std::ostream &amp;amp; ostr, const A &amp;amp; a)&lt;br /&gt;
{&lt;br /&gt;
ostr &amp;lt;&amp;lt; a._data;&lt;br /&gt;
return ostr;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Setting a default value for a reference function parameter&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
long int NULL = 0; // defined somewhere&lt;br /&gt;
&lt;br /&gt;
In A.h:&lt;br /&gt;
class A {&lt;br /&gt;
public:&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;span class="Apple-style-span" style="background-color: #f4cccc;"&gt;A(B* &amp;amp; b = NULL) : _b (b) {} // this is not allowed due to type mismatch&lt;/span&gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;span class="Apple-style-span" style="background-color: yellow;"&gt;A(B* &amp;amp; b = A::null_ptr) : _b (b) {}&lt;/span&gt;&lt;br /&gt;
private:&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;span class="Apple-style-span" style="background-color: yellow;"&gt;static B* null_ptr;&lt;/span&gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;B * _b;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
In A.cpp:&lt;br /&gt;
&lt;span class="Apple-style-span" style="background-color: yellow;"&gt;B* A::null_ptr = 0;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Unnecessary qualification of a member&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
class A {&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;span class="Apple-style-span" style="background-color: #f4cccc;"&gt;A::func();&lt;/span&gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;span class="Apple-style-span" style="background-color: yellow;"&gt;func();&lt;/span&gt;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
&lt;i&gt;What about you? &amp;nbsp;What other GCC 3 to GCC 4 migration issues have you found?&lt;/i&gt;&lt;br /&gt;
&lt;br /&gt;
Related reading(s):&lt;br /&gt;
&lt;a href="http://www.amazon.com/Using-Gnu-Compiler-Collection-Version/dp/144141276X?ie=UTF8&amp;amp;tag=andrgamedeve-20&amp;amp;link_code=bil&amp;amp;camp=213689&amp;amp;creative=392969" imageanchor="1" target="_blank"&gt;&lt;img alt="Using The Gnu Compiler Collection: A Gnu Manual For Gcc Version 4.3.3" src="http://ws.amazon.com/widgets/q?MarketPlace=US&amp;amp;ServiceVersion=20070822&amp;amp;ID=AsinImage&amp;amp;WS=1&amp;amp;Format=_SL160_&amp;amp;ASIN=144141276X&amp;amp;tag=andrgamedeve-20" /&gt;&lt;/a&gt;&lt;img alt="" border="0" height="1" src="http://www.assoc-amazon.com/e/ir?t=andrgamedeve-20&amp;amp;l=bil&amp;amp;camp=213689&amp;amp;creative=392969&amp;amp;o=1&amp;amp;a=144141276X" style="border: none !important; margin: 0px !important; padding: 0px !important;" width="1" /&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;a href="http://www.amazon.com/Definitive-Guide-GCC-Second/dp/1590595858?ie=UTF8&amp;amp;tag=andrgamedeve-20&amp;amp;link_code=bil&amp;amp;camp=213689&amp;amp;creative=392969" imageanchor="1" target="_blank"&gt;&lt;img alt="The Definitive Guide to GCC, Second Edition" src="http://ws.amazon.com/widgets/q?MarketPlace=US&amp;amp;ServiceVersion=20070822&amp;amp;ID=AsinImage&amp;amp;WS=1&amp;amp;Format=_SL160_&amp;amp;ASIN=1590595858&amp;amp;tag=andrgamedeve-20" /&gt;&lt;/a&gt;&lt;img alt="" border="0" height="1" src="http://www.assoc-amazon.com/e/ir?t=andrgamedeve-20&amp;amp;l=bil&amp;amp;camp=213689&amp;amp;creative=392969&amp;amp;o=1&amp;amp;a=1590595858" style="border: none !important; margin: 0px !important; padding: 0px !important;" width="1" /&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;a href="http://www.amazon.com/Introduction-GCC-Brian-J-Gough/dp/0954161793?ie=UTF8&amp;amp;tag=andrgamedeve-20&amp;amp;link_code=bil&amp;amp;camp=213689&amp;amp;creative=392969" imageanchor="1" target="_blank"&gt;&lt;img alt="An Introduction to GCC" src="http://ws.amazon.com/widgets/q?MarketPlace=US&amp;amp;ServiceVersion=20070822&amp;amp;ID=AsinImage&amp;amp;WS=1&amp;amp;Format=_SL160_&amp;amp;ASIN=0954161793&amp;amp;tag=andrgamedeve-20" /&gt;&lt;/a&gt;&lt;img alt="" border="0" height="1" src="http://www.assoc-amazon.com/e/ir?t=andrgamedeve-20&amp;amp;l=bil&amp;amp;camp=213689&amp;amp;creative=392969&amp;amp;o=1&amp;amp;a=0954161793" style="border: none !important; margin: 0px !important; padding: 0px !important;" width="1" /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2809297633566666445-8073091535019151347?l=allisterx.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/AllisterOnWebMobileSoftware/~4/SFB7hlSoZzw" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://allisterx.blogspot.com/feeds/8073091535019151347/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=2809297633566666445&amp;postID=8073091535019151347" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2809297633566666445/posts/default/8073091535019151347?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2809297633566666445/posts/default/8073091535019151347?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/AllisterOnWebMobileSoftware/~3/SFB7hlSoZzw/migrating-from-gcc-3-to-gcc-4.html" title="Migrating from GCC 3 to GCC 4" /><author><name>Allister</name><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://2.bp.blogspot.com/_y1ZYsD4ubm0/ScIUPiwP7xI/AAAAAAAADvk/SQU1pmDEb7M/S220/me_at_golfe_juan.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://allisterx.blogspot.com/2010/03/migrating-from-gcc-3-to-gcc-4.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DUEER3g7eSp7ImA9WxBbGUU.&quot;"><id>tag:blogger.com,1999:blog-2809297633566666445.post-9140977011759113137</id><published>2010-03-19T09:15:00.005+01:00</published><updated>2010-03-19T09:33:26.601+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-03-19T09:33:26.601+01:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="makefile" /><category scheme="http://www.blogger.com/atom/ns#" term="building software" /><category scheme="http://www.blogger.com/atom/ns#" term="parallel software build" /><category scheme="http://www.blogger.com/atom/ns#" term="parallel" /><title>Makefiles for building software in parallel</title><content type="html">
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/7dFdK5-_FBoo-uB_Ddp6sEHObiU/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/7dFdK5-_FBoo-uB_Ddp6sEHObiU/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/7dFdK5-_FBoo-uB_Ddp6sEHObiU/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/7dFdK5-_FBoo-uB_Ddp6sEHObiU/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;The majority of software packages that I have used or developed are built from source code using Makefiles. &amp;nbsp;It is so much a part of the development process that I almost take it for granted. &amp;nbsp;At work (my day job) I often build an application with a lot of dependencies (as shown in the figure below) and my laziness finally got to me yesterday: I want those packages to be built, as much as possible, in parallel.&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_y1ZYsD4ubm0/S6Msv_OqMwI/AAAAAAAAEPk/XHPwHJL5a_0/s1600-h/package_dependencies_for_parallel_build.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://3.bp.blogspot.com/_y1ZYsD4ubm0/S6Msv_OqMwI/AAAAAAAAEPk/XHPwHJL5a_0/s320/package_dependencies_for_parallel_build.jpg" /&gt;&lt;/a&gt;&lt;/div&gt;As you can see, the application APP depends on packages A, B, C, ..., K. &amp;nbsp;At first I would just build them sequentially from A to K before I build APP. &amp;nbsp;Then, feeling that I'm wasting too much time, I would open several command-line terminals to build B, C, D, E simultaneously. &amp;nbsp;But now I'm tired of losing time just because I forgot to build, say, package G and I after F finished.&lt;br /&gt;
&lt;br /&gt;
Fortunately, there are good forums online and somebody reminded me that in fact a simple Makefile, explicitly processed in parallel (with, say, the option -j 4), would actually solve my problem. &amp;nbsp;So here's the basic structure for the Makefile I made:&lt;br /&gt;
&lt;br /&gt;
&lt;code&gt;&lt;/code&gt;&lt;br /&gt;
&lt;code&gt;&lt;pre&gt;# Makefile
.PHONY: all A B C D E F G H I J K

all: H I C D K
    cd APP &amp;amp;&amp;amp; make

A:
    cd A &amp;amp;&amp;amp; make

B: A
    cd B &amp;amp;&amp;amp; make

C: A
    cd C &amp;amp;&amp;amp; make

D: A
    cd D &amp;amp;&amp;amp; make

E: A
    cd E &amp;amp;&amp;amp; make

F: B
    cd F &amp;amp;&amp;amp; make

G: F
    cd G &amp;amp;&amp;amp; make

H: G
    cd H &amp;amp;&amp;amp; make

I: F
    cd I &amp;amp;&amp;amp; make

J: E
    cd J &amp;amp;&amp;amp; make

K: J
    cd K &amp;amp;&amp;amp; make&lt;/pre&gt;&lt;/code&gt;&lt;br /&gt;
&lt;br /&gt;
Then I simply run the whole build with &lt;code&gt;make -j 4&lt;/code&gt;. &amp;nbsp;So now, assuming that there were no compilation or linking problems, my work is now a lot easier.&lt;br /&gt;
&lt;br /&gt;
&lt;i&gt;What about you? Do you have better ideas about parallel software builds?&lt;/i&gt;&lt;br /&gt;
&lt;br /&gt;
Related Reading(s):&lt;br /&gt;
&lt;a href="http://www.amazon.com/GNU-Make-Program-Directed-Compilation/dp/1882114825?ie=UTF8&amp;amp;tag=andrgamedeve-20&amp;amp;link_code=bil&amp;amp;camp=213689&amp;amp;creative=392969" imageanchor="1" target="_blank"&gt;&lt;img alt="GNU Make: A Program for Directed Compilation" src="http://ws.amazon.com/widgets/q?MarketPlace=US&amp;amp;ServiceVersion=20070822&amp;amp;ID=AsinImage&amp;amp;WS=1&amp;amp;Format=_SL160_&amp;amp;ASIN=1882114825&amp;amp;tag=andrgamedeve-20" /&gt;&lt;/a&gt;&lt;img alt="" border="0" height="1" src="http://www.assoc-amazon.com/e/ir?t=andrgamedeve-20&amp;amp;l=bil&amp;amp;camp=213689&amp;amp;creative=392969&amp;amp;o=1&amp;amp;a=1882114825" style="border: none !important; margin: 0px !important; padding: 0px !important;" width="1" /&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;a href="http://www.amazon.com/Managing-Projects-Make-Nutshell-Handbooks/dp/0596006101?ie=UTF8&amp;amp;tag=andrgamedeve-20&amp;amp;link_code=bil&amp;amp;camp=213689&amp;amp;creative=392969" imageanchor="1" target="_blank"&gt;&lt;img alt="Managing Projects with GNU Make (Nutshell Handbooks)" src="http://ws.amazon.com/widgets/q?MarketPlace=US&amp;amp;ServiceVersion=20070822&amp;amp;ID=AsinImage&amp;amp;WS=1&amp;amp;Format=_SL160_&amp;amp;ASIN=0596006101&amp;amp;tag=andrgamedeve-20" /&gt;&lt;/a&gt;&lt;img alt="" border="0" height="1" src="http://www.assoc-amazon.com/e/ir?t=andrgamedeve-20&amp;amp;l=bil&amp;amp;camp=213689&amp;amp;creative=392969&amp;amp;o=1&amp;amp;a=0596006101" style="border: none !important; margin: 0px !important; padding: 0px !important;" width="1" /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2809297633566666445-9140977011759113137?l=allisterx.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/AllisterOnWebMobileSoftware/~4/OtsRfmMmQzQ" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://allisterx.blogspot.com/feeds/9140977011759113137/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=2809297633566666445&amp;postID=9140977011759113137" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2809297633566666445/posts/default/9140977011759113137?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2809297633566666445/posts/default/9140977011759113137?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/AllisterOnWebMobileSoftware/~3/OtsRfmMmQzQ/makefiles-for-building-software-in.html" title="Makefiles for building software in parallel" /><author><name>Allister</name><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://2.bp.blogspot.com/_y1ZYsD4ubm0/ScIUPiwP7xI/AAAAAAAADvk/SQU1pmDEb7M/S220/me_at_golfe_juan.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://3.bp.blogspot.com/_y1ZYsD4ubm0/S6Msv_OqMwI/AAAAAAAAEPk/XHPwHJL5a_0/s72-c/package_dependencies_for_parallel_build.jpg" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://allisterx.blogspot.com/2010/03/makefiles-for-building-software-in.html</feedburner:origLink></entry><entry gd:etag="W/&quot;A04FQn89eyp7ImA9WxBbGU0.&quot;"><id>tag:blogger.com,1999:blog-2809297633566666445.post-2865365091043147119</id><published>2010-03-18T11:58:00.000+01:00</published><updated>2010-03-18T11:58:33.163+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-03-18T11:58:33.163+01:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="lawsuit" /><category scheme="http://www.blogger.com/atom/ns#" term="google" /><category scheme="http://www.blogger.com/atom/ns#" term="Apple" /><category scheme="http://www.blogger.com/atom/ns#" term="iphone" /><category scheme="http://www.blogger.com/atom/ns#" term="HTC" /><category scheme="http://www.blogger.com/atom/ns#" term="android" /><category scheme="http://www.blogger.com/atom/ns#" term="android vs iphone" /><title>Apple is now bullying Android competitors to the iPhone</title><content type="html">
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/-4LOUwekxtbtcdXMP4GO-iZKOA8/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/-4LOUwekxtbtcdXMP4GO-iZKOA8/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/-4LOUwekxtbtcdXMP4GO-iZKOA8/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/-4LOUwekxtbtcdXMP4GO-iZKOA8/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;And so it has come to this: threatened by the rising popularity of Android phones, Apple is letting loose its lawyers to do the bullying of Android phone makers. &amp;nbsp;It starts with a lawsuit against High Tech Computer (HTC), the maker of the first Android phone, the HTC Dream (also called the G1). &amp;nbsp;Naturally, &lt;a href="http://www.pcworld.com/article/191829/htc_says_will_fight_apple_lawsuit_stresses_innovations.html"&gt;HTC will fight it&lt;/a&gt; and Google has declared that it will stand by HTC, even if it's not part of the lawsuit.&lt;br /&gt;
&lt;br /&gt;
This action by Apple reminds me a bit of those bullies in school and only makes me want to buy more HTC Android products. &amp;nbsp;I will not pay the Apple tax.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2809297633566666445-2865365091043147119?l=allisterx.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/AllisterOnWebMobileSoftware/~4/bWb7LD-S1pA" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://allisterx.blogspot.com/feeds/2865365091043147119/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=2809297633566666445&amp;postID=2865365091043147119" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2809297633566666445/posts/default/2865365091043147119?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2809297633566666445/posts/default/2865365091043147119?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/AllisterOnWebMobileSoftware/~3/bWb7LD-S1pA/apple-is-now-bullying-android.html" title="Apple is now bullying Android competitors to the iPhone" /><author><name>Allister</name><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://2.bp.blogspot.com/_y1ZYsD4ubm0/ScIUPiwP7xI/AAAAAAAADvk/SQU1pmDEb7M/S220/me_at_golfe_juan.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://allisterx.blogspot.com/2010/03/apple-is-now-bullying-android.html</feedburner:origLink></entry><entry gd:etag="W/&quot;C0UEQn04eCp7ImA9WxBbFkg.&quot;"><id>tag:blogger.com,1999:blog-2809297633566666445.post-1609883993838900518</id><published>2010-03-15T12:06:00.000+01:00</published><updated>2010-03-15T12:06:43.330+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-03-15T12:06:43.330+01:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="apps marketplace" /><category scheme="http://www.blogger.com/atom/ns#" term="business apps" /><category scheme="http://www.blogger.com/atom/ns#" term="google apps" /><category scheme="http://www.blogger.com/atom/ns#" term="cloud computing" /><category scheme="http://www.blogger.com/atom/ns#" term="google" /><title>Google Apps Marketplace</title><content type="html">
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/LsBql55jcKhmF3VkfR5VNRYTrVI/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/LsBql55jcKhmF3VkfR5VNRYTrVI/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/LsBql55jcKhmF3VkfR5VNRYTrVI/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/LsBql55jcKhmF3VkfR5VNRYTrVI/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;It looks like the "apps marketplace" business model that's being used for iPhone and Android computing is now being extended into cloud computing as well. &amp;nbsp;With this I can hear the bells toll for desktop office applications. &amp;nbsp;So long, Microsoft Office -- not that I'm an avid fan.&lt;br /&gt;
&lt;br /&gt;
Here, have a look at the video about the Apps Marketplace, as presented at Google Campfire One:&lt;br /&gt;
&lt;object height="385" width="480"&gt;&lt;param name="movie" value="http://www.youtube.com/p/0C2E1DEFBC90E546&amp;amp;hl=en_US&amp;amp;fs=1"&gt;&lt;/param&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;/param&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/p/0C2E1DEFBC90E546&amp;amp;hl=en_US&amp;amp;fs=1" type="application/x-shockwave-flash" width="480" height="385" allowscriptaccess="always" allowfullscreen="true"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2809297633566666445-1609883993838900518?l=allisterx.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/AllisterOnWebMobileSoftware/~4/6HDpjP3yA5Y" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://allisterx.blogspot.com/feeds/1609883993838900518/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=2809297633566666445&amp;postID=1609883993838900518" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2809297633566666445/posts/default/1609883993838900518?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2809297633566666445/posts/default/1609883993838900518?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/AllisterOnWebMobileSoftware/~3/6HDpjP3yA5Y/google-apps-marketplace.html" title="Google Apps Marketplace" /><author><name>Allister</name><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://2.bp.blogspot.com/_y1ZYsD4ubm0/ScIUPiwP7xI/AAAAAAAADvk/SQU1pmDEb7M/S220/me_at_golfe_juan.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://allisterx.blogspot.com/2010/03/google-apps-marketplace.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DE4HQHc7fSp7ImA9WxBbFU0.&quot;"><id>tag:blogger.com,1999:blog-2809297633566666445.post-5844452231516761197</id><published>2010-03-13T20:02:00.000+01:00</published><updated>2010-03-13T20:02:11.905+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-03-13T20:02:11.905+01:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="blog" /><category scheme="http://www.blogger.com/atom/ns#" term="web design" /><category scheme="http://www.blogger.com/atom/ns#" term="Blogger" /><category scheme="http://www.blogger.com/atom/ns#" term="layout" /><category scheme="http://www.blogger.com/atom/ns#" term="templates" /><title>New Blogger template design tool</title><content type="html">
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/5gJ2-FAlUYJ3gDxlnRXaGj-LGv8/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/5gJ2-FAlUYJ3gDxlnRXaGj-LGv8/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/5gJ2-FAlUYJ3gDxlnRXaGj-LGv8/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/5gJ2-FAlUYJ3gDxlnRXaGj-LGv8/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;This is great! &amp;nbsp;Blogger templates are cool again.&lt;br /&gt;
&lt;br /&gt;
&lt;object height="344" width="425"&gt;&lt;param name="movie" value="http://www.youtube.com/v/r6haqZoivBQ&amp;amp;rel=0&amp;amp;color1=0xb1b1b1&amp;amp;color2=0xcfcfcf&amp;amp;hl=en_US&amp;amp;feature=player_embedded&amp;amp;fs=1"&gt;&lt;/param&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;/param&gt;&lt;param name="allowScriptAccess" value="always"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/r6haqZoivBQ&amp;amp;rel=0&amp;amp;color1=0xb1b1b1&amp;amp;color2=0xcfcfcf&amp;amp;hl=en_US&amp;amp;feature=player_embedded&amp;amp;fs=1" type="application/x-shockwave-flash" allowfullscreen="true" allowScriptAccess="always" width="425" height="344"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2809297633566666445-5844452231516761197?l=allisterx.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/AllisterOnWebMobileSoftware/~4/fdaazHLtAjY" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://allisterx.blogspot.com/feeds/5844452231516761197/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=2809297633566666445&amp;postID=5844452231516761197" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2809297633566666445/posts/default/5844452231516761197?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2809297633566666445/posts/default/5844452231516761197?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/AllisterOnWebMobileSoftware/~3/fdaazHLtAjY/new-blogger-template-design-tool.html" title="New Blogger template design tool" /><author><name>Allister</name><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://2.bp.blogspot.com/_y1ZYsD4ubm0/ScIUPiwP7xI/AAAAAAAADvk/SQU1pmDEb7M/S220/me_at_golfe_juan.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://allisterx.blogspot.com/2010/03/new-blogger-template-design-tool.html</feedburner:origLink></entry><entry gd:etag="W/&quot;D0EBQn4-eip7ImA9WxBVFE0.&quot;"><id>tag:blogger.com,1999:blog-2809297633566666445.post-2229496210903048563</id><published>2010-02-17T12:20:00.000+01:00</published><updated>2010-02-17T12:20:53.052+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-02-17T12:20:53.052+01:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="competition" /><category scheme="http://www.blogger.com/atom/ns#" term="android phones" /><category scheme="http://www.blogger.com/atom/ns#" term="android OS" /><category scheme="http://www.blogger.com/atom/ns#" term="marketing" /><category scheme="http://www.blogger.com/atom/ns#" term="android" /><title>Too Many Androids? I Don't Think So!</title><content type="html">
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/4mks1al1RhEw50NuY2-d_EKTyEA/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/4mks1al1RhEw50NuY2-d_EKTyEA/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/4mks1al1RhEw50NuY2-d_EKTyEA/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/4mks1al1RhEw50NuY2-d_EKTyEA/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;Yesterday, TechCrunch's&amp;nbsp;&lt;a href="http://www.washingtonpost.com/wp-dyn/content/article/2010/02/16/AR2010021603563.html"&gt;MG Siegler wrote on the Washington Post&lt;/a&gt;&amp;nbsp;about the current developments in the mobile phone market, in particular about the recent successive and competing releases of new models (from different manufacturers):&lt;/div&gt;&lt;blockquote&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;Yesterday, we saw not one, but two new sexy Android phones announced just by HTC alone. HTC, you may recall, is the manufacturer of the &lt;a href="http://www.amazon.com/Google-Nexus-One-Unlocked-Phone/dp/B00332YPHQ?ie=UTF8&amp;amp;tag=andrgamedeve-20&amp;amp;link_code=btl&amp;amp;camp=213689&amp;amp;creative=392969" target="_blank"&gt;Nexus One&lt;/a&gt;&lt;img alt="" border="0" height="1" src="http://www.assoc-amazon.com/e/ir?t=andrgamedeve-20&amp;amp;l=btl&amp;amp;camp=213689&amp;amp;creative=392969&amp;amp;o=1&amp;amp;a=B00332YPHQ" style="border: none !important; margin: 0px !important; padding: 0px !important;" width="1" /&gt;, the Android phone that Google felt so comfortable with, it decided to sell itself. Now, just over a month later, at least one of these new phones, the Desire, is simply a better version of the Nexus One. Consumers must be getting whiplash at this point.Leading up to the Nexus One launch, I wondered if Google was just eating its own dogfood (as it said) or its own children. After all, the Nexus One was launching just weeks after the Droid, Verizon's Android phone that was being marketed as the best Android out there. (And yes, an "iPhone killer".)&lt;/div&gt;&lt;/blockquote&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;I don't see a problem on this at all, except that consumers must now realize that there's no such thing as THE iPhone killer. &amp;nbsp;There are MANY iPhone killers. &amp;nbsp;Hell, there's even no point really in killing the iPhone. &amp;nbsp;It's all marketing hype.&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;As far as I'm concerned, I'll simply wait for the dust to settle on which Android phone manufacturer makes the best phones. &amp;nbsp;And I'll buy the Android phone that suits my needs. &amp;nbsp;And I really wouldn't worry too much about a new model with new nifty features. &amp;nbsp;In a few weeks time, I know that I'll be able to &lt;a href="http://www.amazon.com/Beginning-Android-Mark-Murphy/dp/1430224193?ie=UTF8&amp;amp;tag=andrgamedeve-20&amp;amp;link_code=btl&amp;amp;camp=213689&amp;amp;creative=392969" target="_blank"&gt;upgrade the Android OS&lt;/a&gt;&lt;img alt="" border="0" height="1" src="http://www.assoc-amazon.com/e/ir?t=andrgamedeve-20&amp;amp;l=btl&amp;amp;camp=213689&amp;amp;creative=392969&amp;amp;o=1&amp;amp;a=1430224193" style="border: none !important; margin: 0px !important; padding: 0px !important;" width="1" /&gt; on my phone.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2809297633566666445-2229496210903048563?l=allisterx.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/AllisterOnWebMobileSoftware/~4/iPBzfeacafc" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://allisterx.blogspot.com/feeds/2229496210903048563/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=2809297633566666445&amp;postID=2229496210903048563" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2809297633566666445/posts/default/2229496210903048563?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2809297633566666445/posts/default/2229496210903048563?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/AllisterOnWebMobileSoftware/~3/iPBzfeacafc/too-many-androids-i-dont-think-so.html" title="Too Many Androids? I Don't Think So!" /><author><name>Allister</name><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://2.bp.blogspot.com/_y1ZYsD4ubm0/ScIUPiwP7xI/AAAAAAAADvk/SQU1pmDEb7M/S220/me_at_golfe_juan.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://allisterx.blogspot.com/2010/02/too-many-androids-i-dont-think-so.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DkUGQngzfyp7ImA9WxNaEUk.&quot;"><id>tag:blogger.com,1999:blog-2809297633566666445.post-6633634082263559426</id><published>2009-11-25T11:17:00.001+01:00</published><updated>2009-11-25T11:17:03.687+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-11-25T11:17:03.687+01:00</app:edited><title>An Introduction to GAEO web framework</title><content type="html">
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/Qp_rTXEq09IiP688MBX09eXxYpU/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/Qp_rTXEq09IiP688MBX09eXxYpU/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/Qp_rTXEq09IiP688MBX09eXxYpU/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/Qp_rTXEq09IiP688MBX09eXxYpU/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;I've been looking for a good web application framework that works well for the Google App Engine.  I've found GAEO (Google App Engine Oil).  It's still in early phase but I think it's quite promising.  Here's a introduction by its developer.&lt;div style="width:425px;text-align:left" id="__ss_1311110"&gt;&lt;a style="font:14px Helvetica,Arial,Sans-serif;display:block;margin:12px 0 3px 0;text-decoration:underline;" href="http://www.slideshare.net/ericsk/an-introduction-to-gaeo-web-framework" title="An Introduction to GAEO web framework"&gt;An Introduction to GAEO web framework&lt;/a&gt;&lt;object style="margin:0px" width="425" height="355"&gt;&lt;param name="movie" value="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=googleappengineoilgaeowebframework-090418224909-phpapp02&amp;stripped_title=an-introduction-to-gaeo-web-framework" /&gt;&lt;param name="allowFullScreen" value="true"/&gt;&lt;param name="allowScriptAccess" value="always"/&gt;&lt;embed src="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=googleappengineoilgaeowebframework-090418224909-phpapp02&amp;stripped_title=an-introduction-to-gaeo-web-framework" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="355"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;div style="font-size:11px;font-family:tahoma,arial;height:26px;padding-top:2px;"&gt;View more &lt;a style="text-decoration:underline;" href="http://www.slideshare.net/"&gt;documents&lt;/a&gt; from &lt;a style="text-decoration:underline;" href="http://www.slideshare.net/ericsk"&gt;Lin-Chieh Shangkuan&lt;/a&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/2809297633566666445-6633634082263559426?l=allisterx.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/AllisterOnWebMobileSoftware/~4/sUDLA4qq078" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://allisterx.blogspot.com/feeds/6633634082263559426/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=2809297633566666445&amp;postID=6633634082263559426" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2809297633566666445/posts/default/6633634082263559426?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2809297633566666445/posts/default/6633634082263559426?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/AllisterOnWebMobileSoftware/~3/sUDLA4qq078/introduction-to-gaeo-web-framework.html" title="An Introduction to GAEO web framework" /><author><name>Allister</name><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://2.bp.blogspot.com/_y1ZYsD4ubm0/ScIUPiwP7xI/AAAAAAAADvk/SQU1pmDEb7M/S220/me_at_golfe_juan.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://allisterx.blogspot.com/2009/11/introduction-to-gaeo-web-framework.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DUcNRHc6eSp7ImA9WxNUFk8.&quot;"><id>tag:blogger.com,1999:blog-2809297633566666445.post-3400144531735687018</id><published>2009-11-07T21:48:00.002+01:00</published><updated>2009-11-07T21:51:35.911+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-11-07T21:51:35.911+01:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="yahoo messenger" /><category scheme="http://www.blogger.com/atom/ns#" term="google wave" /><category scheme="http://www.blogger.com/atom/ns#" term="plurk emoticons" /><category scheme="http://www.blogger.com/atom/ns#" term="plurk" /><category scheme="http://www.blogger.com/atom/ns#" term="google wave emoticons" /><category scheme="http://www.blogger.com/atom/ns#" term="emoticons" /><title>Plurk and Yahoo Emoticons for Google Wave</title><content type="html">
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/uZu8m-lbLxZxijZEefy2eMDX0Uw/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/uZu8m-lbLxZxijZEefy2eMDX0Uw/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/uZu8m-lbLxZxijZEefy2eMDX0Uw/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/uZu8m-lbLxZxijZEefy2eMDX0Uw/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;I've updated my Google Wave robot that provides plurk emoticons for waves, and it now also provides Yahoo Messenger emoticons (with a maybe few minor differences).&amp;nbsp; To use it, simply add &lt;b&gt;devtools@appspot.com&lt;/b&gt; to your wave contacts and add Picon (that's the robot's name) as a participant in your waves.&lt;br /&gt;
&lt;br /&gt;
The table of all available emoticons are shown here: &lt;a href="http://devtools.appspot.com/"&gt;http://devtools.appspot.com&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
Happy waving!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2809297633566666445-3400144531735687018?l=allisterx.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/AllisterOnWebMobileSoftware/~4/jSZg-z8fPwc" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://allisterx.blogspot.com/feeds/3400144531735687018/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=2809297633566666445&amp;postID=3400144531735687018" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2809297633566666445/posts/default/3400144531735687018?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2809297633566666445/posts/default/3400144531735687018?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/AllisterOnWebMobileSoftware/~3/jSZg-z8fPwc/plurk-and-yahoo-emoticons-for-google.html" title="Plurk and Yahoo Emoticons for Google Wave" /><author><name>Allister</name><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://2.bp.blogspot.com/_y1ZYsD4ubm0/ScIUPiwP7xI/AAAAAAAADvk/SQU1pmDEb7M/S220/me_at_golfe_juan.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://allisterx.blogspot.com/2009/11/plurk-and-yahoo-emoticons-for-google.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DEQGRnc9cSp7ImA9WxBbFU0.&quot;"><id>tag:blogger.com,1999:blog-2809297633566666445.post-8571294022436966074</id><published>2009-11-01T23:50:00.001+01:00</published><updated>2010-03-13T19:52:07.969+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-03-13T19:52:07.969+01:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="google wave" /><category scheme="http://www.blogger.com/atom/ns#" term="google wave profile" /><category scheme="http://www.blogger.com/atom/ns#" term="google wave extensions" /><category scheme="http://www.blogger.com/atom/ns#" term="google wave extension settings" /><title>Google Wave Configuration</title><content type="html">
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/x_fEXsQ884Z9N8gWVxugh9OJaAk/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/x_fEXsQ884Z9N8gWVxugh9OJaAk/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/x_fEXsQ884Z9N8gWVxugh9OJaAk/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/x_fEXsQ884Z9N8gWVxugh9OJaAk/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;I've been poking around Google Wave (again) and I noticed that you can actually modify the behavior of your waves by editing some muted waves.&amp;nbsp; You will see these waves by clicking on All in your Navigation box.&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_y1ZYsD4ubm0/Su4KgjTNU1I/AAAAAAAAED0/VW-HEMEW_XA/s1600-h/gwave_navigation.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://4.bp.blogspot.com/_y1ZYsD4ubm0/Su4KgjTNU1I/AAAAAAAAED0/VW-HEMEW_XA/s320/gwave_navigation.png" /&gt;&lt;/a&gt;&lt;/div&gt;Then, looking at the list of all your waves, you'll see muted waves like these:&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/_y1ZYsD4ubm0/Su4LfUxDTCI/AAAAAAAAED8/hNwGrDx7kZI/s1600-h/gwave_muted_profile.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="31" src="http://1.bp.blogspot.com/_y1ZYsD4ubm0/Su4LfUxDTCI/AAAAAAAAED8/hNwGrDx7kZI/s400/gwave_muted_profile.png" width="400" /&gt;&lt;/a&gt; &lt;a href="http://1.bp.blogspot.com/_y1ZYsD4ubm0/Su4L9theBCI/AAAAAAAAEEE/V8wx7KQgp2s/s1600-h/gwave_muted_extension.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="30" src="http://1.bp.blogspot.com/_y1ZYsD4ubm0/Su4L9theBCI/AAAAAAAAEEE/V8wx7KQgp2s/s400/gwave_muted_extension.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;The muted Profile wave allows you to easily change how you are displayed as a wave participant, that is, you can add your photo and change your name, status, website URL, as seen by other users.&lt;br /&gt;
&lt;br /&gt;
On the other hand, the Extension Settings allow you to add/remove wave extensions that will be available in your future waves. By default, Google includes the "Yes/No/Maybe Gadget" and the "Map Gadget", which you'll see in the menu when you create a new wave.&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_y1ZYsD4ubm0/Su4PkpKrmXI/AAAAAAAAEEM/DWwQkDt9_uE/s1600-h/gwave_new_wave_extensions.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="190" src="http://2.bp.blogspot.com/_y1ZYsD4ubm0/Su4PkpKrmXI/AAAAAAAAEEM/DWwQkDt9_uE/s400/gwave_new_wave_extensions.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;For the moment, the Extension Settings wave is not really editable so you can't add gadgets directly into it yet.&amp;nbsp; But who knows, Google might decide to allow us to do it later (or there might be new ones) so check these muted waves from time to time.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2809297633566666445-8571294022436966074?l=allisterx.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/AllisterOnWebMobileSoftware/~4/hGvaZzUk8RM" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://allisterx.blogspot.com/feeds/8571294022436966074/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=2809297633566666445&amp;postID=8571294022436966074" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2809297633566666445/posts/default/8571294022436966074?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2809297633566666445/posts/default/8571294022436966074?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/AllisterOnWebMobileSoftware/~3/hGvaZzUk8RM/google-wave-configuration.html" title="Google Wave Configuration" /><author><name>Allister</name><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://2.bp.blogspot.com/_y1ZYsD4ubm0/ScIUPiwP7xI/AAAAAAAADvk/SQU1pmDEb7M/S220/me_at_golfe_juan.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://4.bp.blogspot.com/_y1ZYsD4ubm0/Su4KgjTNU1I/AAAAAAAAED0/VW-HEMEW_XA/s72-c/gwave_navigation.png" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://allisterx.blogspot.com/2009/11/google-wave-configuration.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DEUBSXc7cSp7ImA9WxNUEE8.&quot;"><id>tag:blogger.com,1999:blog-2809297633566666445.post-6629251517960375355</id><published>2009-10-31T22:52:00.003+01:00</published><updated>2009-10-31T22:57:38.909+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-10-31T22:57:38.909+01:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="google wave" /><category scheme="http://www.blogger.com/atom/ns#" term="plurk emoticons" /><category scheme="http://www.blogger.com/atom/ns#" term="plurk" /><category scheme="http://www.blogger.com/atom/ns#" term="google wave robot" /><category scheme="http://www.blogger.com/atom/ns#" term="google wave emoticons" /><category scheme="http://www.blogger.com/atom/ns#" term="emoticons" /><title>Plurk Emoticons for Google Wave</title><content type="html">
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/Vx-dGcV7A_aAERO_DqcUDkgThBY/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/Vx-dGcV7A_aAERO_DqcUDkgThBY/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/Vx-dGcV7A_aAERO_DqcUDkgThBY/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/Vx-dGcV7A_aAERO_DqcUDkgThBY/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;I've created a Google Wave robot that will replace text emoticons with &lt;a href="http://www.plurk.com/"&gt;plurk&lt;/a&gt; emoticons.&amp;nbsp; I call the robot "picon", and it is based on the &lt;a href="http://emoticony.leestone.co.uk/"&gt;Emoticony&lt;/a&gt; robot.&amp;nbsp; If you want to use it, first add this email address to your Google Wave contacts: &lt;b&gt;devtools@appspot.com&lt;/b&gt;. Then simply add this contact into your wave.&lt;br /&gt;
&lt;br /&gt;
This is of course assuming that you already have a Google Wave account.&amp;nbsp; If not, request for such an account at wave.google.com.&lt;br /&gt;
&lt;br /&gt;
If you're a plurker, the text you need to type are more or less the same as in plurk.&amp;nbsp; All plurk emoticons, both basic and extra, are included.&amp;nbsp; Have fun waving!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2809297633566666445-6629251517960375355?l=allisterx.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/AllisterOnWebMobileSoftware/~4/Ml0kTR9sHAM" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://allisterx.blogspot.com/feeds/6629251517960375355/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=2809297633566666445&amp;postID=6629251517960375355" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2809297633566666445/posts/default/6629251517960375355?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2809297633566666445/posts/default/6629251517960375355?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/AllisterOnWebMobileSoftware/~3/Ml0kTR9sHAM/plurk-emoticons-for-google-wave.html" title="Plurk Emoticons for Google Wave" /><author><name>Allister</name><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://2.bp.blogspot.com/_y1ZYsD4ubm0/ScIUPiwP7xI/AAAAAAAADvk/SQU1pmDEb7M/S220/me_at_golfe_juan.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://allisterx.blogspot.com/2009/10/plurk-emoticons-for-google-wave.html</feedburner:origLink></entry><entry gd:etag="W/&quot;D0IBRnw8fyp7ImA9WxNVF0s.&quot;"><id>tag:blogger.com,1999:blog-2809297633566666445.post-688066571777102202</id><published>2009-10-28T22:32:00.000+01:00</published><updated>2009-10-28T22:32:37.277+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-10-28T22:32:37.277+01:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="android phones" /><category scheme="http://www.blogger.com/atom/ns#" term="android features" /><category scheme="http://www.blogger.com/atom/ns#" term="android 2.0" /><category scheme="http://www.blogger.com/atom/ns#" term="android" /><title>Android OS 2.0 has arrived!</title><content type="html">
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/DeuhtLOnHpo4r6seW5PVI67lTLo/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/DeuhtLOnHpo4r6seW5PVI67lTLo/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/DeuhtLOnHpo4r6seW5PVI67lTLo/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/DeuhtLOnHpo4r6seW5PVI67lTLo/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;The version 2.0 of the Android operating system has now arrived!&amp;nbsp; &lt;a href="http://developer.android.com/sdk/android-2.0-highlights.html"&gt;New features&lt;/a&gt; include multiple Gmail accounts and contact, enhancements to email and SMS, more camera software features, a more modern web browser with HTML 5 support, a more useful calendar, a revamped graphics architecture, better Bluetooth support, and a more powerful API for software developers.&amp;nbsp; Here's the 2.0 release video:&lt;br /&gt;
&lt;object height="344" width="425"&gt;&lt;param name="movie" value="http://www.youtube.com/v/opZ69P-0Jbc&amp;amp;color1=0xb1b1b1&amp;amp;color2=0xcfcfcf&amp;amp;hl=en&amp;amp;feature=player_embedded&amp;amp;fs=1"&gt;&lt;/param&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;/param&gt;&lt;param name="allowScriptAccess" value="always"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/opZ69P-0Jbc&amp;amp;color1=0xb1b1b1&amp;amp;color2=0xcfcfcf&amp;amp;hl=en&amp;amp;feature=player_embedded&amp;amp;fs=1" type="application/x-shockwave-flash" allowfullscreen="true" allowScriptAccess="always" width="425" height="344"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2809297633566666445-688066571777102202?l=allisterx.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/AllisterOnWebMobileSoftware/~4/yrmwyG4FyBo" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://allisterx.blogspot.com/feeds/688066571777102202/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=2809297633566666445&amp;postID=688066571777102202" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2809297633566666445/posts/default/688066571777102202?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2809297633566666445/posts/default/688066571777102202?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/AllisterOnWebMobileSoftware/~3/yrmwyG4FyBo/android-os-20-has-arrived.html" title="Android OS 2.0 has arrived!" /><author><name>Allister</name><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://2.bp.blogspot.com/_y1ZYsD4ubm0/ScIUPiwP7xI/AAAAAAAADvk/SQU1pmDEb7M/S220/me_at_golfe_juan.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://allisterx.blogspot.com/2009/10/android-os-20-has-arrived.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CUUNR3Y4fyp7ImA9WxNWGEw.&quot;"><id>tag:blogger.com,1999:blog-2809297633566666445.post-6274595385129863219</id><published>2009-10-17T22:59:00.002+02:00</published><updated>2009-10-17T23:01:36.837+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-10-17T23:01:36.837+02:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="webcam" /><category scheme="http://www.blogger.com/atom/ns#" term="video" /><category scheme="http://www.blogger.com/atom/ns#" term="ubuntu jaunty" /><category scheme="http://www.blogger.com/atom/ns#" term="skype" /><category scheme="http://www.blogger.com/atom/ns#" term="labtec webcam pro" /><category scheme="http://www.blogger.com/atom/ns#" term="video for linux" /><category scheme="http://www.blogger.com/atom/ns#" term="installation" /><category scheme="http://www.blogger.com/atom/ns#" term="ubuntu 9.04" /><category scheme="http://www.blogger.com/atom/ns#" term="guide" /><category scheme="http://www.blogger.com/atom/ns#" term="ubuntu" /><title>Skype on Ubuntu 9.04</title><content type="html">
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/sJWKSzfPgmGwIgHXMj5qpqmrY7w/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/sJWKSzfPgmGwIgHXMj5qpqmrY7w/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/sJWKSzfPgmGwIgHXMj5qpqmrY7w/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/sJWKSzfPgmGwIgHXMj5qpqmrY7w/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;It's been&amp;nbsp; about a year and a half since I bought my PC with pre-installed Windows Vista and I've had enough of Vista's quirks.&amp;nbsp; So when I bought a large hard disk and extra memory, I decided to go back to &lt;a href="http://www.ubuntu.com/"&gt;Ubuntu&lt;/a&gt; as well.&amp;nbsp; The only application I had to be sure to work is &lt;a href="http://www.skype.com/"&gt;Skype&lt;/a&gt;, the cheapest way I can keep in touch with my family back home.&lt;br /&gt;
&lt;br /&gt;
My main worry was whether Skype's video cha will work with my webcam.&amp;nbsp; So here's what I did.&lt;br /&gt;
&lt;br /&gt;
I downloaded the &lt;a href="http://www.skype.com/intl/en/download/skype/linux/choose/"&gt;deb package provided by Skype&lt;/a&gt; for Ubuntu 8.10 or later (I needed the 32-bit version).&amp;nbsp; After the deb package is downloaded to my desktop, I simply double clicked on it and Ubuntu's package installer smoothly handled it.&amp;nbsp; Once done, Skype is now available at Applications -&amp;gt; Internet -&amp;gt; Skype.&lt;br /&gt;
&lt;br /&gt;
The problem now is that when I did the video test in Skype (right-click on the green taskbar icon for Skype, then Options, Video Devices, Test), I see a screen with static, mostly green colors.&lt;br /&gt;
&lt;br /&gt;
At first, I thought it could be due to my old webcam (Labtec Webcam Pro, device ID 046d:08a2) but when I tried using Ekiga (another VoIP software for Linux), I can see a good video!&amp;nbsp; So there must be a way of using the V4L (Video for Linux) libraries to make my webcam work.&lt;br /&gt;
&lt;br /&gt;
After a bit of searching the web, I found &lt;a href="http://stemp.wordpress.com/2008/09/15/intrepid-les-webcams-et-les-drivers-gspca/"&gt;Stemp's (French) blog post&lt;/a&gt; describing how to use the gspca (a Linux webcam driver) with Skype.&amp;nbsp; By doing &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;lsusb&lt;/span&gt; and &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;lsmod&lt;/span&gt;, I already know that my webcam is properly identified by Ubuntu using the gspca driver:&lt;br /&gt;
&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;allister@axxbox:~$ lsusb | grep Cam&lt;br /&gt;
Bus 002 Device 002: ID 046d:08a2 Logitech, Inc. Labtec WebCam Pro&lt;br /&gt;
allister@axxbox:~$ lsmod | grep gspca&lt;br /&gt;
gspca_zc3xx&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 55680&amp;nbsp; 0 &lt;br /&gt;
gspca_main&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 29952&amp;nbsp; 1 gspca_zc3xx&lt;br /&gt;
videodev&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 41600&amp;nbsp; 1 gspca_main&lt;br /&gt;
&lt;/div&gt;&lt;br /&gt;
So I created a shell script (a simple text file which I saved as &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;~/bin/skype_launcher&lt;/span&gt;) to launch Skype with these lines:&lt;br /&gt;
&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;#!/bin/bash&lt;br /&gt;
&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;LD_PRELOAD=/usr/lib/libv4l/v4l2convert.so skype&lt;br /&gt;
&lt;/div&gt;&lt;br /&gt;
Then I made this script executable:&lt;br /&gt;
&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;chmod u+x ~/bin/skype_launcher&lt;br /&gt;
&lt;/div&gt;&lt;br /&gt;
Then I edited my Applications menu by right-clicking on Applications, then selected Edit Menus, Internet, Skype, Properties, and replacing Command by:&lt;br /&gt;
&lt;br /&gt;
&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;/home/allister/bin/skype_launcher&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
Then I re-ran Skype using the launcher I modified.&amp;nbsp; Skype now works wonderfully on my Ubuntu desktop!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2809297633566666445-6274595385129863219?l=allisterx.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/AllisterOnWebMobileSoftware/~4/0una2kT6qf8" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://allisterx.blogspot.com/feeds/6274595385129863219/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=2809297633566666445&amp;postID=6274595385129863219" title="1 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2809297633566666445/posts/default/6274595385129863219?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2809297633566666445/posts/default/6274595385129863219?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/AllisterOnWebMobileSoftware/~3/0una2kT6qf8/skype-on-ubuntu-904.html" title="Skype on Ubuntu 9.04" /><author><name>Allister</name><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://2.bp.blogspot.com/_y1ZYsD4ubm0/ScIUPiwP7xI/AAAAAAAADvk/SQU1pmDEb7M/S220/me_at_golfe_juan.jpg" /></author><thr:total>1</thr:total><feedburner:origLink>http://allisterx.blogspot.com/2009/10/skype-on-ubuntu-904.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CEUGRH87cSp7ImA9WxNXGUQ.&quot;"><id>tag:blogger.com,1999:blog-2809297633566666445.post-8649615073224310076</id><published>2009-10-08T10:57:00.000+02:00</published><updated>2009-10-08T10:57:05.109+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-10-08T10:57:05.109+02:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="google" /><category scheme="http://www.blogger.com/atom/ns#" term="web browser" /><category scheme="http://www.blogger.com/atom/ns#" term="themes" /><category scheme="http://www.blogger.com/atom/ns#" term="google chrome" /><title>Google Chrome Themes</title><content type="html">
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/xxcRh4XrC9F-_34SXLhYDGr0eUY/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/xxcRh4XrC9F-_34SXLhYDGr0eUY/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/xxcRh4XrC9F-_34SXLhYDGr0eUY/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/xxcRh4XrC9F-_34SXLhYDGr0eUY/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;I had a pleasant surprise today with the Google Chrome browser. &amp;nbsp;When I opened a new tab, I noticed this for the first time the lower right corner of the browser:&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_y1ZYsD4ubm0/Ss2mptcvQ-I/AAAAAAAAD8Q/X-ZD4lrY0iE/s1600-h/Shot61.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://1.bp.blogspot.com/_y1ZYsD4ubm0/Ss2mptcvQ-I/AAAAAAAAD8Q/X-ZD4lrY0iE/s400/Shot61.jpg" /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;/div&gt;&lt;br /&gt;
It looks very inviting so I clicked on it and I was shown a gallery of Google Chrome themes!&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_y1ZYsD4ubm0/Ss2nulnZpeI/AAAAAAAAD8Y/JXW-kv0_D0Q/s1600-h/Shot62.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://3.bp.blogspot.com/_y1ZYsD4ubm0/Ss2nulnZpeI/AAAAAAAAD8Y/JXW-kv0_D0Q/s400/Shot62.jpg" /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;/div&gt;&lt;br /&gt;
There are two categories, as you can see: one for themes by artists and another by Google (more geeky). &amp;nbsp;Now my browser experience is less boring -- and time consuming, hahaha. &amp;nbsp;Anyway, thanks, Google developers!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2809297633566666445-8649615073224310076?l=allisterx.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/AllisterOnWebMobileSoftware/~4/XwMvidXI3LU" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://allisterx.blogspot.com/feeds/8649615073224310076/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=2809297633566666445&amp;postID=8649615073224310076" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2809297633566666445/posts/default/8649615073224310076?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2809297633566666445/posts/default/8649615073224310076?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/AllisterOnWebMobileSoftware/~3/XwMvidXI3LU/google-chrome-themes.html" title="Google Chrome Themes" /><author><name>Allister</name><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://2.bp.blogspot.com/_y1ZYsD4ubm0/ScIUPiwP7xI/AAAAAAAADvk/SQU1pmDEb7M/S220/me_at_golfe_juan.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://1.bp.blogspot.com/_y1ZYsD4ubm0/Ss2mptcvQ-I/AAAAAAAAD8Q/X-ZD4lrY0iE/s72-c/Shot61.jpg" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://allisterx.blogspot.com/2009/10/google-chrome-themes.html</feedburner:origLink></entry><entry gd:etag="W/&quot;AkYDQHo8eSp7ImA9WxNXFkk.&quot;"><id>tag:blogger.com,1999:blog-2809297633566666445.post-4344569084177567536</id><published>2009-10-04T11:15:00.005+02:00</published><updated>2009-10-04T11:22:51.471+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-10-04T11:22:51.471+02:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="android phones" /><category scheme="http://www.blogger.com/atom/ns#" term="installation" /><category scheme="http://www.blogger.com/atom/ns#" term="howto" /><category scheme="http://www.blogger.com/atom/ns#" term="htc sapphire" /><category scheme="http://www.blogger.com/atom/ns#" term="HTC" /><category scheme="http://www.blogger.com/atom/ns#" term="flashing phone" /><category scheme="http://www.blogger.com/atom/ns#" term="android" /><category scheme="http://www.blogger.com/atom/ns#" term="HTC Magic" /><category scheme="http://www.blogger.com/atom/ns#" term="rom" /><category scheme="http://www.blogger.com/atom/ns#" term="android 1.6" /><title>Installing Android 1.6 on HTC Magic</title><content type="html">
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/0uNXqeiE0qLR0NgxlTAyoL5qEXo/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/0uNXqeiE0qLR0NgxlTAyoL5qEXo/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/0uNXqeiE0qLR0NgxlTAyoL5qEXo/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/0uNXqeiE0qLR0NgxlTAyoL5qEXo/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div style="font-family: inherit;"&gt;&lt;span style="font-size: small;"&gt;After reading a lot of web pages about how to flash a new Android ROM into my HTC Magic, I finally decided to try it last night. &amp;nbsp;At first, I felt a bit ambitious and tried to flash the new Android 1.6 ROM for the Google ION phone as described at the &lt;a href="http://developer.htc.com/google-io-device.html"&gt;HTC developer webpage&lt;/a&gt; for ION. &amp;nbsp;However, the steps involved changing the radio image -- also known as SPL (Second Program Loader) -- which I'm not yet confident to do, as I have read in the forums about too many phones being "bricked" when messing with the SPL.&lt;/span&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style="font-family: inherit;"&gt;&lt;span style="font-size: small;"&gt;First of all, booting my phone in fastboot mode (pressing BACK + POWER buttons for a few seconds) shows the following:&lt;/span&gt;&lt;br /&gt;
&lt;/div&gt;&lt;blockquote&gt;SAPPHIRE PVT 32B SHIP S-ON G&lt;br /&gt;
HBOOT-1.33.0004 (SAPP10000)&lt;br /&gt;
CPLD-10&lt;br /&gt;
RADIO-2.22.19.26I&lt;br /&gt;
&lt;/blockquote&gt;&lt;div style="font-family: inherit;"&gt;&lt;span style="font-size: small;"&gt;One has to be really mindful of these specs. &amp;nbsp;For instance, for the first line, some ROMs only work for 32Bs and not 32As. &amp;nbsp;For the 2nd line, some versions of HBOOT, such as 1.33.0010, will not work with remote fastboot unless you do some &lt;a href="http://forum.xda-developers.com/showthread.php?t=548218"&gt;fairly complicated tricks&lt;/a&gt;. &amp;nbsp;Read the FAQs several times until you have understood how to backup your current ROM &lt;i&gt;and&lt;/i&gt; how to restore it. &amp;nbsp;Also document ALL your phone settings, particularly your APN (access point name) information at Settings - Wireless controls - Mobile networks - Access Point Names.&lt;/span&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style="font-family: inherit;"&gt;&lt;span style="font-size: small;"&gt;Step 0, get the Android SDK. &amp;nbsp;It contains important tools such as fastboot and adb. &amp;nbsp;Make sure that the SDK's tools folder path is included in your executable PATH so that you can run them from any directory in your PC.&lt;/span&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style="font-family: inherit;"&gt;&lt;span style="font-size: small;"&gt;Step 1, get the ROM, which is usually distributed as a zip file, and copy it into your phone as /sdcard/update.zip. &amp;nbsp;In my case, I got &lt;a href="http://www.androidiani.com/%7Eweb14_repository/nk02/ion1.6-new-signed.zip"&gt;a&amp;nbsp;rooted Google ION ROM&lt;/a&gt;&amp;nbsp;which was discussed at &lt;a href="http://forum.xda-developers.com/showthread.php?t=565929"&gt;this thread in the XDA forums&lt;/a&gt;.&lt;/span&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style="font-family: inherit;"&gt;&lt;span style="font-size: small;"&gt;Step 2, get a good recovery image that you can use to boot your PC in recovery mode. &amp;nbsp;For my phone, I decided to use the one recovery image that came packed with the &lt;a href="http://android.smartphonefrance.info/firmware/magic-28.zip"&gt;SPF 2.8 ROM&lt;/a&gt;, which is &lt;a href="http://wiki.smartphonefrance.info/firmware-htcmagic.ashx"&gt;described here&lt;/a&gt;. &amp;nbsp;I like this recovery image because it easily allows me to do a full nandroid restore of my phone's original state in case the new ROM is not good. &amp;nbsp;I extracted the SPF 2.8 zip file, which contained recovery-magic.img and update.zip. &amp;nbsp;I connect my phone to my PC using the USB cable and boot the phone in fastboot mode. &amp;nbsp;From the same folder as recovery-magic.img, I type this at the command prompt: fastboot boot recovery-magic.img. After a short wait, a boot menu will appear.&lt;/span&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style="font-family: inherit;"&gt;&lt;span style="font-size: small;"&gt;Step 3, using the phone's trackball, scroll down the boot menu to "Wipe Data/Factory Reset" and click on the trackball. &amp;nbsp;This will erase the previously stored user data and cache, making sure that previous user preferences will not mess up the configuration of the applications in the new ROM.&lt;/span&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style="font-family: inherit;"&gt;&lt;span style="font-size: small;"&gt;Step 4, after the WIPE is completed, scroll the trackball to Apply sdcard:update.zip and click. This will install the new ROM.&lt;/span&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style="font-family: inherit;"&gt;&lt;span style="font-size: small;"&gt;Step 5, scroll the trackball to select and click to restart the phone.&lt;/span&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2809297633566666445-4344569084177567536?l=allisterx.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/AllisterOnWebMobileSoftware/~4/EidOl8utPQ8" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://allisterx.blogspot.com/feeds/4344569084177567536/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=2809297633566666445&amp;postID=4344569084177567536" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2809297633566666445/posts/default/4344569084177567536?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2809297633566666445/posts/default/4344569084177567536?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/AllisterOnWebMobileSoftware/~3/EidOl8utPQ8/installing-android-16-on-htc-magic.html" title="Installing Android 1.6 on HTC Magic" /><author><name>Allister</name><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://2.bp.blogspot.com/_y1ZYsD4ubm0/ScIUPiwP7xI/AAAAAAAADvk/SQU1pmDEb7M/S220/me_at_golfe_juan.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://allisterx.blogspot.com/2009/10/installing-android-16-on-htc-magic.html</feedburner:origLink></entry><entry gd:etag="W/&quot;D08ESXw5fSp7ImA9WxNQF00.&quot;"><id>tag:blogger.com,1999:blog-2809297633566666445.post-2130951477266121009</id><published>2009-09-23T13:36:00.000+02:00</published><updated>2009-09-23T13:36:48.225+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-09-23T13:36:48.225+02:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="html 5" /><category scheme="http://www.blogger.com/atom/ns#" term="fast web browser" /><category scheme="http://www.blogger.com/atom/ns#" term="html tutorial" /><category scheme="http://www.blogger.com/atom/ns#" term="html development" /><title>HTML 5 Rocks!</title><content type="html">
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/w7oWpOCqqkK67xdELwH4_RdfGYI/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/w7oWpOCqqkK67xdELwH4_RdfGYI/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/w7oWpOCqqkK67xdELwH4_RdfGYI/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/w7oWpOCqqkK67xdELwH4_RdfGYI/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;The Google Code Channel on YouTube has just released a new video introducing the features of the latest iteration of HTML, i.e., HTML 5. &amp;nbsp;With this new standard (supported by all modern web browsers: Firefox, Safari, Opera, and Chrome) it's a whole lot easier to create more dynamic and well-organized webpages with the following features:&lt;br /&gt;
&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;the canvas and scalable vector graphics (SVG)&lt;/li&gt;
&lt;li&gt;video&lt;/li&gt;
&lt;li&gt;geolocation&lt;/li&gt;
&lt;li&gt;app cache and database (for better app user experience, on- or off-line)&lt;/li&gt;
&lt;li&gt;web workers (that allow JavaScript code to run without freezing up the user interface)&lt;/li&gt;
&lt;/ul&gt;No need for third-party tools like Flash. &amp;nbsp;It's all in the browser, just HTML and JavaScript. &amp;nbsp;Sounds exciting? &amp;nbsp;Here's the video:&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: Arial, sans-serif; font-size: 10px; white-space: pre;"&gt;&lt;object height="344" width="425"&gt;&lt;param name="movie" value="http://www.youtube.com/v/siOHh0uzcuY&amp;amp;hl=en&amp;amp;fs=1&amp;amp;"&gt;&lt;/param&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;/param&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/siOHh0uzcuY&amp;amp;hl=en&amp;amp;fs=1&amp;amp;" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="344"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2809297633566666445-2130951477266121009?l=allisterx.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/AllisterOnWebMobileSoftware/~4/a9arm-i3dv4" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://allisterx.blogspot.com/feeds/2130951477266121009/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=2809297633566666445&amp;postID=2130951477266121009" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2809297633566666445/posts/default/2130951477266121009?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2809297633566666445/posts/default/2130951477266121009?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/AllisterOnWebMobileSoftware/~3/a9arm-i3dv4/html-5-rocks.html" title="HTML 5 Rocks!" /><author><name>Allister</name><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://2.bp.blogspot.com/_y1ZYsD4ubm0/ScIUPiwP7xI/AAAAAAAADvk/SQU1pmDEb7M/S220/me_at_golfe_juan.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://allisterx.blogspot.com/2009/09/html-5-rocks.html</feedburner:origLink></entry><entry gd:etag="W/&quot;D0ACRn46fSp7ImA9WxNQFkg.&quot;"><id>tag:blogger.com,1999:blog-2809297633566666445.post-488292190322386729</id><published>2009-09-22T23:42:00.000+02:00</published><updated>2009-09-22T23:42:47.015+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-09-22T23:42:47.015+02:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="smart phone" /><category scheme="http://www.blogger.com/atom/ns#" term="phone htc" /><category scheme="http://www.blogger.com/atom/ns#" term="google mobile phone" /><category scheme="http://www.blogger.com/atom/ns#" term="flashing phone" /><category scheme="http://www.blogger.com/atom/ns#" term="portable sfr" /><category scheme="http://www.blogger.com/atom/ns#" term="HTC Magic" /><title>To Flash ROM or Not</title><content type="html">
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/y9aDOYapgNy4pMRI6-APCA06dVQ/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/y9aDOYapgNy4pMRI6-APCA06dVQ/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/y9aDOYapgNy4pMRI6-APCA06dVQ/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/y9aDOYapgNy4pMRI6-APCA06dVQ/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;Mobile phones often come with customized firmware (the operating system saved in the phone's ROM). &amp;nbsp;The Android operating system, being open source, readily allows itself to be customized by its users. &amp;nbsp;However, for most telcos, like SFR in my case, customization also means putting the minimum amount of customizations so as not to be bugged later by too much user support issues. &amp;nbsp;Hence, the popularity of customized ROMs.&lt;br /&gt;
&lt;br /&gt;
For Android, the current most popular ROMs are the so-called &lt;a href="http://www.cyanogenmod.com/"&gt;Cyanogen ROMs&lt;/a&gt;. &amp;nbsp;For French readers, there's also the ROMs from the &lt;a href="http://forums.smartphonefrance.info/viewtopic.php?t=53185"&gt;Smart Phones France&lt;/a&gt; website. Considering that Android is a Linux-based OS, my first thought was that upgrading my ROM should be a no-brainer. &amp;nbsp;The only thing that's holding me back is that if I miss a step, I'll "brick" my phone -- that is, it won't be usable except as a brick, or as a shiny paper weight.&lt;br /&gt;
&lt;br /&gt;
Anyway, just so I don't forget, here are my phone's specs from the flash boot (pressing Lower Volume key + Power):&lt;br /&gt;
SAPPHIRE PVT 32B SHIP S-ON G&lt;br /&gt;
HBOOT-1.33.0004 (SAPP10000)&lt;br /&gt;
CPLD-10&lt;br /&gt;
RADIO-2.22.19.26I&lt;br /&gt;
Apr 9 2009, 23:30:40&lt;br /&gt;
&lt;br /&gt;
Baseband version: 62.50S.20.17U_2.22.19.26I&lt;br /&gt;
Kernel version: 2.6.27-00393-g6607056 san@sandroid#1&lt;br /&gt;
Build number: CRC1&lt;br /&gt;
&lt;br /&gt;
So, with these specs in mind, I'll look for a suitable ROM. &amp;nbsp;Wish me luck!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2809297633566666445-488292190322386729?l=allisterx.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/AllisterOnWebMobileSoftware/~4/s2IO2UHeAFg" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://allisterx.blogspot.com/feeds/488292190322386729/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=2809297633566666445&amp;postID=488292190322386729" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2809297633566666445/posts/default/488292190322386729?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2809297633566666445/posts/default/488292190322386729?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/AllisterOnWebMobileSoftware/~3/s2IO2UHeAFg/to-flash-rom-or-not.html" title="To Flash ROM or Not" /><author><name>Allister</name><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://2.bp.blogspot.com/_y1ZYsD4ubm0/ScIUPiwP7xI/AAAAAAAADvk/SQU1pmDEb7M/S220/me_at_golfe_juan.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://allisterx.blogspot.com/2009/09/to-flash-rom-or-not.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DEAFR3o9fSp7ImA9WxNQEE4.&quot;"><id>tag:blogger.com,1999:blog-2809297633566666445.post-3158601991974432915</id><published>2009-09-15T19:45:00.000+02:00</published><updated>2009-09-15T19:45:16.465+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-09-15T19:45:16.465+02:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="video" /><category scheme="http://www.blogger.com/atom/ns#" term="recording" /><category scheme="http://www.blogger.com/atom/ns#" term="desktop" /><category scheme="http://www.blogger.com/atom/ns#" term="screen capture" /><category scheme="http://www.blogger.com/atom/ns#" term="CamStudio" /><title>Screen Video Capture</title><content type="html">
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/0LgK93IrhHLLvSULzHr0m_t3R5I/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/0LgK93IrhHLLvSULzHr0m_t3R5I/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/0LgK93IrhHLLvSULzHr0m_t3R5I/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/0LgK93IrhHLLvSULzHr0m_t3R5I/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;I've been thinking of making video tutorials (showing my desktop activities) just because sometimes it's more effective to create videos than writing down every detail of whatever I am presenting. &amp;nbsp;After a brief googling, I found a software called &lt;a href="http://camstudio.org/"&gt;CamStudio&lt;/a&gt;. &amp;nbsp;It is free software and works perfectly for my needs.&lt;br /&gt;
&lt;br /&gt;
To the developer of this very useful tool, thank you very much!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2809297633566666445-3158601991974432915?l=allisterx.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/AllisterOnWebMobileSoftware/~4/ZSTdj6T80Ns" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://allisterx.blogspot.com/feeds/3158601991974432915/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=2809297633566666445&amp;postID=3158601991974432915" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2809297633566666445/posts/default/3158601991974432915?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2809297633566666445/posts/default/3158601991974432915?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/AllisterOnWebMobileSoftware/~3/ZSTdj6T80Ns/screen-video-capture.html" title="Screen Video Capture" /><author><name>Allister</name><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://2.bp.blogspot.com/_y1ZYsD4ubm0/ScIUPiwP7xI/AAAAAAAADvk/SQU1pmDEb7M/S220/me_at_golfe_juan.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://allisterx.blogspot.com/2009/09/screen-video-capture.html</feedburner:origLink></entry><entry gd:etag="W/&quot;D0QBQ3c6fip7ImA9WxNSFUg.&quot;"><id>tag:blogger.com,1999:blog-2809297633566666445.post-1257071175360932191</id><published>2009-08-29T15:04:00.000+02:00</published><updated>2009-08-29T16:15:52.916+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-08-29T16:15:52.916+02:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="mobile" /><category scheme="http://www.blogger.com/atom/ns#" term="configuration" /><category scheme="http://www.blogger.com/atom/ns#" term="debug" /><category scheme="http://www.blogger.com/atom/ns#" term="DDMS" /><category scheme="http://www.blogger.com/atom/ns#" term="phone" /><category scheme="http://www.blogger.com/atom/ns#" term="usb" /><category scheme="http://www.blogger.com/atom/ns#" term="Dalvik" /><category scheme="http://www.blogger.com/atom/ns#" term="android" /><category scheme="http://www.blogger.com/atom/ns#" term="HTC Magic" /><category scheme="http://www.blogger.com/atom/ns#" term="driver" /><category scheme="http://www.blogger.com/atom/ns#" term="screen capture" /><title>Connecting HTC Magic to the PC</title><content type="html">
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/xfvXsAsATzrZNyvrigEQuJnTYts/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/xfvXsAsATzrZNyvrigEQuJnTYts/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/xfvXsAsATzrZNyvrigEQuJnTYts/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/xfvXsAsATzrZNyvrigEQuJnTYts/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;span style="font-family: Arial; font-size: small;"&gt;&lt;span style="font-size: 13px;"&gt;I wanted to transfer some files between my PC and my new HTC Magic smartphone. &amp;nbsp;The phone's package comes with a USB cable so obviously the phone will be treated by the PC's operating system (in my case, Windows Vista) as a USB device and will need a device driver as soon as you plug it into your PC's USB port. &amp;nbsp;So, just to be sure of what I was doing, I kept the following record of my first experience connecting HTC Magic to Vista.&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;div&gt;&lt;span style="font-family: Arial; font-size: small;"&gt;&lt;span style="font-size: 13px;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-family: Arial; font-size: small;"&gt;&lt;span style="font-size: 13px;"&gt;&lt;b&gt;Android SDK&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-family: Arial; font-size: small;"&gt;&lt;span style="font-size: 13px;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-family: Arial; font-size: small;"&gt;&lt;span style="font-size: 13px;"&gt;First of all, you need to have the phone's USB driver beforehand. &amp;nbsp;This driver comes with the &lt;a href="http://developer.android.com/"&gt;Android SDK&lt;/a&gt; (software development kit). &amp;nbsp;As of this writing, the most recent version of the SDK is 1.5_r3, and there's a very good &lt;a href="http://developer.android.com/sdk/1.5_r3/installing.html"&gt;installation guide&lt;/a&gt; at the Android developer website. &amp;nbsp;(Sorry, I forgot to blog about my own installation experience, but it was uneventful, simply following the guide's instructions.) &amp;nbsp;In my PC, the SDK zip file was extracted into&amp;nbsp;D:\Dev\android-sdk-windows-1.5_r3. &amp;nbsp;I'll refer to this folder as SDK_HOME.&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;div&gt;&lt;span style="font-family: Arial; font-size: small;"&gt;&lt;span style="font-size: 13px;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-family: Arial; font-size: small;"&gt;&lt;span style="font-size: 13px;"&gt;&lt;b&gt;Driver Installation&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-family: Arial; font-size: small;"&gt;&lt;span style="font-size: 13px;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-family: Arial; font-size: small;"&gt;&lt;span style="font-size: 13px;"&gt;Now that the driver is in your PC, configure HTC Magic so that it will be in debugging mode when you connect the USB cable: click on Menu, Settings, Applications, Development, then USB debugging. &amp;nbsp;Now, connect the USB cable to the phone and then to the PC. &amp;nbsp;As this was my first time to do so, Vista asked me for a disk that contains the driver. &amp;nbsp;I opted to manually point Vista to the location of the phone's driver:&amp;nbsp;SDK_HOME\usb_driver\x86 (because I have an Intel Core Duo CPU). &amp;nbsp;After you've given this folder's location, Vista should find a suitable driver. &amp;nbsp;In my case, the installed driver has the name "&lt;span style="font-family: 'Times New Roman'; font-size: 16px;"&gt;&lt;span style="font-family: Arial; font-size: small;"&gt;&lt;span style="font-size: 13px;"&gt;HTC Dream Composite ADB Interface&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: Arial; font-size: 13px;"&gt;". &amp;nbsp;Ideally, it should've been "HTC Magic...", but for the moment I let it pass as things seem to work fine for now.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-family: Arial; font-size: small;"&gt;&lt;span style="font-size: 13px;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-family: Arial; font-size: small;"&gt;&lt;span style="font-size: 13px;"&gt;&lt;b&gt;Dalvik Debug Monitor&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-family: Arial; font-size: small;"&gt;&lt;span style="font-size: 13px;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-family: Arial; font-size: small;"&gt;&lt;span style="font-size: 13px;"&gt;&lt;span style="font-family: 'Times New Roman'; font-size: 16px;"&gt;&lt;span style="font-family: Arial; font-size: 13px;"&gt;So now we are ready to access the phone's data storage. &amp;nbsp;There are two ways to do it. &amp;nbsp;The first one is using the Dalvik Debug Monitor (simply double-click on SDK_HOME\tools\ddms.exe) which looks like this:&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-family: Arial; font-size: small;"&gt;&lt;span style="font-size: 13px;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_y1ZYsD4ubm0/SpkckOUJo1I/AAAAAAAAD6k/ihtl4L2ojuc/s1600-h/ddms_0001.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://1.bp.blogspot.com/_y1ZYsD4ubm0/SpkckOUJo1I/AAAAAAAAD6k/ihtl4L2ojuc/s320/ddms_0001.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;span style="font-family: Arial; font-size: small;"&gt;&lt;span style="font-size: 13px;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-family: Arial; font-size: small;"&gt;&lt;span style="font-size: 13px;"&gt;As you can see, my phone is identifed by a unique string and marked as "Online". &amp;nbsp;To transfer data to and from the phone, simply click on the listed phone, then click on main menu's "Device", then "File Explorer...". &amp;nbsp;The DDMS File Explorer will then appear:&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-family: Arial; font-size: small;"&gt;&lt;span style="font-size: 13px;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_y1ZYsD4ubm0/SpkeHjh_EJI/AAAAAAAAD6s/UGU1KJp1es4/s1600-h/ddms_fileexplorer_0001.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://1.bp.blogspot.com/_y1ZYsD4ubm0/SpkeHjh_EJI/AAAAAAAAD6s/UGU1KJp1es4/s320/ddms_fileexplorer_0001.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;span style="font-family: Arial; font-size: small;"&gt;&lt;span style="font-size: 13px;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-family: Arial; font-size: small;"&gt;&lt;span style="font-size: 13px;"&gt;Expanding each folder, we see this:&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-family: Arial; font-size: small;"&gt;&lt;span style="font-size: 13px;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_y1ZYsD4ubm0/SpkeZeikSLI/AAAAAAAAD60/9zFMiaTMmZQ/s1600-h/ddms_fileexplorer_0002.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://1.bp.blogspot.com/_y1ZYsD4ubm0/SpkeZeikSLI/AAAAAAAAD60/9zFMiaTMmZQ/s320/ddms_fileexplorer_0002.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;span style="font-family: Arial; font-size: small;"&gt;&lt;span style="font-size: 13px;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-family: Arial; font-size: small;"&gt;&lt;span style="font-size: 13px;"&gt;The file system is quite similar to a typical Linux file system, with the "system" folder containing the Android OS files and the "sdcard" obviously corresponding to my 8GB SD card. &amp;nbsp;DCIM is most likely for photos while Music is, well, for mp3 files.&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-family: Arial; font-size: small;"&gt;&lt;span style="font-size: 13px;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-family: Arial; font-size: small;"&gt;&lt;span style="font-size: 13px;"&gt;Notice that there are 3 icons on the upper left.&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-family: Arial; font-size: small;"&gt;&lt;span style="font-size: 13px;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_y1ZYsD4ubm0/Spkfe9pR4MI/AAAAAAAAD68/0GX0ay5Fh8k/s1600-h/ddms_fileexplorer_0003.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://4.bp.blogspot.com/_y1ZYsD4ubm0/Spkfe9pR4MI/AAAAAAAAD68/0GX0ay5Fh8k/s320/ddms_fileexplorer_0003.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;span style="font-family: Arial; font-size: small;"&gt;&lt;span style="font-size: 13px;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-family: Arial; font-size: small;"&gt;&lt;span style="font-size: 13px;"&gt;The first icon is for copying ("pull") files from the phone to the PC, the next icon is for copying ("push") files from the PC into the phone, and the last icon is for deleting files from the phone. &amp;nbsp;Note that the delete icon is not active (not red) if you don't select files. &amp;nbsp;Hence, you can't delete the folders this way. &amp;nbsp;Also, I've found that you can drag-and-drop files from Windows Explorer into the DDMS File Explorer, but it doesn't work the other way around. &amp;nbsp;Also, I've found that after you've transferred your mp3 files (the main purpose for this whole exercise), you'll need to reboot your phone as the default music player does not immediately update the list of music files in your system.&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-family: Arial; font-size: small;"&gt;&lt;span style="font-size: 13px;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-family: Arial; font-size: small;"&gt;&lt;span style="font-size: 13px;"&gt;Obviously, the DDMS is more than just for transferring files. &amp;nbsp;It is for debugging the applications running on your Android phone. &amp;nbsp;We'll explore all its features in future articles but for now I can't resist showing it's screen capture feature. &amp;nbsp;Click on "Device", then "Screen Capture..." and you will see the current view on your phone:&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-family: Arial; font-size: small;"&gt;&lt;span style="font-size: 13px;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_y1ZYsD4ubm0/Spki2UA5cJI/AAAAAAAAD7E/d0D1hn7pino/s1600-h/ddms_screencapture_0001.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://2.bp.blogspot.com/_y1ZYsD4ubm0/Spki2UA5cJI/AAAAAAAAD7E/d0D1hn7pino/s320/ddms_screencapture_0001.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;span style="font-family: Arial; font-size: small;"&gt;&lt;span style="font-size: 13px;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-family: Arial; font-size: small;"&gt;&lt;span style="font-size: 13px;"&gt;Here, my phone is locked, so I unlock it and clicked on Refresh to see my home view. &amp;nbsp;Save, Done, and voilà:&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-family: Arial; font-size: small;"&gt;&lt;span style="font-size: 13px;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_y1ZYsD4ubm0/SpkjVF-gDuI/AAAAAAAAD7M/a_6k2mjx1Vc/s1600-h/ddms_screencapture_save_0002.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://4.bp.blogspot.com/_y1ZYsD4ubm0/SpkjVF-gDuI/AAAAAAAAD7M/a_6k2mjx1Vc/s320/ddms_screencapture_save_0002.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;span style="font-family: Arial; font-size: small;"&gt;&lt;span style="font-size: 13px;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-family: Arial; font-size: small;"&gt;&lt;span style="font-size: 13px;"&gt;&lt;b&gt;A Regular USB Storage&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-family: Arial; font-size: small;"&gt;&lt;span style="font-size: 13px;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-family: Arial; font-size: small;"&gt;&lt;span style="font-size: 13px;"&gt;The other (and, IMHO, less interesting) way to transfer files to and from your HTC Magic is to force it to act like a regular USB storage disk. &amp;nbsp;To do it, simply drag down the USB notification icon at the top of your home view, just like how you'd open notifications for new emails:&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-family: Arial; font-size: small;"&gt;&lt;span style="font-size: 13px;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_y1ZYsD4ubm0/SpklZGpNGHI/AAAAAAAAD7U/REeP9bD0JD4/s1600-h/ddms_screencapture_usb_0002.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://1.bp.blogspot.com/_y1ZYsD4ubm0/SpklZGpNGHI/AAAAAAAAD7U/REeP9bD0JD4/s320/ddms_screencapture_usb_0002.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;span style="font-family: Arial; font-size: small;"&gt;&lt;span style="font-size: 13px;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-family: Arial; font-size: small;"&gt;&lt;span style="font-size: 13px;"&gt;Then you'll see this:&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-family: Arial; font-size: small;"&gt;&lt;span style="font-size: 13px;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_y1ZYsD4ubm0/SpkllUXNsrI/AAAAAAAAD7c/--H8SuogMZc/s1600-h/ddms_screencapture_usb_0001.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://2.bp.blogspot.com/_y1ZYsD4ubm0/SpkllUXNsrI/AAAAAAAAD7c/--H8SuogMZc/s320/ddms_screencapture_usb_0001.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;span style="font-family: Arial; font-size: small;"&gt;&lt;span style="font-size: 13px;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-family: Arial; font-size: small;"&gt;&lt;span style="font-size: 13px;"&gt;And then you'll be asked to mount the SD card as a regular disk drive on your PC:&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-family: Arial; font-size: small;"&gt;&lt;span style="font-size: 13px;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_y1ZYsD4ubm0/SpkmUMl73PI/AAAAAAAAD7k/rEguxpPMSFs/s1600-h/ddms_screencapture_usb_0003.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://3.bp.blogspot.com/_y1ZYsD4ubm0/SpkmUMl73PI/AAAAAAAAD7k/rEguxpPMSFs/s320/ddms_screencapture_usb_0003.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;span style="font-family: Arial; font-size: small;"&gt;&lt;span style="font-size: 13px;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-family: Arial; font-size: small;"&gt;&lt;span style="font-size: 13px;"&gt;Once you click on "Mount", Vista will prompt you on how to handle the phone's SD card. &amp;nbsp;And the rest will be very familiar.&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-family: Arial; font-size: small;"&gt;&lt;span style="font-size: 13px;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-family: Arial; font-size: small;"&gt;&lt;span style="font-size: 13px;"&gt;I hope you find this article very hopeful. &amp;nbsp;Watch out for more of my adventures with Android!&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/2809297633566666445-1257071175360932191?l=allisterx.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/AllisterOnWebMobileSoftware/~4/clU0LbNF22c" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://allisterx.blogspot.com/feeds/1257071175360932191/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=2809297633566666445&amp;postID=1257071175360932191" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2809297633566666445/posts/default/1257071175360932191?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2809297633566666445/posts/default/1257071175360932191?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/AllisterOnWebMobileSoftware/~3/clU0LbNF22c/connecting-htc-magic-to-pc.html" title="Connecting HTC Magic to the PC" /><author><name>Allister</name><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://2.bp.blogspot.com/_y1ZYsD4ubm0/ScIUPiwP7xI/AAAAAAAADvk/SQU1pmDEb7M/S220/me_at_golfe_juan.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://1.bp.blogspot.com/_y1ZYsD4ubm0/SpkckOUJo1I/AAAAAAAAD6k/ihtl4L2ojuc/s72-c/ddms_0001.png" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://allisterx.blogspot.com/2009/08/connecting-htc-magic-to-pc.html</feedburner:origLink></entry><entry gd:etag="W/&quot;C0AARHg_fCp7ImA9WxNSFUk.&quot;"><id>tag:blogger.com,1999:blog-2809297633566666445.post-4610736936968925635</id><published>2009-08-29T12:29:00.000+02:00</published><updated>2009-08-29T12:29:05.644+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-08-29T12:29:05.644+02:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="merge" /><category scheme="http://www.blogger.com/atom/ns#" term="blog" /><category scheme="http://www.blogger.com/atom/ns#" term="tools" /><title>Blog Merge</title><content type="html">
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/wzatnNCi7lmM1puVuxYZC9xkLwk/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/wzatnNCi7lmM1puVuxYZC9xkLwk/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/wzatnNCi7lmM1puVuxYZC9xkLwk/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/wzatnNCi7lmM1puVuxYZC9xkLwk/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;For some time now I have maintained several tech-related blogs, each focused on a different topic. &amp;nbsp;However, it makes each of these blogs somewhat "less productive". &amp;nbsp;So I therefore decided to merge my two other blogs (&lt;a href="http://cxxpython.blogspot.com/"&gt;cxxpython&lt;/a&gt; and &lt;a href="http://axxoid.blogspot.com/"&gt;axxoid&lt;/a&gt;) with my &lt;a href="http://allisterx.blogspot.com/"&gt;main blog for geeking around&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
The merger was made very easy with Blogger's Import/Export tool, which allows you to export (download) an entire blog as an XML file and to merge it with an existing blog by importing (uploading) the said XML file. &amp;nbsp;After the import, the posts from the imported blog are automatically sorted chronologically with the existing posts in the merged blog. &amp;nbsp;To use this tool, you can simply go to your Blogger.com blog's settings, as shown below:&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/_y1ZYsD4ubm0/SpkCNa607TI/AAAAAAAAD6c/p-Z2tiTVV3w/s1600-h/blogger_import_export.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://1.bp.blogspot.com/_y1ZYsD4ubm0/SpkCNa607TI/AAAAAAAAD6c/p-Z2tiTVV3w/s320/blogger_import_export.png" /&gt;&lt;/a&gt;&lt;/div&gt;Thanks to this nifty tool, I can now focus on this blog and will now be writing more geeky stuff -- and I already have one new article coming soon!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2809297633566666445-4610736936968925635?l=allisterx.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/AllisterOnWebMobileSoftware/~4/Lq-oTKW16Xo" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://allisterx.blogspot.com/feeds/4610736936968925635/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=2809297633566666445&amp;postID=4610736936968925635" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2809297633566666445/posts/default/4610736936968925635?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2809297633566666445/posts/default/4610736936968925635?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/AllisterOnWebMobileSoftware/~3/Lq-oTKW16Xo/blog-merge.html" title="Blog Merge" /><author><name>Allister</name><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://2.bp.blogspot.com/_y1ZYsD4ubm0/ScIUPiwP7xI/AAAAAAAADvk/SQU1pmDEb7M/S220/me_at_golfe_juan.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://1.bp.blogspot.com/_y1ZYsD4ubm0/SpkCNa607TI/AAAAAAAAD6c/p-Z2tiTVV3w/s72-c/blogger_import_export.png" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://allisterx.blogspot.com/2009/08/blog-merge.html</feedburner:origLink></entry><entry gd:etag="W/&quot;A04EQXw5fSp7ImA9WxNSFU4.&quot;"><id>tag:blogger.com,1999:blog-2809297633566666445.post-7999923085963833137</id><published>2009-08-23T08:27:00.000+02:00</published><updated>2009-08-29T11:58:20.225+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-08-29T11:58:20.225+02:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="mobile" /><category scheme="http://www.blogger.com/atom/ns#" term="SFR" /><category scheme="http://www.blogger.com/atom/ns#" term="smartphone" /><category scheme="http://www.blogger.com/atom/ns#" term="wifi" /><category scheme="http://www.blogger.com/atom/ns#" term="HTC" /><category scheme="http://www.blogger.com/atom/ns#" term="android" /><category scheme="http://www.blogger.com/atom/ns#" term="HTC Magic" /><title>The Magic Begins!</title><content type="html">
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/E8hHYbJJtBPzMmnK87Fh2oFqx4o/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/E8hHYbJJtBPzMmnK87Fh2oFqx4o/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/E8hHYbJJtBPzMmnK87Fh2oFqx4o/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/E8hHYbJJtBPzMmnK87Fh2oFqx4o/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;Yes, finally I have taken the plunge with a shiny HTC Magic which I got through &lt;a href="http://www.sfr.fr/"&gt;SFR&lt;/a&gt;.  It will take about a week before I could use in as a phone in SFR's network (since I asked to keep my old mobile number) but I could now play with its WiFi connection through my Neufbox (SFR ADSL modem).  It works just great (although I'm still adjusting to the touch screen experience) and I'll soon be posting more of my experiences with it. &lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Here's my lovely Magic:&lt;div&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_y1ZYsD4ubm0/SpDirwHtomI/AAAAAAAAD6M/GMgDDD6yhrg/s1600-h/P1120026.JPG"&gt;&lt;img src="http://3.bp.blogspot.com/_y1ZYsD4ubm0/SpDirwHtomI/AAAAAAAAD6M/GMgDDD6yhrg/s400/P1120026.JPG" border="0" alt="" id="BLOGGER_PHOTO_ID_5373043596732506722" style="cursor: pointer; width: 400px; height: 300px; " /&gt;&lt;/a&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/2809297633566666445-7999923085963833137?l=allisterx.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/AllisterOnWebMobileSoftware/~4/YDQDp_lpkiM" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://allisterx.blogspot.com/feeds/7999923085963833137/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=2809297633566666445&amp;postID=7999923085963833137" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2809297633566666445/posts/default/7999923085963833137?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2809297633566666445/posts/default/7999923085963833137?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/AllisterOnWebMobileSoftware/~3/YDQDp_lpkiM/magic-begins.html" title="The Magic Begins!" /><author><name>Allister</name><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://2.bp.blogspot.com/_y1ZYsD4ubm0/ScIUPiwP7xI/AAAAAAAADvk/SQU1pmDEb7M/S220/me_at_golfe_juan.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://3.bp.blogspot.com/_y1ZYsD4ubm0/SpDirwHtomI/AAAAAAAAD6M/GMgDDD6yhrg/s72-c/P1120026.JPG" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://allisterx.blogspot.com/2009/08/magic-begins.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DkAFSH07eCp7ImA9WxJVFEo.&quot;"><id>tag:blogger.com,1999:blog-2809297633566666445.post-6100434589429243238</id><published>2009-06-28T20:45:00.000+02:00</published><updated>2009-07-01T20:58:39.300+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-07-01T20:58:39.300+02:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="ide" /><category scheme="http://www.blogger.com/atom/ns#" term="web2py" /><category scheme="http://www.blogger.com/atom/ns#" term="development" /><category scheme="http://www.blogger.com/atom/ns#" term="howto" /><category scheme="http://www.blogger.com/atom/ns#" term="eclipse" /><category scheme="http://www.blogger.com/atom/ns#" term="python" /><title>Using the web2py framework on Eclipse</title><content type="html">
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/25HdUFPcmLnhiGhn3swXnD-YBQA/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/25HdUFPcmLnhiGhn3swXnD-YBQA/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/25HdUFPcmLnhiGhn3swXnD-YBQA/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/25HdUFPcmLnhiGhn3swXnD-YBQA/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="color:#3333FF;"&gt;UPDATE: Thanks to Fabio's comment, I'm now able to activate the code auto-completion simply by setting my allowing Eclipse and python through my firewall.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;a href="http://www.eclipse.org/"&gt;Eclipse&lt;/a&gt; is a great development platform/IDE while &lt;a href="http://www.web2py.com/"&gt;web2py&lt;/a&gt; is one of the best web application development framework there is.  It didn't take long for me to want to web2py apps on Eclipse.  Here's how I did it.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;First, download the &lt;a href="http://www.web2py.com/examples/static/web2py_src.zip"&gt;web2py source&lt;/a&gt; pack (zip file).  Extract this file to wherever you like and we'll refer to the location of the produced folder -- the one that contains web2py.py -- as the "root" folder (in my case I set it to D:\Dev\web2py_src).&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Since web2py is written in python, naturally you'll want to install the &lt;a href="http://pydev.sourceforge.net/download.html"&gt;PyDev plugin&lt;/a&gt; for Eclipse, which you can conveniently do inside Eclipse by simply adding the update URL for PyDev.  After the installation, Eclipse will most likely ask you to restart it.  Once it's done, change the Eclipse perspective to PyDev (click on Window -&gt; Open Perspective -&gt; Others -&gt; PyDev).  By the way, at the time of this writing, I'm using Eclipse Galileo (that is, version 3.5) but it should be about the same process for the previous version (Eclipse Ganymede).&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;To give you the overall picture, web2py will be considered as one PyDev project and you can add as many applications as possible later.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Okay, we now create a new PyDev project (File -&gt; New -&gt; PyDev Project). Provide a project name and the location of your root folder (you may need to uncheck the "Use Default" box of the Project Contents).  Also uncheck "Create default 'src' folder and add it to the pythonpath" since you really don't need it in this case.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_y1ZYsD4ubm0/SkfG62ueyfI/AAAAAAAAD40/G6RwDTCyEb8/s1600-h/pydev_web2py_1.PNG"&gt;&lt;img src="http://3.bp.blogspot.com/_y1ZYsD4ubm0/SkfG62ueyfI/AAAAAAAAD40/G6RwDTCyEb8/s400/pydev_web2py_1.PNG" border="0" alt="" id="BLOGGER_PHOTO_ID_5352465396578306546" style="cursor: pointer; width: 383px; height: 400px; " /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;As you can see in the above picture, you might have to configure your python interpreter.  So I clicked on the link to do so.  The following window showed up:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_y1ZYsD4ubm0/SkfCHFMy59I/AAAAAAAAD4c/37mlHzIH69Q/s1600-h/pydev_web2py_2.PNG"&gt;&lt;img src="http://4.bp.blogspot.com/_y1ZYsD4ubm0/SkfCHFMy59I/AAAAAAAAD4c/37mlHzIH69Q/s400/pydev_web2py_2.PNG" border="0" alt="" id="BLOGGER_PHOTO_ID_5352460109063841746" style="cursor: pointer; width: 385px; height: 400px; " /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;I clicked on "New..." button and looked for the python.exe file (I'm using Windows.  For Linux, it could be /usr/bin/python), gave it an arbirtrary name "Python", then clicking on OK twice.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_y1ZYsD4ubm0/SkfDMMxP_VI/AAAAAAAAD4k/KVthDpO0ihc/s1600-h/pydev_web2py_3.PNG"&gt;&lt;img src="http://1.bp.blogspot.com/_y1ZYsD4ubm0/SkfDMMxP_VI/AAAAAAAAD4k/KVthDpO0ihc/s400/pydev_web2py_3.PNG" border="0" alt="" id="BLOGGER_PHOTO_ID_5352461296506764626" style="cursor: pointer; width: 400px; height: 166px; " /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;The python library locations are therefore automatically added to the PYTHONPATH.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_y1ZYsD4ubm0/SkfDmWuS0SI/AAAAAAAAD4s/vOT_GDsV4V4/s1600-h/pydev_web2py_4.PNG"&gt;&lt;img src="http://1.bp.blogspot.com/_y1ZYsD4ubm0/SkfDmWuS0SI/AAAAAAAAD4s/vOT_GDsV4V4/s400/pydev_web2py_4.PNG" border="0" alt="" id="BLOGGER_PHOTO_ID_5352461745855320354" style="cursor: pointer; width: 385px; height: 400px; " /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Click on Apply, OK, then Finish.  We now have a new PyDev project for web2py.  But before the fun begins, a few more things.  We have to enable Eclipse to find the web2py modules by adding the root folder to the PYTHONPATH: right-click on the web2py project icon, click Properties, click PyDev-PYTHONPATH and then click on "Add source folder" to select web2py.  Once you've done that, click on Apply, then OK.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;It should be about ready by now but I later discovered that the autocomplete feature hangs Eclipse everytime I try to use it.  So we have to disable it: Window -&gt; Preferences -&gt; PyDev -&gt; Editor -&gt; Code Completion, and then uncheck "Use code completion?" and "Request code completion on '.'?"&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;To run the web2py server, simply open the web2py project, right-click on web2py.py, then click on "Run As" -&gt; "Python Run".  I recommend that you refresh your project view after running for the first time (click on web2py, then press F5).  If you want to debug your web2py apps, click on "Debug As" -&gt; "Python Run" instead, and then to create a breakpoint, right-click on the left margin of the line of code you want to check.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;That's it!  I hope it helps.  While it's a shame that the code completion doesn't work, at least the debugger works perfectly.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2809297633566666445-6100434589429243238?l=allisterx.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/AllisterOnWebMobileSoftware/~4/-QKvaH1xA_w" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://allisterx.blogspot.com/feeds/6100434589429243238/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=2809297633566666445&amp;postID=6100434589429243238" title="7 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2809297633566666445/posts/default/6100434589429243238?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2809297633566666445/posts/default/6100434589429243238?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/AllisterOnWebMobileSoftware/~3/-QKvaH1xA_w/using-web2py-framework-on-eclipse.html" title="Using the web2py framework on Eclipse" /><author><name>Allister</name><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://2.bp.blogspot.com/_y1ZYsD4ubm0/ScIUPiwP7xI/AAAAAAAADvk/SQU1pmDEb7M/S220/me_at_golfe_juan.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://3.bp.blogspot.com/_y1ZYsD4ubm0/SkfG62ueyfI/AAAAAAAAD40/G6RwDTCyEb8/s72-c/pydev_web2py_1.PNG" height="72" width="72" /><thr:total>7</thr:total><feedburner:origLink>http://allisterx.blogspot.com/2009/06/using-web2py-framework-on-eclipse.html</feedburner:origLink></entry></feed>

