<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-1267998025422679901</id><updated>2012-02-02T01:11:13.463-08:00</updated><category term='python-gdata'/><category term='General Linux/Unix'/><category term='GoogleCL'/><category term='Android Hacking'/><category term='chemistry'/><category term='gedit'/><title type='text'>Let's Get Technical</title><subtitle type='html'>"Five, if you want to get technical."&lt;br&gt;
"Oh, I do!"&lt;br&gt;
-Futurama</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://atechyblog.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1267998025422679901/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://atechyblog.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Coila</name><uri>http://www.blogger.com/profile/17751559310182057693</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>19</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-1267998025422679901.post-4965265303956617495</id><published>2012-02-02T00:48:00.001-08:00</published><updated>2012-02-02T01:11:13.474-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='python-gdata'/><category scheme='http://www.blogger.com/atom/ns#' term='GoogleCL'/><title type='text'>GoogleCL Docs Upload Fixed for Gdata 2.0.15 and 2.0.16</title><content type='html'>Months ago, we fixed Google Docs Uploads for GoogleCL folks who use python-gdata 2.0.12 through 2.0.14. Today, we tackled the problem for users of python-gdata 2.0.15 and 2.0.16.&lt;br /&gt;&lt;br /&gt;A user sent in a patch that fixed the MIMETYPES error we were getting with 2.0.15 and 2.0.16. It looks like python-gdata moved away from declaring MIMETYPES where we were calling them from, so now we name them explicitly in googlecl/src/googlecl/docs/client.py.&lt;br /&gt;&lt;br /&gt;That was a great start, but then we started getting a DocsEntry error and uploads still wouldn't work, so we delved further. Here's the error we got after fixing the MIMETYPES problem.&lt;br /&gt;&lt;blockquote class="tr_bq"&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span class="Apple-style-span"&gt;AttributeError: 'module' object has no attribute 'DocsEntry'&lt;/span&gt;&lt;/div&gt;&lt;/blockquote&gt;&lt;br /&gt;One of our earlier searches brought us to the same error posted on &lt;a href="http://code.google.com/p/gdata-python-client/issues/detail?id=514#makechanges"&gt;python-gdata's buglist&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Then, we found &lt;a href="http://translate.google.com/translate?hl=en&amp;amp;sl=ja&amp;amp;u=http://demon-lord.com/doku.php%3Fid%3Dvps:backup&amp;amp;ei=OzoqT7jeDMqriQKKudGmCg&amp;amp;sa=X&amp;amp;oi=translate&amp;amp;ct=result&amp;amp;resnum=8&amp;amp;ved=0CFQQ7gEwBw&amp;amp;prev=/search%3Fq%3D%2522docsentry%2522%2B2.0.15%26hl%3Den%26biw%3D1200%26bih%3D636%26prmd%3Dimvns"&gt;this&lt;/a&gt; blog post, by Demon Lord, where they had success replacing the string &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;"gdata.docs.data.DocsEntry&lt;/span&gt;" with the string&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt; "gdata.data.GDEntry&lt;/span&gt;". We tried that throughout the file googlecl/src/googlecl/docs/client.py and sure enough, that fixed it!&lt;br /&gt;&lt;br /&gt;We tested 2.0.0 through 2.0.4 to make sure that didn't break anything for those users and then tested 2.0.12 through 2.0.16 to make sure it worked on all the versions that should be able to upload docs. It does so it's now been committed.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1267998025422679901-4965265303956617495?l=atechyblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://atechyblog.blogspot.com/feeds/4965265303956617495/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://atechyblog.blogspot.com/2012/02/googlecl-docs-upload-fixed-for-gdata.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1267998025422679901/posts/default/4965265303956617495'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1267998025422679901/posts/default/4965265303956617495'/><link rel='alternate' type='text/html' href='http://atechyblog.blogspot.com/2012/02/googlecl-docs-upload-fixed-for-gdata.html' title='GoogleCL Docs Upload Fixed for Gdata 2.0.15 and 2.0.16'/><author><name>Coila</name><uri>http://www.blogger.com/profile/17751559310182057693</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1267998025422679901.post-5643153147333511659</id><published>2012-01-31T18:46:00.000-08:00</published><updated>2012-01-31T18:46:31.134-08:00</updated><title type='text'>Car Troubleshooting</title><content type='html'>I'm going to use this blog the way I talk about using it: as a place for keeping all my technical stuff. Today, that includes cars.&lt;br /&gt;&lt;br /&gt;Car 1 (the favorite) leaks oil like crazy. However, upon closer inspection tonight, I have some evidence to support my hypothesis that it only leaks when it's on (possibly only while she's in park--that was harder to test by myself). I checked the oil today, after it had been off for at least a week, and the oil looked alright. I would normally add oil, but my husband wouldn't. I didn't add any. Then, I turned the car on to check the transmission fluid levels (also has a leak, but a much slower one). Transmission levels appear fine. Turned the car off and decided, just for the hell of it, to check the oil. It was on the "L" bar! Sure enough, there was a big puddle of oil under the car, too. I watched the oil and couldn't see the drips at all. Then, I turned the car on and it dripped once a second! After the car was off, it dripped 9 times the following minute. Hopefully it's the gasket and hopefully it's not a tricky gasket to replace. . . The transmission was easy enough -- drain transmission, take off pan, put on new gasket, put pan back on. Hopefully the oil pan is the same!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1267998025422679901-5643153147333511659?l=atechyblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://atechyblog.blogspot.com/feeds/5643153147333511659/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://atechyblog.blogspot.com/2012/01/car-troubleshooting.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1267998025422679901/posts/default/5643153147333511659'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1267998025422679901/posts/default/5643153147333511659'/><link rel='alternate' type='text/html' href='http://atechyblog.blogspot.com/2012/01/car-troubleshooting.html' title='Car Troubleshooting'/><author><name>Coila</name><uri>http://www.blogger.com/profile/17751559310182057693</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1267998025422679901.post-8455069975134306530</id><published>2012-01-31T15:43:00.000-08:00</published><updated>2012-02-02T01:09:08.730-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='GoogleCL'/><title type='text'>MIMETYPES fix gives AttributeError: no 'DocsEntry'</title><content type='html'>The same gentleman who helped make it possible to fix the docs upload bug also suggested the start of a fix for the MIMETYPES bug we get with python-gdata versions 2.0.15 and 2.0.16 with the fix (with or without this fix, we can't upload docs via python-gdata 2.0.15 or 2.0.16, so the fix was still worth publishing).&lt;br /&gt;&lt;br /&gt;The error I get now is:&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New',Courier,monospace;"&gt;AttributeError: 'module' object has no attribute 'DocsEntry'&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;A quick grep of the whole googlecl tree for the term "DocsEntry" shows me that it only exists in gdata versions 2.0.11 and 2.0.14. . . So why does GoogleCL call for it in the trunk/src/googlecl/docs/client.py file? The call for it seems to work with python-gdata 2.0.12 -- I can upload documents of txt and pdf types without a complaint about DocsEntry.&lt;br /&gt;&lt;br /&gt;Edit: Resolved this issue and blogged about it &lt;a href="http://atechyblog.blogspot.com/2012/02/googlecl-docs-upload-fixed-for-gdata.html"&gt;here&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1267998025422679901-8455069975134306530?l=atechyblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://atechyblog.blogspot.com/feeds/8455069975134306530/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://atechyblog.blogspot.com/2012/01/mimetypes-fix-gives-attributeerror-no.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1267998025422679901/posts/default/8455069975134306530'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1267998025422679901/posts/default/8455069975134306530'/><link rel='alternate' type='text/html' href='http://atechyblog.blogspot.com/2012/01/mimetypes-fix-gives-attributeerror-no.html' title='MIMETYPES fix gives AttributeError: no &apos;DocsEntry&apos;'/><author><name>Coila</name><uri>http://www.blogger.com/profile/17751559310182057693</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1267998025422679901.post-6321650579433096660</id><published>2011-11-25T14:34:00.001-08:00</published><updated>2011-11-25T14:35:10.959-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='GoogleCL'/><title type='text'>Testing GoogleCL Part 3</title><content type='html'>Apparently, you don't need to backslash the apostrophes in posts, though. Interesting.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1267998025422679901-6321650579433096660?l=atechyblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://atechyblog.blogspot.com/feeds/6321650579433096660/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://atechyblog.blogspot.com/2011/11/testing-googlecl-part-3.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1267998025422679901/posts/default/6321650579433096660'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1267998025422679901/posts/default/6321650579433096660'/><link rel='alternate' type='text/html' href='http://atechyblog.blogspot.com/2011/11/testing-googlecl-part-3.html' title='Testing GoogleCL Part 3'/><author><name>Coila</name><uri>http://www.blogger.com/profile/17751559310182057693</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1267998025422679901.post-7887552945710432011</id><published>2011-11-25T14:30:00.001-08:00</published><updated>2011-11-25T14:31:15.979-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='GoogleCL'/><title type='text'>Testing GoogleCL</title><content type='html'>If you can see this, then it worked again. Apparently, you need to put a backslash before a \! character, but then it shows the backslash, too. Also, as with the \! character in the post, I had to put a backslash before the apostrophe in my blog's title name (Let\'s Get Technical)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1267998025422679901-7887552945710432011?l=atechyblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://atechyblog.blogspot.com/feeds/7887552945710432011/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://atechyblog.blogspot.com/2011/11/testing-googlecl_25.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1267998025422679901/posts/default/7887552945710432011'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1267998025422679901/posts/default/7887552945710432011'/><link rel='alternate' type='text/html' href='http://atechyblog.blogspot.com/2011/11/testing-googlecl_25.html' title='Testing GoogleCL'/><author><name>Coila</name><uri>http://www.blogger.com/profile/17751559310182057693</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1267998025422679901.post-2133421105989779991</id><published>2011-11-25T14:19:00.001-08:00</published><updated>2011-11-25T14:26:03.318-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='GoogleCL'/><title type='text'>Testing GoogleCL</title><content type='html'>If you can see this, then it worked\!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1267998025422679901-2133421105989779991?l=atechyblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://atechyblog.blogspot.com/feeds/2133421105989779991/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://atechyblog.blogspot.com/2011/11/testing-googlecl.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1267998025422679901/posts/default/2133421105989779991'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1267998025422679901/posts/default/2133421105989779991'/><link rel='alternate' type='text/html' href='http://atechyblog.blogspot.com/2011/11/testing-googlecl.html' title='Testing GoogleCL'/><author><name>Coila</name><uri>http://www.blogger.com/profile/17751559310182057693</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1267998025422679901.post-9190501103416982451</id><published>2011-11-20T01:04:00.001-08:00</published><updated>2011-11-20T14:30:27.697-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='python-gdata'/><category scheme='http://www.blogger.com/atom/ns#' term='GoogleCL'/><title type='text'>Python Gdata</title><content type='html'>&lt;b&gt;Short version&lt;/b&gt;: To upload Google Docs with a service that utilizes python-gdata, use a version between 2.0.12 and 2.0.14. Keep reading for more details.&lt;br /&gt;&lt;br /&gt;Credentiality and I spent a few hours on this tonight. &lt;a href="http://credentiality2.blogspot.com/2011/11/untangling-gdata.html"&gt;Here's a brief history and a beautiful table&lt;/a&gt; to show you what to expect.&lt;br /&gt;&lt;br /&gt;An SSL error occurs in a few platforms using gdata when you try to upload files to Google Docs &lt;a href="http://code.google.com/p/gdocsfs/issues/detail?id=11"&gt;and it doesn't appear to be limited to python-gdata&lt;/a&gt;. It may relate to &lt;a href="http://googleappsdeveloper.blogspot.com/2011/03/requiring-ssl-when-using-google-apis.html"&gt;this&lt;/a&gt;. Credentiality and I work on &amp;nbsp;&lt;a href="http://code.google.com/p/googlecl/"&gt;GoogleCL&lt;/a&gt;&amp;nbsp;sometimes, so we have all the python-gdata versions from 2.0.0 through 2.0.15 and test code with all of them, anyway. Here are some observations and what has worked for us so far.&lt;br /&gt;&lt;br /&gt;In &lt;a href="http://googleappsdeveloper.blogspot.com/2011/05/upload-all-file-types-to-any-google.html"&gt;May 2, 2011&lt;/a&gt;, Google began to allow uploading "all file types" for non-premium users. Now, if you add a &lt;a href="http://code.google.com/apis/gdata/docs/resumable_upload.html"&gt;resumable uploader fix&lt;/a&gt;&amp;nbsp;to a specific GoogleCL&amp;nbsp;&lt;a href="http://code.google.com/p/googlecl/source/browse/trunk/src/googlecl/docs/client.py"&gt;client.py&lt;/a&gt; file* &lt;b&gt;and&lt;/b&gt; you use&amp;nbsp;python-gdata 2.0.10 or 2.0.12 through 2.0.14,&amp;nbsp;GoogleCL should upload a PDF to Google Docs&amp;nbsp;successfully.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Without&lt;/b&gt; the&amp;nbsp;&lt;a href="http://code.google.com/apis/gdata/docs/resumable_upload.html"&gt;resumable uploader fix&lt;/a&gt;, python-gdata 2.0.10 or 2.0.12 through 2.0.14 gives us this 403 error:&lt;br /&gt;&lt;blockquote class="tr_bq"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;403, &amp;lt;errors xmlns='http://schemas.google.com/g/2005'&amp;gt;&amp;lt;error&amp;gt;&amp;lt;domain&amp;gt;GData&amp;lt;/domain&amp;gt;&amp;lt;code&amp;gt;ServiceForbiddenException&amp;lt;/code&amp;gt;&amp;lt;internalReason&amp;gt;Files must be uploaded using the resumable upload mechanism.&amp;lt;/internalReason&amp;gt;&amp;lt;/error&amp;gt;&amp;lt;/errors&amp;gt;&lt;/span&gt;&lt;/blockquote&gt;&lt;br /&gt;When we use python-gdata 2.0.5 through 2.0.9 or 2.0.11, we get this 403.4 SSL error:&lt;br /&gt;&lt;blockquote class="tr_bq"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;403, &amp;lt;errors xmlns='http://schemas.google.com/g/2005'&amp;gt;&amp;lt;error&amp;gt;&amp;lt;domain&amp;gt;GData&amp;lt;/domain&amp;gt;&amp;lt;code&amp;gt;ServiceForbiddenException&amp;lt;/code&amp;gt;&amp;lt;internalReason&amp;gt;403.4 SSL required&amp;lt;/internalReason&amp;gt;&amp;lt;/error&amp;gt;&amp;lt;/errors&amp;gt;&lt;/span&gt;&lt;/blockquote&gt;&lt;br /&gt;The python-gdata versions before 2.0.5 can't upload PDFs to Google Docs, anyway. We get the following error for those:&lt;br /&gt;&lt;blockquote class="tr_bq"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;{'status': 415, 'body': 'Content-Type application/pdf is not a valid input type.', 'reason': 'Unsupported Media Type'}&lt;/span&gt;&lt;/blockquote&gt;&lt;br /&gt;python-gdata 2.0.15 doesn't work with GoogleCL to upload to Google Docs, either. Currently, we get this error, which seems to be a GoogleCL error related to some change in gdata from 2.0.14 to 2.0.15:&lt;br /&gt;&lt;br /&gt;&lt;blockquote class="tr_bq"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;from gdata.docs.data import MIMETYPES&lt;br /&gt;ImportError: cannot import name MIMETYPES&lt;/span&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;*In the directory: googlecl/src/googlecl/docs/ .&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1267998025422679901-9190501103416982451?l=atechyblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://atechyblog.blogspot.com/feeds/9190501103416982451/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://atechyblog.blogspot.com/2011/11/python-gdata.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1267998025422679901/posts/default/9190501103416982451'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1267998025422679901/posts/default/9190501103416982451'/><link rel='alternate' type='text/html' href='http://atechyblog.blogspot.com/2011/11/python-gdata.html' title='Python Gdata'/><author><name>Coila</name><uri>http://www.blogger.com/profile/17751559310182057693</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1267998025422679901.post-7605561864567722375</id><published>2011-07-10T20:37:00.000-07:00</published><updated>2011-09-26T13:56:10.759-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='gedit'/><title type='text'>Hacking Gedit</title><content type='html'>If I have time this summer, I'd like to help fix bugs in gedit. I LOVE gedit and I want to contribute. Here's a heads up for those of you installing gedit from the git repository instead of from the tarball which, I believe, is what they recommend. . . but it's certainly what I prefer, anyway.&lt;br /&gt;&lt;br /&gt;I edited their README to include install directions for people checking it out from git. We'll see if/when they take the patch. They have a good reputation for accepting help.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;Simple install procedure for gedit if you checked out the source code from git:&lt;br /&gt;&lt;br /&gt;(you may have done this already) download the most recent version of gedit&lt;br /&gt;% git clone git://git.gnome.org/gedit  &lt;br /&gt;&lt;br /&gt;change to the toplevel directory&lt;br /&gt;% cd gedit &lt;br /&gt;&lt;br /&gt;generate the `configure' script&lt;br /&gt;% ./autogen.sh &lt;br /&gt;&lt;br /&gt;run the `configure' script&lt;br /&gt;% ./configure &lt;br /&gt;&lt;br /&gt;build gedit&lt;br /&gt;% make   &lt;br /&gt;&lt;br /&gt;[ Become root if necessary ]&lt;br /&gt;&lt;br /&gt;install gedit&lt;br /&gt;% make install&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1267998025422679901-7605561864567722375?l=atechyblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://atechyblog.blogspot.com/feeds/7605561864567722375/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://atechyblog.blogspot.com/2011/07/hacking-gedit.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1267998025422679901/posts/default/7605561864567722375'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1267998025422679901/posts/default/7605561864567722375'/><link rel='alternate' type='text/html' href='http://atechyblog.blogspot.com/2011/07/hacking-gedit.html' title='Hacking Gedit'/><author><name>Coila</name><uri>http://www.blogger.com/profile/17751559310182057693</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1267998025422679901.post-4952482073287194652</id><published>2011-06-30T19:45:00.000-07:00</published><updated>2011-07-10T20:44:17.723-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='chemistry'/><title type='text'>Chem 101</title><content type='html'>My study partner and I find our solubility chart a bit muddled for quick equation balancing. &lt;a href="https://docs.google.com/document/pub?id=1_uir5TOihFJPxJBG7t7-pUXVd5EFGg9rTZr0L7IGeME"&gt;Here&lt;/a&gt;'s our answer to this problem.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1267998025422679901-4952482073287194652?l=atechyblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://atechyblog.blogspot.com/feeds/4952482073287194652/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://atechyblog.blogspot.com/2011/06/chem-101.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1267998025422679901/posts/default/4952482073287194652'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1267998025422679901/posts/default/4952482073287194652'/><link rel='alternate' type='text/html' href='http://atechyblog.blogspot.com/2011/06/chem-101.html' title='Chem 101'/><author><name>Coila</name><uri>http://www.blogger.com/profile/17751559310182057693</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1267998025422679901.post-8137178262386439357</id><published>2011-02-28T20:46:00.000-08:00</published><updated>2011-07-11T08:34:55.782-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='General Linux/Unix'/><title type='text'>Technical Skills Update</title><content type='html'>This quarter, I'm taking a Shell Programming class. I keep finding things that would have been useful to know *before* I started hacking the Linux kernel and AOSP. It's an interesting class, though. Better late than never, right?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1267998025422679901-8137178262386439357?l=atechyblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://atechyblog.blogspot.com/feeds/8137178262386439357/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://atechyblog.blogspot.com/2011/02/technical-skills-update.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1267998025422679901/posts/default/8137178262386439357'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1267998025422679901/posts/default/8137178262386439357'/><link rel='alternate' type='text/html' href='http://atechyblog.blogspot.com/2011/02/technical-skills-update.html' title='Technical Skills Update'/><author><name>Coila</name><uri>http://www.blogger.com/profile/17751559310182057693</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1267998025422679901.post-6819395279231374882</id><published>2011-02-28T20:44:00.000-08:00</published><updated>2011-07-11T08:34:23.955-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='gedit'/><title type='text'>gedit</title><content type='html'>I love that I can highlight a block of code and comment or un-comment it all with two clicks of the mouse! Saves so much time!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1267998025422679901-6819395279231374882?l=atechyblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://atechyblog.blogspot.com/feeds/6819395279231374882/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://atechyblog.blogspot.com/2011/02/gedit.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1267998025422679901/posts/default/6819395279231374882'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1267998025422679901/posts/default/6819395279231374882'/><link rel='alternate' type='text/html' href='http://atechyblog.blogspot.com/2011/02/gedit.html' title='gedit'/><author><name>Coila</name><uri>http://www.blogger.com/profile/17751559310182057693</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1267998025422679901.post-2053890012094238531</id><published>2010-09-07T10:21:00.000-07:00</published><updated>2010-09-07T14:26:05.548-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Android Hacking'/><title type='text'>Reboot-Persisting All-User-Access USB Serial Port on Froyo</title><content type='html'>I  turned the &lt;a href="http://atechyblog.blogspot.com/2010/08/enabling-serial-port-on-nexus-one.html"&gt;USB into a serial port&lt;/a&gt;. Then, I noticed it &lt;a href="http://atechyblog.blogspot.com/2010/08/note-on-enabled-serial-port-for-nexus.html"&gt;wasn't usable without superuser permissions&lt;/a&gt;. Recently, I got some great information from a former Android coder and have now have a permanent fix that persists on reboot with Android 2.2 (Froyo).&lt;br /&gt;&lt;br /&gt;First, I edit init.mahimahi.c&lt;br /&gt;(mahimahi is the board for Nexus One (aka HTC Passion), if you're working on another HTC device, you'll need to edit the right file for your device).&lt;br /&gt;&lt;blockquote style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;$ gedit path/to/device/htc/&lt;b&gt;passion/init.mahimahi.c&lt;/b&gt;&lt;/blockquote&gt;&lt;br /&gt;I put the following at lines 64 and 65.&lt;br /&gt;&lt;blockquote style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;#mwk: Enable Serial Port for all users&lt;br /&gt;chmod 0777                /dev/ttyMSM0&lt;/blockquote&gt;&lt;br /&gt;I run lunch.&lt;br /&gt;&lt;blockquote style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;~/mydroid$ . build/envsetup.sh&lt;br /&gt;~/mydroid$ lunch&lt;/blockquote&gt;&lt;blockquote&gt;I choose option 4 (full_passion)&lt;/blockquote&gt;&lt;br /&gt;I plug in a Nexus One and extract the device info. &lt;br /&gt;&lt;blockquote style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;~/mydroid$ cd device/htc/passion&lt;br /&gt;~/mydroid/device/htc/passion$ ./extract-files.sh&lt;/blockquote&gt;&lt;br /&gt;I re-make the &lt;a href="http://source.android.com/source/download.html"&gt;AOSP&lt;/a&gt;.&lt;br /&gt;&lt;blockquote style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;~/mydroid/device/htc/passion$ cd ../../..&lt;br /&gt;~/mydroid$ make&lt;/blockquote&gt;&lt;br /&gt;I get the phone in bootloader mode (the fast way).&lt;br /&gt;&lt;blockquote style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;$ adb reboot-bootloader&lt;/blockquote&gt;&lt;br /&gt;I flash the device. (On &lt;a href="http://blog.alsutton.com/2010/06/29/building-aosp-for-the-nexus-one/"&gt;this&lt;/a&gt; website, step 14 didn't work for me, so I now run the command this way.)&lt;br /&gt;&lt;blockquote style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;~/mydroid/out/host/linux-x86/bin$ sudo ./fastboot -p passion -w flashall&lt;/blockquote&gt;&lt;br /&gt;On the phone, I enable applications from unknown sources.&lt;br /&gt;&lt;blockquote&gt;Settings--&amp;gt; Applications --&amp;gt; Unknown sources --&amp;gt; checked&lt;/blockquote&gt;&lt;br /&gt;Also, on the phone, I enable USB Debugging, Stay Awake, and Allow Mock Locations.&lt;br /&gt;&lt;blockquote&gt;Settings--&amp;gt; Applications --&amp;gt; Development --&amp;gt; checked all three&lt;/blockquote&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1267998025422679901-2053890012094238531?l=atechyblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://atechyblog.blogspot.com/feeds/2053890012094238531/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://atechyblog.blogspot.com/2010/09/reboot-persisting-all-user-access-usb.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1267998025422679901/posts/default/2053890012094238531'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1267998025422679901/posts/default/2053890012094238531'/><link rel='alternate' type='text/html' href='http://atechyblog.blogspot.com/2010/09/reboot-persisting-all-user-access-usb.html' title='Reboot-Persisting All-User-Access USB Serial Port on Froyo'/><author><name>Coila</name><uri>http://www.blogger.com/profile/17751559310182057693</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1267998025422679901.post-1705429016860913728</id><published>2010-08-30T17:03:00.000-07:00</published><updated>2010-08-31T11:35:20.246-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Android Hacking'/><title type='text'>Using Newly-Compiled AOSP OS WITH My Hacked Kernel</title><content type='html'>(The rooting part&amp;mdash;steps 3 &amp; 4&amp;mdash; should not be necessary.) &lt;br /&gt;&lt;br /&gt;1. &lt;a href="http://atechyblog.blogspot.com/2010/08/compiling-android-os-take-3.html"&gt;Compile Android 2.2 v 1.1&lt;/a&gt;&lt;br /&gt;2. Flash complete Android 2.2 v 1.1&lt;br /&gt;3. Download UniversalAndroot-1.6.2-beta.apk from computer to phone&lt;br /&gt;&lt;blockquote style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;$ adb install /path/to/Universal-Androot-1.6.2-beta.apk&lt;/blockquote&gt;4. (On the phone.) Run Universal Androot for Android 2.2 from listed apps&lt;br /&gt;5. Get phone into bootloader mode: (Back on computer)&lt;br /&gt;&lt;blockquote style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;$ adb reboot-bootloader&lt;/blockquote&gt;6. Split the Android 2.2 v1.1 "boot.img" file into "boot.img-kernel" and "boot.img-ramdisk.gz".&lt;br /&gt;&lt;blockquote style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;$ ./split_bootimg.pl boot.img&lt;br /&gt;Page size: 2048 (0x00000800)&lt;br /&gt;Kernel size: 2206592 (0x0021ab80)&lt;br /&gt;Ramdisk size: 167182 (0x00028d0e)&lt;br /&gt;Second size: 0 (0x00000000)&lt;br /&gt;Board name: &lt;br /&gt;Command line: no_console_suspend=1 msmsdcc_sdioirq=1 wire.search_count=5&lt;br /&gt;Writing boot.img-kernel ... complete.&lt;br /&gt;Writing boot.img-ramdisk.gz ... complete.&lt;/blockquote&gt;6. Rename "zImage" (newly-compiled kernel) as "boot.img-kernel"&lt;br /&gt;&lt;blockquote style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;$ mv path/to/zImage other/path/to/boot.img-kernel&lt;/blockquote&gt;7. Zip up "boot.img-kernel" (formerly zImage) with "boot.img-ramdisk.gz"&lt;br /&gt;&lt;blockquote style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;./mkbootimg --kernel boot.img-kernel --ramdisk boot.img-ramdisk.gz -o my-boot.img --cmdline 'no_console_suspend=1 msmsdcc_sdioirq=1 wire.search_count=5' --base 0x20000000&lt;/blockquote&gt;8. Flash phone with new "my-boot.img" file&lt;br /&gt;&lt;blockquote style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;$ sudo ./fastboot flash boot my-boot.img&lt;/blockquote&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1267998025422679901-1705429016860913728?l=atechyblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://atechyblog.blogspot.com/feeds/1705429016860913728/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://atechyblog.blogspot.com/2010/08/using-newly-compiled-aosp-os-with.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1267998025422679901/posts/default/1705429016860913728'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1267998025422679901/posts/default/1705429016860913728'/><link rel='alternate' type='text/html' href='http://atechyblog.blogspot.com/2010/08/using-newly-compiled-aosp-os-with.html' title='Using Newly-Compiled AOSP OS WITH My Hacked Kernel'/><author><name>Coila</name><uri>http://www.blogger.com/profile/17751559310182057693</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1267998025422679901.post-7772690106290351131</id><published>2010-08-27T12:48:00.000-07:00</published><updated>2010-08-30T17:32:40.528-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Android Hacking'/><title type='text'>Compiling the Android OS: Take 3 -- It Works!</title><content type='html'>Last night, I followed the directions here: &lt;br /&gt;&lt;a href="http://forum.xda-developers.com/showthread.php?t=724240"&gt;http://forum.xda-developers.com/showthread.php?t=724240&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;I got to&amp;nbsp;&amp;nbsp; &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;~/mydroid/$ make&lt;/span&gt;&amp;nbsp;&amp;nbsp; and then let it compile last night. This morning, there was an error which is posted on this site: &lt;a href="http://www.androidiani.com/forum/144139-post15.html"&gt;http://www.androidiani.com/forum/144139-post15.html&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Basically, it was "&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;libgps.so, not found&lt;/span&gt;"&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;The following blog post has great instructions and a fix for this error, so I followed his directions from that point on. Thank you, Al Sutton!&lt;br /&gt;&lt;a href="http://blog.alsutton.com/2010/06/29/building-aosp-for-the-nexus-one/"&gt;http://blog.alsutton.com/2010/06/29/building-aosp-for-the-nexus-one/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;I flashed and rebooted the phone and it worked! &lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;1. From the top of the source tree go to &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;out/target/product/passion/&lt;/span&gt;&lt;br /&gt;2. Run “&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;sudo fastboot flash system system.img&lt;/span&gt;”&lt;br /&gt;3. Then run “&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;sudo fastboot flash boot boot.img&lt;/span&gt;”&lt;br /&gt;4. Then run “&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;sudo fastboot flash recovery recovery.img&lt;/span&gt;”&lt;br /&gt;5. Then run “&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;sudo fastboot flash userdata userdata.img&lt;/span&gt;”&lt;br /&gt;6. Then run “&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;sudo fastboot reboot&lt;/span&gt;”&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;The phone's display looks right again and it responds to the buttons again! :D I have a working compiled OS to work with now!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1267998025422679901-7772690106290351131?l=atechyblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://atechyblog.blogspot.com/feeds/7772690106290351131/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://atechyblog.blogspot.com/2010/08/compiling-android-os-take-3.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1267998025422679901/posts/default/7772690106290351131'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1267998025422679901/posts/default/7772690106290351131'/><link rel='alternate' type='text/html' href='http://atechyblog.blogspot.com/2010/08/compiling-android-os-take-3.html' title='Compiling the Android OS: Take 3 -- It Works!'/><author><name>Coila</name><uri>http://www.blogger.com/profile/17751559310182057693</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1267998025422679901.post-647677449746153313</id><published>2010-08-27T01:32:00.000-07:00</published><updated>2010-08-27T14:46:34.627-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Android Hacking'/><title type='text'>Compiling the Android OS: Take 2</title><content type='html'>Turns out, it's a bit more complicated than I &lt;a href="http://atechyblog.blogspot.com/2010/08/compiling-android-os.html"&gt;previously thought&lt;/a&gt;. I ran "&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;make clean&lt;/span&gt;" and then followed the instructions I've posted below. I've just run "&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;make&lt;/span&gt;" again (without the -j3). I'm letting it compile for the night and tomorrow morning I will hopefully be able to finish the next steps and flash the phone successfully this time!&lt;br /&gt;&lt;br /&gt;Thanks to &lt;b&gt;lpasq&lt;/b&gt; at &lt;b&gt;xda developers&lt;/b&gt; for posting the code I needed!&lt;br /&gt;&lt;a href="http://forum.xda-developers.com/showthread.php?t=724240"&gt;http://forum.xda-developers.com/showthread.php?t=724240&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;#clean out prior compiled files&lt;br /&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;make installclean&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;make clean&lt;/div&gt;&lt;br /&gt;#update AOSP froyo source files&lt;br /&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;repo init -u git://android.git.kernel.org/platform/manifest.git -b froyo&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;cd ~&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;repo sync&lt;/div&gt;&lt;br /&gt;#setup compiling environment and build&lt;br /&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;cd ~&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;. build/envsetup.sh&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;lunch&lt;/div&gt;&lt;br /&gt;#USB connect N1 and initiate ADB&lt;br /&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;cd ~&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;adb devices&lt;/div&gt;&lt;br /&gt;#ADB pull needed device files&lt;br /&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;cd ~&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;cd device&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;cd htc&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;cd passion&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;./extract-files.sh&lt;/div&gt;&lt;br /&gt;#build the Passion *.img's&lt;br /&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;cd ~&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;make -j3&lt;/div&gt;&lt;br /&gt;#view compiled folder's new boot.img/system.img/userdata.img&lt;br /&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;cd ~&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;cd out&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;cd target&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;cd product&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;cd passion&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;echo 'see flashable files:'&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;ls *.img&lt;/div&gt;&lt;br /&gt;#create update.zip&lt;br /&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;cd ~&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;make -j3 otapackage&lt;/div&gt;&lt;/blockquote&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1267998025422679901-647677449746153313?l=atechyblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://atechyblog.blogspot.com/feeds/647677449746153313/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://atechyblog.blogspot.com/2010/08/compiling-android-take-2.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1267998025422679901/posts/default/647677449746153313'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1267998025422679901/posts/default/647677449746153313'/><link rel='alternate' type='text/html' href='http://atechyblog.blogspot.com/2010/08/compiling-android-take-2.html' title='Compiling the Android OS: Take 2'/><author><name>Coila</name><uri>http://www.blogger.com/profile/17751559310182057693</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1267998025422679901.post-8985805212206134511</id><published>2010-08-26T15:02:00.000-07:00</published><updated>2010-08-31T11:42:01.485-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Android Hacking'/><title type='text'>A Note on the Enabled Serial Port for Nexus One</title><content type='html'>&lt;a href="http://atechyblog.blogspot.com/2010/08/enabling-serial-port-on-nexus-one.html"&gt;It worked&lt;/a&gt;! Then, I &lt;a href="http://credentiality2.blogspot.com/2010/08/nexus-one-htc-passion-compile-and-flash.html"&gt;flashed it to the phone&lt;/a&gt; and it persisted on reboot!&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;However, our apps could not access the newly-enabled serial port without superuser permissions. We fixed that this way.&lt;br /&gt;&lt;blockquote style="font-family: courier new;"&gt;$ ./adb shell&lt;br /&gt;$ su&lt;br /&gt;# chmod 777 /dev/ttyMSM0&lt;/blockquote&gt;Then, after rebooting the phone, the permissions for /dev/ttyMSM0 went back to normal (or were re-written on boot up).&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;For a phone running Cyanogen 6, I ran:&lt;br /&gt;&lt;blockquote style="font-family: courier new;"&gt;$ adb shell&lt;br /&gt;$ su&lt;br /&gt;# mount -o remount,rw /dev/block/mtdblock3 /system&lt;/blockquote&gt;I then pushed a file named 99foo to the phone's /etc/init.d/ directory (/etc/ is a symlink to /system/etc). The complete contents of 99foo:&lt;br /&gt;&lt;blockquote style="font-family: courier new;"&gt;#!/system/bin/sh&lt;br /&gt;#makes USB-serial available to all users&lt;br /&gt;chmod 777 /dev/ttyMSM0&lt;/blockquote&gt;&lt;br /&gt;I changed the permissions for 99foo so that they matched the permissions of the rest of the numbered files in this folder. I saw the existing permissions for 99foo as well as the rest of the numbered files by running this command:&lt;br /&gt;&lt;blockquote style="font-family: courier new;"&gt;# cd /etc/init.d&lt;br /&gt;# ls -l&lt;/blockquote&gt;Then, I used &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;chmod&lt;/span&gt; to add and take permissions as necessary. Then, I rebooted the phone. Now, the serial port is accessible to all users all the time!&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;For the phone running Android 2.2 with our hacked kernel, I will either edit the init.rc to allow access to /dev/ttyMSM0 for all users or, more likely, I will edit the init.rc file to run another file that I will write. Since I cannot edit init.rc while it's on the phone, I used this command (from my comPuter) to copy the init.rc to a location on my computer:&lt;br /&gt;&lt;blockquote style="font-family: courier new;"&gt;$ adb pull /init.rc /home/myname/init.rc&lt;/blockquote&gt;I will edit it. Then, I'll put it back with this command.&lt;br /&gt;&lt;blockquote style="font-family: courier new;"&gt;$ adb push /home/myname/init.rc /init.rc&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;I'm using this page for help.&lt;br /&gt;&lt;a href="http://www.androidenea.com/2009/08/init-process-and-initrc.html"&gt;http://www.androidenea.com/2009/08/init-process-and-initrc.html&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;I won't get to this very soon, as I have a more pressing matter to resolve. I'll blog more about it after I make some more progress.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1267998025422679901-8985805212206134511?l=atechyblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://atechyblog.blogspot.com/feeds/8985805212206134511/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://atechyblog.blogspot.com/2010/08/note-on-enabled-serial-port-for-nexus.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1267998025422679901/posts/default/8985805212206134511'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1267998025422679901/posts/default/8985805212206134511'/><link rel='alternate' type='text/html' href='http://atechyblog.blogspot.com/2010/08/note-on-enabled-serial-port-for-nexus.html' title='A Note on the Enabled Serial Port for Nexus One'/><author><name>Coila</name><uri>http://www.blogger.com/profile/17751559310182057693</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1267998025422679901.post-6753486176931944608</id><published>2010-08-26T14:21:00.000-07:00</published><updated>2010-08-27T00:19:07.488-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Android Hacking'/><title type='text'>Compiling the Android OS</title><content type='html'>I followed the directions on this site:&lt;br /&gt;&lt;a href="http://source.android.com/source/download.html"&gt;http://source.android.com/source/download.html&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;When I ran "make" from the "mydroid" folder, I kept getting this error:&lt;br /&gt;error: gnu/stubs-64.h: No such file or directory&lt;br /&gt;&lt;br /&gt;I'm using a 32-bit system, so I don't have a stubs-64.h. The installation guide says 64 bit systems are untested and they recommend a 32-bit system, so that seems like a strange error. Until, we did some looking around online and found out that the command they give on the installation guide points to something other than the stable froyo release (top of trunk, which I guess may be gingerbread or some updated version of froyo?).&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Then, I ran this (almost the same, but I specify which version of Android OS to reference):&lt;br /&gt;&lt;blockquote style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;$ repo init -u git://android.git.kernel.org/platform/manifest.git -b android-2.2_r1.1&lt;br /&gt;$ make&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;It compiled completely this time and now it's time to flash it to a phone!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1267998025422679901-6753486176931944608?l=atechyblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://atechyblog.blogspot.com/feeds/6753486176931944608/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://atechyblog.blogspot.com/2010/08/compiling-android-os.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1267998025422679901/posts/default/6753486176931944608'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1267998025422679901/posts/default/6753486176931944608'/><link rel='alternate' type='text/html' href='http://atechyblog.blogspot.com/2010/08/compiling-android-os.html' title='Compiling the Android OS'/><author><name>Coila</name><uri>http://www.blogger.com/profile/17751559310182057693</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1267998025422679901.post-1872848714544265683</id><published>2010-08-17T23:40:00.002-07:00</published><updated>2010-09-01T13:07:54.052-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Android Hacking'/><title type='text'>Enabling the Serial Port on a Nexus One</title><content type='html'>The Nexus One USB port works as a serial port when there's no power coming into the connector. But the stock kernel sets it up as a console. To use it as a general-purpose serial port, you have to use a kernel with CONFIG_USB_ANDROID_ACM enabled and CONFIG_MSM_SERIAL_DEBUGGER disabled.&lt;br /&gt;&lt;br /&gt;If you want to skip installing the NDK, downloading and compiling the kernel, you can &lt;a href="http://lunkwill.org/zImage.nexus-one.serial-port-enabled"&gt;try this precompiled zImage&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;We did this on a rooted Nexus One with an unlocked bootloader running Cyanogen CM6. It's probably not necessary to be running Cyanogen for this to work.&lt;br /&gt;&lt;br /&gt;Download NDK from here:&lt;br /&gt;&lt;a href="http://developer.android.com/sdk/ndk/index.html"&gt;http://developer.android.com/sdk/ndk/index.html&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Install NDK using instructions from the website.&lt;br /&gt;&lt;br /&gt;Make sure arm-eabi-gcc is in your path.  It's in android-ndk-r4b/build/prebuilt/linux-x86/arm-eabi-4.4.0/bin.  &lt;div&gt;(export PATH=$PATH:/path/to/android-ndk-r4b/build/prebuilt/linux-x86/arm-eabi-4.4.0/bin to add it)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Make sure your machine has git: $ sudo apt-get install git-core&lt;br /&gt;&lt;pre&gt;$ git clone git://android.git.kernel.org/kernel/msm.git&lt;br /&gt;$ git branch -a&lt;br /&gt;$ git checkout -b android-msm-2.6.32 origin/android-msm-2.6.32&lt;br /&gt;$ cd msm&lt;br /&gt;$ ARCH=arm CROSS_COMPILE=arm-eabi- make mahimahi_defconfig&lt;br /&gt;$ ARCH=arm CROSS_COMPILE=arm-eabi- make menuconfig&lt;br /&gt;Exit the menu and say "yes" when it asks if you want to save.&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;pre&gt;$ gedit .config&lt;br /&gt;Turn on CONFIG_USB_ANDROID_ACM (uncomment it and change "is not set" for "=y").&lt;br /&gt;Turn off CONFIG_MSM_SERIAL_DEBUGGER (comment it out)&lt;br /&gt;Turn off CONFIG_MSM_FIQ_SUPPORT&lt;br /&gt;$ ARCH=arm CROSS_COMPILE=arm-eabi- make&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;The kernel image should compile and is found in arch/arm/boot/zImage&lt;br /&gt;&lt;br /&gt;Try kernel without permanently storing it on the phone. Download fastboot from here:&lt;br /&gt;&lt;a href="http://developer.htc.com/adp.html"&gt;http://developer.htc.com/adp.html&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Reboot into fastboot mode. Power up the Nexus One while holding the trackball. Plug in the USB cable and the fastboot screen should say "fastboot usb".&lt;br /&gt;&lt;pre&gt;$ sudo ./fastboot boot /path/to&lt;something&gt;/msm/arch/arm/boot/zImage&lt;br /&gt;&lt;/something&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;If you get this message, then you probably forgot to run as root.&lt;br /&gt;&lt;blockquote&gt;sm/arch/arm/boot/zImage&lt;br /&gt;creating boot image...&lt;br /&gt;creating boot image - 2232320 bytes&lt;br /&gt;&amp;lt; waiting for device &amp;gt;&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;Once the phone boots up, use adb shell to ls /dev/tty* and if you see dev/ttyMSM0, it worked. (We haven't tried actually using the port yet).&lt;br /&gt;&lt;br /&gt;When you reboot you'll be back into your old kernel. Haven't flashed this for real yet.&lt;br /&gt;&lt;br /&gt;Check out the xda-developers.com thread linked below for more info on actually using the serial port.&lt;br /&gt;&lt;br /&gt;The following sites were helpful:&lt;br /&gt;&lt;a href="http://androidboss.com/custom-linux-kernel-for-nexus-one/"&gt;http://androidboss.com/custom-linux-kernel-for-nexus-one/&lt;/a&gt;&lt;br /&gt;&lt;a href="http://forum.xda-developers.com/archive/index.php/t-625434.html"&gt;http://forum.xda-developers.com/archive/index.php/t-625434.html&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1267998025422679901-1872848714544265683?l=atechyblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://atechyblog.blogspot.com/feeds/1872848714544265683/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://atechyblog.blogspot.com/2010/08/enabling-serial-port-on-nexus-one.html#comment-form' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1267998025422679901/posts/default/1872848714544265683'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1267998025422679901/posts/default/1872848714544265683'/><link rel='alternate' type='text/html' href='http://atechyblog.blogspot.com/2010/08/enabling-serial-port-on-nexus-one.html' title='Enabling the Serial Port on a Nexus One'/><author><name>Coila</name><uri>http://www.blogger.com/profile/17751559310182057693</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1267998025422679901.post-6230817990004873211</id><published>2010-08-17T23:40:00.001-07:00</published><updated>2010-08-17T23:40:37.702-07:00</updated><title type='text'>Hello World!</title><content type='html'>I have a technical blog. &lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;The end.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1267998025422679901-6230817990004873211?l=atechyblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://atechyblog.blogspot.com/feeds/6230817990004873211/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://atechyblog.blogspot.com/2010/08/hello-world.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1267998025422679901/posts/default/6230817990004873211'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1267998025422679901/posts/default/6230817990004873211'/><link rel='alternate' type='text/html' href='http://atechyblog.blogspot.com/2010/08/hello-world.html' title='Hello World!'/><author><name>Coila</name><uri>http://www.blogger.com/profile/17751559310182057693</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry></feed>
