10 Things I Love (And Dislike) About BB10 DevelopmentAugust 24, 2013
I haven't found much time for BB10 development in the last few months, so it has been wonderful to get about 35 hours of it in over the last three weeks. I had a very enjoyable hour today and am inspired to share some aspects of BB10 development that I really like.
1. | The UI looks great! The UX team at Blackberry did a wonderful job on all of the widgets and various UI features of Cascades, and it makes it a real pleasure to create apps. BB10 is perhaps my favorite mobile OS in terms of appearance and UI functionality. I'm not sure the UI always lives up to 60 fps like the designers had hoped, but it runs well, and UI interaction is typically nice a smooth. |
2. | QML: Being able to quickly put UIs together using a declarative language like QML is great, and being able to call into C++ fairly simply is also great. |
3. | QML preview: Being able to get a real-time preview of the UI you're working on is super helpful and makes building a UI so much more efficient. (The unfortunate limitation is that this doesn't work with custom controls -- I wish there was a way for that to work) |
4. | Qt: Building Cascades on top of Qt was a pretty good choice, I think, if you're going to build on C++. Qt has a good set of classes, plus their signals/slots mechanism, which make building apps much more straightforward than raw C++. |
5. | IDE: Building the IDE on top of Eclipse was a good idea, and the IDE has gotten noticeably better with 10.2. |
6. | Sample code: Having a rich set of sample apps that are fun and well-written is always helpful. BB has done a great job with their sample apps. Thank you! |
7. | Documentation: BB's website for BB10 documentation is well laid out and looks great, making it a joy to use. |
8. | Developer relations and forums: BB means business when it comes to helping developers. They're on the opposite end of the spectrum as compared to Google... if you have any serious issue, just send them an email and they're right on it. This is frankly amazing. Good work developer relations! |
9. | Blogs: It's helpful that BB maintains a good developer blog. This makes it fun to continue to learn and be motivated by |
10. | Events: BB's "jam" events have been fun to attend, and a good way to meet people and get excited about Blackberry's vision. |
Now, to be fair, I'll also list the things that are painful about BB10 development.
1. | Developer productivity with Cascades (for me, right now) is about 2x-3x slower than it was with Adobe AIR. Part of this is my own fault for being rusty on C++ and new to Qt, whereas I had relatively more experience with JavaScript upon which AIR is built, and partly it's because I write more polished code (and more substantial apps) when doing Cascades work, whereas I was happier to hack things together in AIR, but all this said, that makes a huge difference. Some of my top-grossing apps for PlayBook took 8 hours, 2 hours, even 1 hour, to create, whereas my BB10 efforts have been more in the 30 hour range to create something. What this means for hobbiest developers is that it's harder to "focus" on an app, because you might have a week or two where you have some free time, and that only gets you started on an app, it doesn't start and complete the app. Then you lose focus and forget what you created, and you get out of the groove of BB10 development, and it feels like starting from scratch when you pick it back up a few weeks later. I hope that as I progress my productivity will increase. Part of the issue here is C++/Qt. They're good languages, but they're just not as productive as languages like C#, Java, or JavaScript. Qt hags a fair bit of "cruft". Having to maintain .h and .cpp files slows you down. Adding methods is more painful, etc. |
2. | My first big time investment in a Cascades app took about 25 hours of my time and 25 hours of a friends time to get close to completion. Then, the app started crashing randomly if I repeated an action. Ugh. The stack trace didn't even involve my code. I must have been doing something wrong in terms of Qt and its memory management, or something, but after staring at the code endlessly I couldn't come up with any solutions to the crashing. This was super-disheartening, and frustrating for a seasoned developer. Writing programs in languages like C++ carries with it this added risk over languages like C# and Java... if you screw something up which has a very indirect affect later on in the execution of the program, and it might take you eons to solve it. This obviously makes development much less fun. I still have yet to solve my issue, and I'm low on patience to go back and spend hours trying to figure it out. Solving those kinds of issues isn't really what someone wants to be doing with their hobby time. |
3. | I find QML + C++ to be quite a compelling combination, but it also feels a bit "brittle" at times. If you want to do the common things, it's fairly straightforward, but sometimes I'm trying to do something that seems slightly out of the ordinary, and I'm just clueless how to pull off the plumbing to make it happen. For example wanting to send a pointer to an object from QML to C++, and it gives some cryptic answer. It seems so simple! I think the answer I found on the web was that your method should accept a QObject*, not the actual pointer type you're trying to send. Uhhh, OK, whatever. That's the joy of using a rich, built-up framework, but not having a depth of experience with it. ie. Steeper learning curve. Again, nice when hobby development isn't a steep learning curve. |
4. | I really wish deployment to the device was faster. Not including compile time, it takes about 10 seconds to deploy and run the app over USB. This seems silly to me. Surely that shouldn't take more than 1 second if optimized: The app isn't very large -- what takes so long!? Having to wait this long slows down development time and scatters my concentration. |
5. | The IDE can feel buggy at times. Currently, if I press "Run" too quickly after the compile finishes (and it is done), it gives me a NullPointerException in the IDE as a popup. Super annoying. Also, it can't currently find the simulator, even though it was working fine previously, and I haven't made any changes to the simulator. And sometimes it can't see the device over USB even though it is connected, or can't see if over Wi-Fi, even though it is there. Little bugs and unreliabilities make developers cranky. I've also had headaches with the keys that RIM issues you to sign your apps -- using them, managing them, etc. |
I'm having a hard time thinking of anything else to complain about, so that's a good sign :)
BB10 Work Log: June 22, 2013June 22, 2013
Well it's been a long time since I've logged any work. I spent about 25 hours working on rewriting "Send to PC" in Cascades, but that got bogged down towards the end of development by the application randomly crashing with a cryptic stack trace. Ugh. I do need to get back to that.
Anyway, tonight I wanted to take another crack at getting Flix working on the Q10. The last time I tried to make this work, it was a no-go, with serious audio synchronization issues, etc.
I gave it another go tonight and seemed to find that one of the QNX native SDK methods is returning 0 when it should be returning a non-zero value. Weird.
Made a post to the forums:
http://supportforums.blackberry.com/t5/Native-Development/snd-pcm-channel-status/td-p/2443631
Thoughts on the notion of renovating a church sanctuaryMay 27, 2013
Our church is planning on doing some renovations of our church sanctuary, and we have been asked to contribute our personal dreams for that project. Below are my thoughts. Obviously this is something each church must wrestle with.


Other than some more distant recollections of people commenting that we might consider changing the paint color in the sanctuary, comments at the annual meeting (?) or around that time challenging the congregation to undertake a renovation project of the sanctuary before 2015 are where the context of this “dreams discussion” originate for me. The tone of the announcement at church this week, as well as the note that was put in people’s mailboxes, seems to have evolved from the original challenge. I won’t get the wording right, but the announcement was something to the effect of “it’s clear that the carpet needs to be replaced in the sanctuary” on Sunday, and in the note in the mailboxes it says “the flooring needs to be replaced in the sanctuary and the foyers as a matter of maintenance”. There seems to be an implicit affirmation from leadership that this project will be undertaken, and that it will in the very least involve replacing the flooring of the foyer and sanctuary.
This implicit affirmation is challenging for me because the need to replace flooring is far from clear to me. The spirit behind the project as a whole likewise isn’t something that I resonate with, and so the assumptive voice that is emerging is tricky for me. It makes me feel as if my feedback doesn’t apply because it falls outside of the assumed parameters of the discussion.
In general, the way I have been thinking about opportunities to spend financial resources these days is to consider the full gamut of possibilities. With any dollar we have been entrusted with, my sense is that we should aim to do that which glorifies God the most. Obviously that is a tricky question to answer in a precise way, but hopefully the general concept is useful and something that many people would agree with.
When I look out into the world and read that 20,000 children are dying every day due to preventable causes while we in our congregation live such comfortable and affluent lives, it challenges me. More and more, I feel like God is getting my attention, waking me up. I believe that even as Christians, we often live our lives without a world-wide perspective. Rather, we are very acclimatized to life within our Southwestern Ontario context. When we make spending decisions, my sense is that we typically do that with blinders on. If the broadness of our vision was really global, I struggle to believe that we would make many of the financial decisions that we make as a congregation, both in our personal lives, and in our life together as a church. Does God desire us to limit the scope of our decisions? I don’t think God desires that.
Let’s take for example the choice of whether we replace the flooring. If it costs $7,500 to replace the carpet, that is perhaps 3x a typical estimate for how much it costs to save a child’s life. And so I don’t take the decision lightly.
A second layer to my struggle is that our sanctuary has its primary use of about 1.5 hours per week. A week is 168 hours, so that is a utilization of 0.9%. The foyer is used perhaps 30 minutes per week for a weekly utilization of perhaps 0.3%. I believe that God desires Christians to demonstrate skillful stewardship -- can the use of our sanctuary and foyer really be considered good stewardship? Even more challenging is the fact that our small town of St. Jacobs has three church buildings. Each one of those buildings is the property of the same God, and each is likely utilized a tiny percentage throughout the week. Again, this strikes me as a sign of poor stewardship. (Can’t we share a church?) Can we honestly understand such tiny utilizations as honoring to God in a world where so many precious children don’t make it to their fifth birthday?
These feelings of sadness and confusion don’t fit very well with the sentiment of the letter in our mailboxes which make comments such as “fresh and exciting”, and talks about “need”.
Where I do connect with this conversation is that we must face the fact that we are surrounded by and desiring to witness to people who live in this culture, and we might be less effective at inspiring folks to worship with us if our sanctuary isn’t architecturally inspiring. And so from that angle I am fully supportive of the notion of (ironically) being good stewards of the building that we have been given, using it to its fullest potential as an instrument of witness.
But even that said, it’s far from obvious to me that a pretty sanctuary that potentially costs the lives of children is a good witness to a culture that is drunk on materialism. Don’t we reap what we sow?
I’ll close with something that is a bit off topic. I had been thinking that this discussion was a more general “capital project dreams and discussion” and not limited to the sanctuary project... the realization for me was that I do love capital projects. They’re exciting! It just depends what kind of capital project we’re talking about. If we’re talking about building wells or other clean water initiatives like sand dams, building schools, building churches, etc, then sign me up. On that theme, here is my dream for a “capital project”. I will use numbers not because they are overly important, but I do think they can make a dream feel a bit more concrete.
A five year project focused on partnering with communities in developing nations to provide access to clean water, education, and medical services. $500,000 goal over the five years, which would be given on top of our typical church budget. (Just like a typical capital campaign) A portion of that $100,000 per year would be used for travel expenses for people in our congregation to be physically present with the people we have a heart to minister to, developing friendships, learning about their culture, being transformed, and bringing back stories to the local congregation. Rather than spending dollars that have yet to be given (and going into debt), we could have a “giving year” followed by a “spending year”. ie. There would be five spending years in a row, but the first “giving year” would come a year prior to the first “spending year”. That would eliminate the stress of having to pay down debt, and so the money spent on this capital campaign each year would be more analogous to “overflow” than to debut reduction. Rather than being purely a matter of dollars, we would pour ourselves out into research and planning, and prayer. And we would be partnering with existing organizations, whether MCC or otherwise, to leverage their knowledge and relationships.
That is a capital campaign that would both challenge and excite my spirit. Carpet just can’t compare.
older >>