Showing posts with label links. Show all posts
Showing posts with label links. Show all posts

Saturday, May 29, 2010

Launchpad project setup

Hi everybody! It's been a while. On Wednesday evening I broke my Ubuntu (installed an old udev driver) and made it unusable. I recovered on Thursday, talked to my mentor, seeked some feedback on IRC and investigated OAuth behaviour (there are still issues, doesn't work every time).

I have setup a launchpad project, which you will find here. Since I don't want people to unintentionally bzr branch (download) the development sources, which can be broken any time and are suitable for review (or testing) only, I have left the trunk series with main branch empty. Therefore if you're interested in the devel branch, check this out. Whenever I will implement a feature in 0.x series, I will push that to the main branch.

Tomorrow I'm co-organizing this http://goo.gl/YGSX conference, and afterwards I plan to see into releases, blueprints and milestones of the lp project (+ some nightly hacking).

Stay tuned. I wonder if my project can have it's mailing list.. ah! I'll set up androidu1-users group :D

PS I should have started writing my blog post in HTML long ago ;) No stress at all.

Monday, May 24, 2010

First official coding day (night?)

I knew I would overdo it.. The beards are already singing and it's 4:15 AM on the clock :P
Is this the best coding time, or what :D! I was afraid of OAuth, which I'm new to, so I dug tens of pages and browsed at least 5-6 sample codes, using this or that, newer or older oauth version, with and without callback, blah blah blah. And I got it :D Signpost is dead simple (yeah, it's true what they write :) ), and they have those lovely sample codes, so I used one :) I jumped into ubuntuone-client Python code and dug a reference to /etc/xdg/ubuntuone/oauth_urls which I needed, set up few more variables, and..
Fetching request token from Ubuntu One...
Request token: GnpqrjR98jBcXXXXXXX
Token secret: pvBlJDjq1jgm9M14rzx0hgH2xXNnhFG8zC3VkqxDdshrSKcnbBNJwD6CCJR4XXXXXXXX
Now visit:
https://one.ubuntu.com/oauth/authorize/?oauth_token=GnpqrjR98jBXXXXXXXX
... and grant this app authorization
Enter the PIN code and hit ENTER when you're done:
XXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXX
Fetching access token from Ubuntu One...
Access token: ddxQlp8tfltXXXXXXXX
Token secret: Zn172Q7xsFdTlfB58LhLg4c8TzFmHRRhLWMQDCdvrrjJ27d0fkbk8qvVjN9rtbcnmfXXXXXXXXXXXXX
Sending request to Ubuntu One...
Response: 200 OK
Well, I'm more confident now ;)

Tuesday, May 18, 2010

Regular update, May 17th

That was quite a constructive evening! (And yet it has not finished)


Had a short IRC chat with my mentor, mentioned setting up a Launchpad project, and got a link to an article relating to OAuth, as this is an area I'm not yet confident in:
http://fireeagle.yahoo.net/developer/documentation/oauth_best_practice

Then I have talked to verterok (thanks for invaluable pointers on u1-java-storageprotocol !! Now I know where to start playing around), collecting further links:
(python script to extract my OAuth token from gnome-keyring for testing purposes)

Then found those three, perhaps semi-related, since OAuth nature is browser-based:
We need to register such callback schema handling: x-oauth-androidu1://callback 
And this one nails it!

Monday, May 17, 2010

Regular update, May 16th

Today I read a bit from Android UI Guidelines, followed by doing Hello World and Notepad Tutorial step by step, very informative :) I also imported to Eclipse the Sample Sync Adapter sample code and poked around, but was sad to realize that the target Android API was 2.0, which means that if I would implement some sync functionality as the last stage of GSoC, the application wouldn't be compatible with older phones. I also hit #ubuntuone and #ubuntu-devel to get these GUI design tools:

  • http://incompetech.com/graphpaper/squaredots/ (pen and paper are still fancy)
  • http://www.balsamiq.com/ (however that I've also found earlier)

I also started to poke around ubuntuone-java-storageprotocol, but I see I'll really need some pointers from verterok on this.

Thursday, May 6, 2010

Regular update, May 5th

From the User Interface, I have read Declaring Layout and Creating Menus sections.


More importantly, till late night I have talked to Guillermo (verterok at #ubuntuone) about Java implementation of ubuntuone storage protocol. He started it in January (it's still in the +junk ;) ), and though it's missing some features, it already handles get/put, which is great news! This means that, instead of getting dirty (at least for now!) with the low level details, I'll be able to focus on the application itself. verterok has therefore laid some basis on which I can build the Android app, very fortunate :) !


Here I'd like to thank him for his patience and time he spent helping me figure out maven issues, when attempting to compile ubuntuone-java-storageprotocol . I'll finish this entry with triumphal


[INFO] BUILD SUCCESSFUL
[INFO] ------------------------------------------
[INFO] Total time: 8 seconds
[INFO] Finished at: Thu May 06 02:10:02 CEST 2010

Yup, time to get some sleep.

Sunday, May 2, 2010

Regular update, May 1st

Videos watched & notes taken + reading materials


Androidology - Architecture Overview [ link ]

Decompose the app into application building blocks, which include
  • Activities
  • BroadcastReceivers (triggered by any event)
  • Services
  • ContentProviders
Androidology - Application Lifecycle [ link ]
Androidology - APIs [ link ]


Google I/O 2009 - ...Make your Android UI Fast and Efficient [ link ] (good one!)
  • reuse views with Recycler for higher fps
  • prescale bitmaps with
    image = Bitmap.createPrescaledBitmap(image, view.getWidth(), view.getHeight(), true);
  • remove backgrounds from views, which fill parents full width and height (eg if you have a map, you don't see the background, which is still rendered) [00:17:23]
  • invalidate() to redraw a view is inefficient, use invalidate(rect) or invalidate(left, top, right, bottom)
  • fewer (views) is better ;) (try to get rid of views that have only one child, too: HierarchyViewer)
  • use compound drawables (eg TextView instead of ImageView+TextView)
  • use ViewStub to inflate part of the UI on demand (eg for part of the UI that for majority of the time is invisible) [00:35:20]
  • use merge tag to reuse UI hierarchy elements
  • RelativeLayout instead of embedding linear layouts; hard to use, but it pays off
  • use custom views, custom layouts instead of overusing numerous views
  • garbage collection kicks in for 100~500ms, stops threads (so allocate little memory, or even none :d)
  • do not allocate memory in those time-critical points:
onMeasure()
onLayout()
draw()
dispatchDraw()
onDraw()
dispatchTouchEvent()

Saturday, May 1, 2010

Recommended reading


For students using GSoC mailing lists:
This will be probably announced soon:

For mentors:

Wednesday, April 28, 2010

Accepted to GSoC 2010!

And here we are, AndroidU1 has been accepted to Google Summer of Code 2010Yay! That has actually taken place on 26th of April at 19 UTC, however it's just now that I set up this blog (which for a short moment was a wiki).

I am happy to have Stuart Langridge as my mentor! Stuart is one of the most notable Canonical employees. I was amazed to find him on Canonical wiki page and this wiki page, and read what a talented guy he is. We have already had a few chats on IRC concernig AndroidU1 project and did some brainstorming, and I'm already sure I will have great support of his whilst designing and implementing the next killer app for Ubuntu One service ;) !

It so happened, that we are just about the release of Lucid Lynx (Ubuntu 10.04 LTS, yay!) and Ubuntu One team, including aquarius, are making their best efforts to ship a high quality product really soon. That is the reason I'm not bugging them already to fill me with U1 details, but rather giving them some time to polish their work before release. Anyway, there's tons to read for me :)