Dreamstime

Monday, 5 October 2015

A Brief Update On Picasa And RavenPlus

Python & XML By Christopher A. Jones & Fred L. Drake, Jr. Just a quick note to say that I am still working on the Picasa upload function (via the OAuth2 authentication) in RavenPlus.

To say the least, I am struggling; struggling with XML processing in Python. All this while, I have been avoiding this subject area as it looks complicating. After spending a couple of days on this, it still is. I am not at all familiar with XML processing in Python or in any other computer programming language. There is a 357 pages book written on this topic, but this is something that is not easily digestible in a short time. Hands-on work through the examples in the book is required.

The Google Picasa API part is easy, thanks to an example Python script that found off the Internet. In fact, I managed to upload a few pictures to Picasa web via my own customised Python script with OAuth2 authentication. The problem now is in saving the uploaded picture file's meta-data (the information that is returned from Picasa web) into RavenPlus. Not getting this meta-data into the RavenPlus' Picasa registry means RavenPlus is unaware of the successful picture upload.

Thursday, 17 September 2015

A Golden Tree Snake

Headshot Of A Golden Tree Snake

My Wish Granted

Ever since my first encounter some 3 years back, I have always wanted to know the identity of this snake. Now I do; it is a Golden Tree Snake - much appreciation to Google Image search for helping me.

Ever since I took this rather uninspiring picture some 14 months back, I have always wanted to redeem myself. Now I have, as my luck would have it one fine morning in the month of June 2015.

Wednesday, 9 September 2015

Customizing Google API Python Client Version 1.2 For Python 2.4

I extended RavenPlus to support Google OAuth2 authentication for Blogger/Blogspot with the help of the Google API Client Library for Python version 1.2. Out of the box, this library does not support Python version 2.4, the version in which RavenPlus (and Raven) was built. Below are the modifications, in RED, that I have made to this library to get it working with version 2.4 of Python.

Wednesday, 26 August 2015

RavenPlus Version 1.0.506 - Post Scheduling In Blogger/Blogspot

I have a confession. I actually had the 'post scheduling' feature included in RavenPlus during development. But I had it removed a few days before releasing RavenPlus Version 1.0.505.

While under development, I noticed that one of my blog post had its URL set to my blog homepage. The reason (after much tracing): my PC was running about 60 seconds ahead of the Blogger/Blogspot server - it became a schedule post, which is technically correct. Because of this, I wrongly assumed that it was better to let Blogger/Blogspot set the publishing time of a blog post, rather than by RavenPlus, without realising that I had mistakenly taken the 'post scheduling' feature away.

I am now undoing my mistake with RavenPlus Version 1.0.506. My apologies.

Friday, 14 August 2015

RavenPlus Version 1.0.505

I am releasing RavenPlus version 1.0.505 today. This release, although half-baked, is of special interest to existing users of Zoundry Raven and RavenPlus who are facing problems in publishing to Blogger/Blogspot. Google shutdown 'ClientLoging' completely in late May 2015, resulting in Raven and older versions of RavenPlus getting crippled.

At the moment, only the following Google OAuth2 aware publishing functions are available to users of Blogger/Blogspot:

Tuesday, 4 August 2015

RavenPlus & OAuth2 - 2 Prerequisites For Blogspot Users

If you blog on Google's Blogger/Blogspot, then read on.

Otherwise - users of Wordpress, for example - you have nothing to worry about. This blog post doesn't apply to you.

The 'Google OAuth2 authentication aware' version of RavenPlus, in which I am currently working on, is built using the Google's Blogger API version 3. As a consequence, to publish your blog post to Blogger/Blogspot with RavenPlus, you will need to do two things:

  • activate the Blogger API (version 3) for yourself; and
  • download the "client_secrets.json" file (in which your "Client ID" and "Client Secret" is stored) to your PC.

Sorry for the hassle, but Google's Terms Of Service doesn't allow me to share my "Client ID" and "Client Secret".

Tuesday, 28 July 2015

RavenPlus Updates - 28th July 2015

Here are some updates on what's happening on my work with RavenPlus and OAuth2 since my last update about 4 weeks ago.

What's Working

I have completed the following functions in RavenPlus:

  1. Insert new post
  2. Update an existing post
  3. Delete an existing post
  4. Downloading recent posts (including Blogger labels)

The time taken for item (4) is a little longer because I had to take a detour to learn about Python's 'list', 'tuple' and 'dictionary'. Otherwise I could not proceed. I never had to in my previous fixes as there wasn't a need to.

Saturday, 18 July 2015

When Keystrokes Triggered Nothing In Raven/RavenPlus


I was suppose to publish this post on 28th May 2015. Little did I know then that Google had planned to shutdown the ClientLogin authentication protocol on that faithful day. Obviously, my attempts to publish this blog post failed. If only they had published a notification on my Blogger dashboard (something that I login to everyday) rather then at their developer blogs and forums (something that I did not access until recently).

But irrespective, I still maintain that this is still the most difficult bug fix in Zoundry Raven/RavenPlus for me, despite my work on OAuth2 over the last couple of weeks.

The blog post follows below.


This must have been the most difficult bug fix for Zoundry Raven/RavenPlus so far. With variables to track and multiple levels of inheritance for certain Python Classes, pretty soon I got confused while tracing through the code. I have to virtually see the code in my sleep before I finally figured out the root cause of this problem: variables not being reset correctly after clicking the "Save" button within the editor. A very common programming mistake, if I may add.

I can only think of 2 states that the Raven/RavenPlus editor could be in at any one time - "Content NOT Modified" or "Content Modified". In the "Content NOT Modified" state, the "Save" button is disabled. Make any changes, by keying something on the keyboard for example, will change the editor from the "Content NOT Modified" to the "Content Modified" state. This should trigger an event to enable the "Save" button. Click on the "Save" button and the state will change back to "Content NOT Modified" from "Content Modified" - and disabling the "Save" button at the same time.

However, I have encountered a number of times when keying in something on the keyboard triggered nothing while editing. The "Save" button remains disabled no matter how many times I banged on the keyboard.

Friday, 10 July 2015

My Contribution To The 2015 MY Garden Birdwatch Survey

The table below is my contribution to this year's MY Garden Birdwatch Survey. I did my counting on 20th June 2015, between 4:00 PM and 4:30 PM from my bedroom windows upstairs. This is my fourth year of participation. Yeah! Me a citizen scientist.

A Jungle Myna

On That Day

Loud chattering at my front gate led me to catch sight of 2 Jungle Mynas. They are not common visitors to my home. So I guess a little bird must have told them about this year's birdwatch survey that I am conducting and they did not want to be left out.

Saturday, 27 June 2015

RavenPlus And Blogger's OAuth2 - My Work So Far

Hello! I'm Back

After working for something like 60 odd hours over some 20 odd days, I have finally managed to integrate Google's Blogger API Client for Python (version 3) into RavenPlus. Lots of pain; Lots of u-turns; Lots of challenges; And lots of stress along the way. This is something that I hope I will never have to do again.

A Snapshot Of My Work In Notepad++

I have to write 3 extra Python modules in all. These 3 modules are all to do with publishing to Google's Blogger with authentication via OAuth2, obviously. It is a good thing that Raven was well designed. Existing publishing modules (to Wordpress, for example) are not disturbed. It is a good thing too that there is a Python Client Libraries for Blogger API. Otherwise, there will be more work and complexity.