GSoC 2013: current state

Hi guys,
I’m here again to update you about my work on my Google Summer of Code of the past year. I know, it’s been a while since there is no official update on my project, but I didn’t abandoned it, so here is something I’ve done (on my spare time).
I’ve cleaned up the code and added some more functionality (as the multi-blogs management part and other small features).
Now, the app is not yet on the BlackBerry AppWorld (since this is still a betaBeta A pre-release of software that is given out to a large group of users to trial under real conditions. Beta versions have gone through alpha testing in-house and are generally fairly close in look, feel and function to the final product; however, design changes often occur as part of the process.), but I think I’m now able to release it (as a release candidateRelease Candidate A beta version of software with the potential to be a final product, which is ready to release unless significant bugs emerge.) on the store, at least to grab more tester.

So, here is the link to my githubGitHub GitHub is a website that offers online implementation of git repositories that can can easily be shared, copied and modified by other developers. Public repositories are free to host, private repositories require a paid subscription. GitHub introduced the concept of the ‘pull request’ where code changes done in branches by contributors can be reviewed and discussed before being merged be the repository owner. https://github.com/ repos (with the latest sources) :
https://github.com/b0unc3/WordPress-bb10

In the repo you’ll find, in the beta/ folder, the latest installable .bar (1.2.7.2)
https://github.com/b0unc3/WordPress-bb10/raw/master/beta/wp_bb10-1_2_7_2.bar

I’ll put it on the store today, the available link will follow soon.

If you are able to try this app, please report any kind of feedback to me.

Best Regards,
Daniele Maio.

#blackberry, #gsoc

GSoC – week 15: All done.

Here we are, I’ve completed my project and submitted all the stuff to the GsoC for the final evaluation. Now I don’t want to bother you with more word, let’s go to the serious thing 🙂

Here is a short demo of the app running on my BlackBerry Z10 (sorry for the poor quality!):
http://www.youtube.com/watch?v=89L8kQjCCQo

The project sources code are on the official SVNSVN Apache Subversion (often abbreviated SVN, after its command name svn) is a software versioning and revision control system. Software developers use Subversion to maintain current and historical versions of files such as source code, web pages, and documentation. Its goal is to be a mostly compatible successor to the widely used Concurrent Versions System (CVS). WordPress core and the wordpress.org released code are all centrally managed through SVN. https://subversion.apache.org/. repo here :
https://gsoc.svn.wordpress.org/2013/b0unc3/trunk/

There is also a GITGit Git is a free and open source distributed version control system designed to handle everything from small to very large projects with speed and efficiency. Git is easy to learn and has a tiny footprint with lightning fast performance. Most modern plugin and theme development is being done with this version control system. https://git-scm.com/. repo, here :
https://github.com/b0unc3/WordPress-bb10

For whom feel brave enough, but not enough to compile and run the code 🙂 , a .bar betaBeta A pre-release of software that is given out to a large group of users to trial under real conditions. Beta versions have gone through alpha testing in-house and are generally fairly close in look, feel and function to the final product; however, design changes often occur as part of the process. package is present in all the repos in a “beta/” directory it contains the latest version installable on your devices.
You can install it with the blackberry-delpoy command line tool, or by sideloading it (google will help you with it 😉 )

svn : https://gsoc.svn.wordpress.org/2013/b0unc3/trunk/beta/wp_bb10-1_0_0_1.bar
git: https://github.com/b0unc3/WordPress-bb10/blob/master/beta/wp_bb10-1_0_0_1.bar

That’s all! I hope you find comfortable with it. If you have any suggestions/critics/feedback/whatever, please, feel free to contact me directly.

I want to give a special big thanks to the WordPress community and GsoC program, I found this experience amazing and I learned a lot!
Thanks!

Best Regards,
Daniele Maio.

#blackberry, #gsoc

GSoC – week 13: Finishing up

During this week I’ve tried to found and fix some bugs, currently I’ve a working app, it does all the basic stuff for blogs management, I’ve tried to make it as easy as possible, I’m not a blogger, so i hope that who have to use it daily will found it usable and comfortable. The app looks perfectly integrated into the bb10 system. There are still some bugs and glitches that I’m try to fix, I’ll do my best to get it fixed by monday. I’m trying to record a short screencast demo to show what I’ve done so far and how to use it. That’s all, the project fits with the schedule I’ve proposed, the only missed part is the categoryCategory The 'category' taxonomy lets you group posts / content together that share a common bond. Categories are pre-defined and broad ranging./tags management and other little features (I hope to have a chance to complete it once the GsoC is over, if possible). Now, for me, start the hard part, that is writing the documentation 🙂 I need to understand what I have to write and some other stuff, I’ll be in touch with my mentor that (hopefully) would help me.

#blackberry, #gsoc

GSoC – week 12: Almost Done

During this week I finished up the function to make a blog post, also with the upload of an image. This has taken a very long time and headaches, I’ve tried a lot of combinations to make this upload correct, but sometimes I got an xml with error on it and sometimes the xml looks good but the url point to a corrupted image (e.g. nothing to show), but at last, with the help of my mentor, I found out the problem and fixed it (basically I forgot to use the tag :/).
I’ve also fixed the multi-blogs part, now you can add more than one blog and choose the one to use on the fly, by the vertical menu that will show you a dialog with a dropdown list where you can select the blog you want to use.
Due to the problems I had with the image upload, that’s all for this week.
For the next week I’ll finish the comments/pages management, and I’ll do some lifting on the app.
Since we are approaching the ‘pencil down’ deadlines the next week should be the last for making some code, and I think this is fine, I feel in time with the schedule.
Later on today I’ll update the repo with the latest sources.

#blackberry, #gsoc

GSoC – week 11 : Something real

This has been an intensive week. I’ve merged other pieces of code…and that’s what I got:


What currently works, as you may understand from the screen shot above, is the view of posts/pages/comments, they are all displayed in a same-style listview, for the comments I coloured the status to get an hint at a first look.
The app is also capable of making a new post (no media yet, but I’m working on this).
I’ve created three menus, one contains the links to see the lists, another (on the right) contains the common actions to add a post/page/comment or refresh the page.
There is also another menu, that will appear once you long-press an item that would let you edit or delete it. There a problem raise up, it looks like this menu isn’t capable to access the other (already declared) available resources. I hope to found a solution/workaround quickly.
So, what is missed, and what I’ve to implement yet is: a better managment for multi-blogs (my mentor gave me a simple and huge advice on how to do that, so it would be done in a few days), the media upload stuff and complete the comments/pages managment.
That would be basically all, the app is ready now, you can test it if you want, the code is on the official repo.

#blackberry, #gsoc

GSoC – week 10 : Stumbling upon

In this week I had to face off with an hiccup (that really drives me nuts) due to a strange behavior during the XML parsing. Since I’m parsing the XML in Qt, I’ll put all the elements in a QvariantMap, but, it looks like, that some times the pairs key:value goes overwritten and return an unexpected value. I think I found out the reason and I made a quick workaround to fix this issue, I’ll dig more on it to find a stable solution.
Due to this hiccup I haven’t finished yet the UIUI UI is an acronym for User Interface - the layout of the page the user interacts with. Think ‘how are they doing that’ and less about what they are doing. part to make a post, I’ll hope, in order to get back on schedule, to have it done until the end of this week.
As suggested by my mentor, from the comment of the last week’s post, I’ve created another UI for the posts/pages/comments page using a vertical menu (sx) that contains the links to go to the Posts/Pages/Comments pages, and another vertical menu (dx), that would be a contextual menu, currently it only contains the actions of add/edit/delete (post/page/comment), not yet fully implemented.
There another little problem raise up, since I’m using a NavigationPane to go forward and back through the pages, and, for this new UI, I have to use a TabbedPane; well, a NavigationPane cannot call a page that contains a TabbedPane. I have to find a solution, I’ve already talked on #blackberrydev on IRC, they suggested some workaround, but nothing that has convinced me. I’ll dig more on this as well.
In the next days I’ll update the code on the repo.

#blackberry, #gsoc

GSoC – week 9 : merging up

During this lazy week (due to the mid-august holiday, that here in Sicily we spent all day and night in the beach, and everybody is on holiday) , I’ve finished the coreCore Core is the set of software required to run WordPress. The Core Development Team builds WordPress. for the function that make a post. I’ve also created some mock-ups about the post view, I’ve thinked about a lot of solutions, and I’ve shared some of these mock-up with my mentor, awaiting feedback. The most challenging part was that, in my mind, I would like to create some sort of skeleton of a basic UIUI UI is an acronym for User Interface - the layout of the page the user interacts with. Think ‘how are they doing that’ and less about what they are doing. to re-use it in the other pages (like comments, pages etc)
I’ve also populated the repo with the last code, that is a merge for the standalone functions that I’ve created before the UI. Nowadays the app is capable of doing the login process, searching for the XML-RPC endopoint, fetch the blog(s) list. There, as my mentor suggested to me, I’ve to modified a bit this function, because if there is just one blog I can skip the blog(s) selection UI. Once the blog(s) are been added, I could do the fetch of the recent posts.
Next step is to finish the UI, that will take no more than other few days, do the other function to make the call to see the comments/pages and merge the function to make a post.

#blackberry, #gsoc

GSoC – week 8 : revamping

During this week I’ve merged all the standalone code I’ve made during the past weeks, and, unfortunatly it needs some big modifications to fit in the project sources. I’ve (a little bit) revamped the login UIUI UI is an acronym for User Interface - the layout of the page the user interacts with. Think ‘how are they doing that’ and less about what they are doing. :

I’ve a working function for adding the blog(s) after the login process, it will be added in a ListView with a little icon to let the users add to the app the blog they want.
After this, I’m focusing my attention to make a good function to make a post, this is already working, jsut need some day of testing. I’m also working on how to make a good UI to present the posts already present on the added blog, and put also some toolbar icon to make some actions (like view comments and stuff like that).
Since the coreCore Core is the set of software required to run WordPress. The Core Development Team builds WordPress. functionality of make a post is almost done, I’ve also started to sketch the UI, this is a bit hard because I’ve to do it in a simpler way that the users can easily understand what they can do.
During this week I’ll talk to my mentor, to see which functionality are mandatory to be implemented and how to proceed.
For the next week I’ll update the new code to the repo, and show you the UI I’m talking about.

GSoC – week 7 : midterm is here

This week has been marked up by the upcoming midterm evaluation. I would like to do a little summary of what I’ve done till now.

Once I’ve started the Google Summer of Code, with the help of my mentor, we both decided, as for what was on my schedule, to start the project by making some mockup/skecth of the UIUI UI is an acronym for User Interface - the layout of the page the user interacts with. Think ‘how are they doing that’ and less about what they are doing.. This was a first exciting step for me, since I’ve never used ( in a ‘professional’ way ) those kind of tools, my mentor suggested me to use Balsamiq to do this stuff; a new tool to learn, but I think it is worth it, I’m quite sure I’ll use it again (sooner or later).
After this, that maybe has taken some more time than usual since it’s new for me, I’ve started making some code. I’ve improved my skills on Cascades and tried to make a good looking UI. Using Cascades and dealing with the layouts was nice, there are a lot of different layours for different situations and choosing the right one without trying the rest is a risk, so I’ve tried a pair of these, and then I choosed the one that, for me, fits best for the purpose I need (and is also pretty to see).
Later on I’ve made some code to implement the login process, but, the first move I made was partially wrong. Well, the problem is that the login process is a bit more complex than I had imagined. Anyway, thanks to the great help of my mentor that gave me a good understanding on what are the necessary steps to make a good login process, at last, I made it. The next big move has been to integrate this piece of code, in order to connect it with the interaction from the QML. It has been a little bit harder to do since Cascades connects the C++ classes in a different way than the pure QML does (that is what I’ve already used in the past), but, after some headaches, I got it working. So the big login part is almost over.
The current situation is then: a working UI with the fileds (username,password,blog address) to make the login, and a button, that once pressed, it will make some C++ call(s) to deal with the network stuff, downloading/parsing XML/HTMLHTML HTML is an acronym for Hyper Text Markup Language. It is a markup language that is used in the development of web pages and websites. and do all the other required steps for the login process.
Recently I’ve implemented a function to make a new blog post (currently without media). It is in an early stage, but, as far as I can tell, it seems to work.
For the next week(s) I will take care about the UI, the representation of the posts (I think I will go with the classic listview). I will also implement some more functionality and moreover, try to understand which features are necessary (or mandatory) to implement and decide where to place it (from a layout point of view).

#blackberry, #gsoc

GSoC – week 6 : things get serious

During this week I’ve realized that I should completly re-write the login process. Speaking with my mentor, he gave to me some hints and some steps to follow, to make a good login process.
These steps, at a first attempt, looks simple overall, but, integrate it in Qt/Cascades was a bit hard. To be honest, the most hard part has been to decide how to parse the HTMLHTML HTML is an acronym for Hyper Text Markup Language. It is a markup language that is used in the development of web pages and websites. to find some useful tags (e.g. Some tags that should contain a reference to the xmlrpc endpoint). The first idea that comes up in my mind was to use a regular expression to do it. But, by reading some articles online, many devs say that is not good to parse HTML using regular expression. Just a mandatory quote from a comment on stackoverflow:

“Every time you attempt to parse HTML with regular expressions, the unholy child weeps the blood of virgins, and Russian hackers pwn your webapp. Parsing HTML with regex summons tainted souls into the realm of the living. HTML and regex go together like love, marriage, and ritual infanticide. The cannot hold it is too late. The force of regex and HTML together in the same conceptual space will destroy your mind like so much watery putty. ”

Well, I’m quite agree with that, I get the point, but, in this situation, I think I can use a regular expression, without offending anyone, mostly because I had to catch some tags (two at max!).
So, I come up with a discovery function, that following these steps, ‘sanitize’ (somehow) the ‘Blog Address’ input, switching on determinate actions in base of the input.
Nowdays these steps have been fully implemented in Qt and integrated (but not completly yet) in Cascades. While I’m writing, I found a little problem with the Qnetwork stuff, but it should be fixable within this week.
I’ve also created a very first draft of a possible function to implement the necessary APIAPI An API or Application Programming Interface is a software intermediary that allows programs to interact with each other and share data in limited, clearly defined ways. call to make a blog post. For the next week, my milestone, is to fully implement that function and make it work, to get it ready for the midterm evaluation.

#blackberry, #gsoc