tag:blogger.com,1999:blog-24841089134818127732024-02-08T08:02:57.727-05:00webOS DevelopmentRantings and discussion from a webOS developer and creator of gDial Pro the top Google Voice application on the Palm Pre and Pixi.flpalmdevhttp://www.blogger.com/profile/10413672431004030778noreply@blogger.comBlogger12125tag:blogger.com,1999:blog-2484108913481812773.post-22597668880565382432010-02-16T13:48:00.000-05:002010-02-16T13:48:52.138-05:00Apple blocking Google Voice blocking webOS App<span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif;">Oh what a tangled web we weave. I feel like I need to express how extremely disappointed in Google I am right now.</span><br />
<span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif;"><br />
</span><br />
<span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif;">They were all independence and walled garden and network neutrality back in July of 2009 when their official </span><a href="http://techcrunch.com/2009/07/27/apple-is-growing-rotten-to-the-core-and-its-likely-atts-fault/"><span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif;">Google Voice App was denied by Apple</span></a><span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif;">.</span><br />
<span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif;"><br />
</span><br />
<span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif;">But how hypocritical can you be when they are now doing the same thing to 3rd party apps trying to access Google Voice from other mobile devices. They are not only not releasing an API like they have done with </span><a href="http://code.google.com/more/"><span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif;">every other Google product out there</span></a><span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif;">, but they are implementing byzantine security to actually prevent 3rd party apps from accessing the same functionality that their Android native app is capable of or their new mobile site is able to access.</span><br />
<span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif;"><br />
</span><br />
<span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif;">What does this mean to the non-technical? No matter how much authorization you provide a 3rd party app to access your Google Voice data, they don't want you to be able to dial out using the access number methodology like they have in Android and Google Voice Mobile. So you can give up your username and password to an app and then Google will still block that app from dialing out using the super easy access number that they allow their own apps to use.</span><br />
<span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif;"><br />
</span><br />
<span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif;">But its their product they can do what they want, right? Sure, just don't go crying to everyone the next time some other vendor blocks your product from their platform or device. Would they be so willing to apply the same statement if say AT&T put a block of all users to the www.google.com domain and redirected to bing.com? I don't think so, and there really is no difference. If a user wants to use a 3rd party app to access their Google Voice account and take the same actions you can do on the web or in Android, then why block it?</span><br />
<span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif;"><br />
</span><br />
<span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif;">Safety of users would be a good reason, but at that point if they were worried about it, it is too late, the user has already given the keys to the kingdom and with the extensive Google API's, they could modify your </span><a href="http://code.google.com/apis/contacts/"><span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif;">contacts</span></a><span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif;">, </span><a href="http://mail.google.com/support/bin/answer.py?hl=en&answer=75725"><span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif;">send email from your account</span></a><span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif;">, search your </span><a href="http://code.google.com/apis/documents/overview.html"><span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif;">Google Documents</span></a><span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif;">, but what they absolutely cannot do? Dial a US no-cost phone number using the access numbers that Google has setup for Google Voice.</span><br />
<span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif;"><br />
</span><br />
<span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif;">Really Google? Really?</span><br />
<span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif;"><br />
</span><br />
<span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif;">How many security keys can you need? You get one when you login with the user's info, then when you go to Google Voice it creates another one, then if you want to dial out, you need yet another key. You protect the phone more than anything else in your offerings and it just doesn't add up.</span><br />
<span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif;"><br />
</span><br />
<span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif;">This is the summation of my frustrations in trying to maintain </span><a href="http://gdialpro.com/"><span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif;">gDial Pro</span></a><span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif;"> for webOS mobile phones. I have spent more time on troubleshooting the Google interface piece than anything else on the phone. Why not put out an API? There is an API for Wave, and even the new Buzz, but nothing for Google Voice.</span><br />
<span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif;"><br />
</span><br />
<span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif;">So it begs the question, why is there no API? Lack of resources, I doubt it, security of info, see above as there is a lot better info to access if you were trying to do something wrong.</span><br />
<span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif;"><br />
</span><br />
<span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif;">Where does it leave us? I don't know, they must have some reason for it. Take a look at their </span><a href="http://www.dataliberation.org/"><span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif;">Data Liberation Front</span></a><span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif;">. Then go to the Voice item, hmmmmm, not a lot going on there for data liberation.</span><br />
<span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif;"><br />
</span><br />
<span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif;">If you profess freedom, then you have to be free yourself or it dilutes the message.</span>flpalmdevhttp://www.blogger.com/profile/10413672431004030778noreply@blogger.com9tag:blogger.com,1999:blog-2484108913481812773.post-90661168257417264682010-02-12T11:40:00.003-05:002010-02-12T11:40:02.700-05:00gDial and Google Voice v1.3.1<span class="Apple-style-span" style="color: #333333; font-family: 'lucida grande', tahoma, verdana, arial, sans-serif; font-size: 13px;">v1.3.1<br />
-Major change to fix up gDial after changes at Google Voice. Please read everything below:<br />
<br />
Note this version and going forward will be taking a new tactic in order to provide as much stability as possible for changing Google API's all the time. Starting in 1.3.1, we will be moving more of the interface to a server side solution. So, gDial will communicate with our server (At Google's Appengine, so you can be assured of uptime) and that server will interact with Google Voice on your behalf. We are doing this so that future changes in the Google interface can be fixed on the server side and not require a new rollout of a new client and all of the time that takes. We can fix it on the server and immediately make that available to our users for better reliability.<br />
<br />
Great, so what does this mean for privacy? In version 1.3.1 the only interaction with our server is in 2 places. We check your email address against a list of users on our server who are part of a beta program. The second is that we pass a token from gDial to our server which exchanges this token at Google for a Google Voice token that we pass back to gDial. gDial then deals directly with Google for all other operations. Your password is never transmitted to our servers<br />
<br />
I wanted to be transparent about that so that everyone knows what is going on. The hosting is at Google's appengine so there has been no noticable speed difference in testing.<br />
<br />
Because this takes server resources on an ongoing basis, we will have to charge for this ability. So as of 1.3.1, there will be a monthly fee required to use the following features: web dial and SMS. Manual dialing as well as viewing history will not require this subscription. We are going to try to make this work at $1/month billed by Paypal as we figured that would cover server costs and be inexpensive enough for almost anyone wanting that Google Voice functionality. You will get some extra features with this subscription as well that are almost done beta testing if Google would stop changing things on us </span>flpalmdevhttp://www.blogger.com/profile/10413672431004030778noreply@blogger.com0tag:blogger.com,1999:blog-2484108913481812773.post-73828692272009430412010-01-28T13:43:00.000-05:002010-01-28T13:43:41.869-05:00iPadBeing the typical geek that I am, I was tuned in with anticipation of the new tablet from Apple. I was hoping to see basically what they launched but with a longer battery time and multitasking.<br />
<br />
<b>Multitasking</b><br />
Wow, this was the big surprise. They put in a super fast processor, big screen, and fancy apps, but no multitasking? So if I am in iWork and I get a new email, I can't go and respond to the email and go back to iWork?<br />
<br />
Now most people will say, yes you close iWork, go into mail, respond, and then go back into iWork right where you left off. For a lot of cases that is fine, but say I am in my email and need to send a paragraph from the document I am working on in the email. And lets assume I didn't realize this until I went into the email and read the message from the sender.<br />
<br />
Now what do I do? I have to leave mail, reopen iWork, copy the paragraph, close iWork, reopen mail, paste the message, send, then close mail and back to iWork.......<br />
<br />
Not the most optimal situation by any means. Think about IMing a friend while browsing the web, same issue. I can't believe this was left out, but it is only running version 3.2 and not the big 4.0 release that most were expecting.<br />
<br />
<b>I am sure Apple will be fixing this in OS 4.0, and it just wasn't ready for the tablet announcement.</b><br />
<b><br />
</b><br />
A disappointment for sure and all those early adopters may get a negative view of the device because of it. If Google could sneak out a Chrome OS device in a similar form factor, I would pick that probably 9 out of 10 times because even though it is limited to web apps, it would multitask and their web apps are sneaking up on Office and iWork in functionality. Much less everything else you can now do from the web. Plus using Google Docs, you could save files and pull them from other computers.<br />
<br />
<b>Battery Life</b><br />
To replace my Kindle or more recently Nook, you have to have a longer battery time than <b>up to</b> <b>10 hours</b>. The up to is killer there. I have a Macbook Pro and wife has a Macbook all promising up to 7 hours, but they have never come close to lasting that long in reality. I am not complaining on the laptop, because for what I am doing even the 4-5 hours is incredible. For a tablet placing itself as your book reader, not so much, My wife hates cords and this just adds another permanent cord someplace to keep this thing charging daily. If it was a laptop replacement, that would be fine, but it lacks too many things to even really replace my wife's somewhat basic usage of her laptop.<br />
<br />
<b>Will I get one?</b><br />
Right now my thoughts are that I would hold off initially since they are only releasing the wifi version at first and then if the usage scenarios expand to something I would use, then I could see purchasing a version with the portable 3g because I wouldn't want to be limited by wifi only. Having said all that, I might still be one of those people buying it on day one as somehow I get caught up in that frenzy and hype :)flpalmdevhttp://www.blogger.com/profile/10413672431004030778noreply@blogger.com0tag:blogger.com,1999:blog-2484108913481812773.post-57912454740584300722010-01-09T13:27:00.001-05:002010-01-09T13:45:52.197-05:00Pre Plus, 3D Games, Flash, oh myWell as most people following Palm now know, we get 3D games immediately with Flash and some new <a class="zem_slink" href="http://developer.palm.com/" rel="homepage" title="WebOS">webOS</a> phones in the near future. These are the types of moves that Palm needs to be making in order to survive. Those were all great announcements, but they didn't directly impact our apps gDial Pro or Visual Voicemail.<br />
<br />
The gift that we got from the <a class="zem_slink" href="http://www.cesweb.org/default.asp" rel="homepage" title="Consumer Electronics Show">CES</a> announcements was that Palm was going to immediately allow developers to start distributing their apps using the <a href="http://pdnblog.palm.com/2010/01/ces-announcements/">web delivery</a> method. For us, this was the biggest game changing announcement as it means we can update our apps and deliver those updates to our customers almost immediately. Anyone who has developed apps for webOS and published them in the <a class="zem_slink" href="http://developer.palm.com/" rel="homepage" title="Palm App Catalog">App Catalog</a> knows that from submit to publish can have a significant time delay.<br />
<br />
We update our apps all the time with new features, bug fixes, polish, etc and we really wanted to be able to get each and every one of these updates out to our users with or without <a href="http://www.preware.org/">Preware</a>. We weren't able to do this previously as we had to pick and choose which releases we would submit to Palm as it was likely that it would take 1-2 weeks for those updates to get reviewed and pushed out.<br />
<br />
That has totally changed with the new web distribution model that Palm has enabled. We can keep on pushing select releases to the App Catalog for new users, but anyone who wants to get every update as soon as possible can now move over to our "Rapid Release" version which is web distribution only. It is the same app as in the catalog, but all updates get pushed as soon as they are tested right out to users.<br />
<br />
One instance in the past where this would have been useful is when Google changed their Google Voice API and we fixed the bug in a couple of hours. It then took ~2 weeks for the App Catalog users to get this update due to the review process. If that were to happen now, we could have that fix up and live through web distribution just as fast as we could push it.<br />
<br />
Kudos to Palm on implementing this as it puts them a bit closer to the realtime app distribution that Android provides for its developers. The only difference is that users must now switch over to a the Rapid Release version after having used the regular release vesion in the catalog which is added hassle for them.<br />
<br />
And that brings me to the one area where I would like to see some improvement. Provide some mechanism so that we can do the realtime updates to the catalog apps. Even if the user gets prompted to enable the functionality and has it explained that the updates have not yet been reviewed by Palm. Basically use the App Catalog as just a sales tool that developers can pay to list in with some badge or something to indicate whether Palm has reviewed the app/update yet.<br />
<br />
Otherwise the new distribution is great.<br />
<br />
The other big announcement was the <a href="http://developer.palm.com/index.php?option=com_content&view=article&id=1850&Itemid=20">PDK</a> which will allow for developers to write pieces of their apps in native code. Doesn't help us much, but my assumption would be that anyone using PDK is able to bypass some of the restrictions that are currently in place in the webOS API for accessing universal contacts, calendar, and other data. If the PDK allows this, then my hope is that they plan to also open this up in the webOS SDK. This is important to us to allow native universal search within gDial Pro of all contacts. We want our dialing to work just like the native phone. Also, it might be possible with the PDK to implement some of the more advanced features users have been clamoring for, like auto-answering the call in from Google Voice when you are using the web dial method of making outgoing calls.<br />
<br />
All in all good announcements for the users and developers.<br />
<br />
<br />
<fieldset class="zemanta-related"><legend class="zemanta-related-title">Related articles by Zemanta</legend><ul class="zemanta-article-ul"><li class="zemanta-article-ul-li"><a href="http://www.macworld.com/article/145537/2010/01/pre_pixi.html?lsrc=rss_main">Palm Pre Plus, Pixi Plus coming to Verizon</a> (macworld.com)</li>
</ul></fieldset><div class="zemanta-pixie" style="height: 15px; margin-top: 10px;"><a class="zemanta-pixie-a" href="http://reblog.zemanta.com/zemified/82422f42-a89d-4722-bdd1-62aac4b582c7/" title="Reblog this post [with Zemanta]"><img alt="Reblog this post [with Zemanta]" class="zemanta-pixie-img" src="http://img.zemanta.com/reblog_e.png?x-id=82422f42-a89d-4722-bdd1-62aac4b582c7" style="border: none; float: right;" /></a><span class="zem-script more-related pretty-attribution"><script defer="defer" src="http://static.zemanta.com/readside/loader.js" type="text/javascript">
</script></span></div>flpalmdevhttp://www.blogger.com/profile/10413672431004030778noreply@blogger.com0tag:blogger.com,1999:blog-2484108913481812773.post-50090894685988896712009-12-23T10:56:00.002-05:002009-12-23T11:04:10.492-05:00Happy HolidaysIt is that time of year again where every business grinds to a halt for the 2 weeks that overlap Christmas and New Years. You will notice that there haven't been many releases lately and that is somewhat due to this entrance into the holiday season.<br />
<br />
<b>What's next:</b><br />
As for the New Year and future plans, it is pretty unclear at this point. We have two releases of software now with both gDial Pro and Visual Voicemail that we would like to continue to polish over the coming months. One of the things we have started to hear around the blogosphere is that <a class="zem_slink" href="http://googleblog.blogspot.com/" rel="blog" title="Google">Google</a> is preparing to finalize the launch of Google Voice for consumers soon in the New Year. What this means for our software will depend on what their "release" consists of. My hope is that with a release they also put out an official <a class="zem_slink" href="http://en.wikipedia.org/wiki/Application_programming_interface" rel="wikipedia" title="Application programming interface">API</a> for Google Voice which will allow for us to improve the experience for our users on <a class="zem_slink" href="http://en.wikipedia.org/wiki/WebOS" rel="wikipedia" title="WebOS">webOS</a> as we will be able to focus more on features instead of adaptations to changes within the unofficial API's.<br />
<br />
<b>What else:</b><br />
We also get a lot of questions as to what else we are working on. While we do have some ideas, we are looking towards our users and fans to give us suggestions on not only what features they would like to see in our current software, but what they want in new software that is not being taken care of by other developers already in the <a class="zem_slink" href="http://en.wikipedia.org/wiki/Palm_App_Catalog" rel="wikipedia" title="Palm App Catalog">App Catalog</a>. So please let us know.<br />
<br />
<b>Predictions:</b><br />
Everyone likes to make predictions for the new year and we are no different. So here are my thoughts on where things are heading in tech:<br />
<br />
<br />
<ul><li>Apple tablet: You can bet on it being released at some point in 2010. The costs on tablets is finally getting into the area where a high quality, functional tablet is possible.</li>
<li>Google takes over the world: If you are using our software, then you are already using them for phone service. Not internet, but phone, who would have thought. Get ready for them to move into more areas. They have already said they will make Google <a class="zem_slink" href="http://docs.google.com/" rel="homepage" title="Google Docs">Docs</a> as good as MS Office and I would expect them to enter even more areas of your life aka (Chrome OS and Android).</li>
<li>webOS: Well, this is the biggest fog out there for me. 2010 will either define their rebirth or signify their end. Ares is a nice start to being revolutionary, but will developers take to it or will it lead to App Catalog spam of low quality apps? The tech guys at <a class="zem_slink" href="http://www.palm.com/" rel="homepage" title="Palm">Palm</a> that I have met are a great group with a vision that makes sense, but will the business people allow them to execute that vision and can they do it fast enough to stay relevant in the increasing Android tidal wave?</li>
</ul>I have more questions than answers in regards to webOS. A lot of people are predicting a new shiny webOS device, but I actually think that all we will see is releases of the same phones on new carriers. Given the investment in the design of both the Pixi and the Pre, that makes the most sense for them to leverage the design and get it to more end users. This is of course good for Palm, but not really exciting for tech heads.<br />
<div><br />
</div><div>What do you think is the most exciting upcoming tech product/service?<br />
</div><div><br />
<b><br />
</b><br />
</div><fieldset class="zemanta-related"><br />
<br />
<legend class="zemanta-related-title">Related articles by Zemanta</legend><br />
<ul class="zemanta-article-ul"><li class="zemanta-article-ul-li"><a href="http://www.engadget.com/2009/09/10/third-party-google-voice-app-hits-the-webos-app-catalog/">Third-party Google Voice client hits the webOS App Catalog</a> (engadget.com)</li>
</ul></fieldset><div class="zemanta-pixie" style="height: 15px; margin-top: 10px;"><a class="zemanta-pixie-a" href="http://reblog.zemanta.com/zemified/8ff01ed3-3947-4eae-b0dd-6fadf5fef764/" title="Reblog this post [with Zemanta]"><img alt="Reblog this post [with Zemanta]" class="zemanta-pixie-img" src="http://img.zemanta.com/reblog_e.png?x-id=8ff01ed3-3947-4eae-b0dd-6fadf5fef764" style="border: none; float: right;" /></a><script defer="defer" src="http://static.zemanta.com/readside/loader.js" type="text/javascript">
</script><br />
</div>flpalmdevhttp://www.blogger.com/profile/10413672431004030778noreply@blogger.com0tag:blogger.com,1999:blog-2484108913481812773.post-5713382767113749492009-11-28T10:22:00.000-05:002009-11-28T10:22:38.917-05:00Status of gDial Pro on App CatalogI hadn't looked at the ratings in the app catalog for awhile because I knew they would be bad with the broken version of gDial Pro that is in there. Well, against my better judgement, I went and looked at the reviews and they are bad :(<br />
<br />
In case anyone using gDial Pro from the app catalog sees this post, let me provide an explanation of the problem.<br />
<br />
<b>Sometime around November 17th or 18th:</b><br />
Google changed their API on Google Voice. I was notified of the change through my own use of the app breaking as well as users on the PreCentral forums.<br />
<br />
<b>November 18th:</b><br />
Submitted a fixed version of the app to Palm for update with a notice to my account rep that it was urgent and that the version in the App Catalog was essentially broken.<br />
<br />
<b>Since November 18th - November 28th:</b><br />
Waiting on app approval at Palm. Again the app is already fixed, but that update is held up somewhere in the approval queue at Palm and everyone else is suffering due to this.<br />
<br />
It is tough as a software developer to keep a program updated when you are using an undocumented API from Google who moves "quick" and I am stuck with a software approval queue that moves "slow". The fix was completed in a matter of hours, but the approval is taking weeks.<br />
<br />
Sorry everyone, but once you see the update notification from Palm, you can be assured that web dial works again in the software. Until Google releases an API to Google Voice, we will likely have more speed bumps like this where they make a change and I have to adapt to it and re-release. If we could get a faster approval process, then most people would probably not even notice the problem, but that is on Palm.flpalmdevhttp://www.blogger.com/profile/10413672431004030778noreply@blogger.com3tag:blogger.com,1999:blog-2484108913481812773.post-28731126638582290152009-11-21T09:49:00.000-05:002009-11-21T09:49:30.057-05:00My thoughts on "Palm for sale?"So <a href="http://www.precentral.net/">Precentral</a> put together a round table question of their editors on who they think would be a good buyer for Palm if Palm was for sale. <a href="http://www.precentral.net/round-table-palm-sale">Round Table: Palm for sale?</a><br />
<br />
I wanted to throw out my own thoughts on it as I have been looking at all of the mobile platforms and devices lately.<br />
<br />
For me the logical buyer for Palm would be a current Android device maker. Be it Samsung or Motorola, or one of the others. As I look at the development model for webOS, I really like it (other than some missing debug tools ) and I really don't like the competing development styles as much. What I think would make sense would be for some large handset maker to buy up Palm and port webOS to Android for their devices. Device makers are already able to put their own skin's on Android and add quite a bit of their own functionality. Also, with devices like the <a href="http://www.barnesandnoble.com/nook/">nook</a> running Android underlying what is to be a full featured eReader that doesn't even look like the Android OS, you can do some massive customization to the underlying OS while leveraging the unstoppable Android train of developers and advances that is taking place. Let others manage the OS for you and just focus on your differentiating factor, webOS and your hardware.<br />
<br />
It shouldn't be hard to port webOS to Android as it already runs on the custom Linux image generated by Palm, so why not just go all the way and make it an add-on to Android? I am not saying release it for other handset makers to use or all Android users. Just emulate what HTC is doing, build on Android and add on top your beautiful webOS front on custom Palm hardware for the best mobile experience while simultaneously cutting out the significant cost of maintaining your OS to a lower level like you do now.<br />
<br />
Motorola, if you are listening, webOS beats <a href="http://www.motorola.com/Consumers/US-EN/Consumer-Product-and-Services/MOTOBLUR/Meet-MOTOBLUR">MOTOBLUR</a>. Pick up the team of forward thinking guys at Palm and really make a run at iPhone. If I could have access to not only the Android Market but the Palm App Catalog on the same phone, we'd be cooking with fire and it solves that low-level API issue people have been mentioning. I'm just saying.flpalmdevhttp://www.blogger.com/profile/10413672431004030778noreply@blogger.com0tag:blogger.com,1999:blog-2484108913481812773.post-86231657178348785542009-11-19T18:34:00.000-05:002009-11-19T18:34:28.511-05:00Google Voice API ChangeJust to give everyone some insight into why gDial Pro in the App Catalog is currently broken. It appears that Google Voice changed their API and since it isn't a publicly released/documented API there is no way to let 3rd party developers know in advance when they change it and its not really their responsibility at this point.<br />
<br />
In this case they changed the method call to do a "webdial" and didn't make the new method backwards compatible, so as a result it fails for anyone who didn't move to the new API call. I was able to quickly find the issue, and repair gDial Pro, but now it is in queue for approval at Palm before being pushed to the App Catalog.<br />
<br />
This is the real reason that we developers need a much quicker way to push our updates and changes to users. When we discover a bug, we can fix it immediately, but then the update doesn't get to our end users until it is reviewed by Palm. I know they are supposed to be releasing a way to directly get updates to our end users shortly so this should be a thing of the past in the coming months.<br />
<br />
Paul Graham, an old LISPer, has written a post that basically echo's this same issue on Apple. Here it is for your perusal.<br />
<br />
<a href="http://www.paulgraham.com/apple.html">Apple's Mistake</a><br />
<br />
Palm, please make sure to read this and listen to what he is saying as it exactly echo's how I feel and what I was saying in my past post. I know you guys are already on the path to speed up the deployment, but I just felt it important to reiterate what Paul Graham states as the reason for "karma leak" at Apple with their iPhone developers.flpalmdevhttp://www.blogger.com/profile/10413672431004030778noreply@blogger.com0tag:blogger.com,1999:blog-2484108913481812773.post-39056367489534803522009-11-13T15:05:00.001-05:002009-11-13T15:09:34.034-05:00Threads pleaseI like to use these blog posts to put out my experiences while working with webOS on gDial Pro and also to lobby for what I want as a developer from the Mojo SDK.<br />
<br />
If you know Javascript, then you know that it is single threaded. (Except for WorkerPool in Gears)<br />
<br />
For most usage cases this is no big deal as it offers plenty of asynchronous functionality and by being single threaded you can avoid some of the thorny issues with locks, etc that threads bring with them. <b>This is a good thing</b>. The problem I am currently having is that Javascript is now being used for a full application which consists of a User Interface and then other operations that run in the background at various intervals.<br />
<br />
With a single thread, I have had to do some copious balancing of work being done by the program and leaving processing open for the User Interface to remain responsive. The type of work being done in the "background" is searching contacts for universal search, loading new history, loading new contacts, etc. This is stuff that is coded in gDial Pro and so asynchronous is not enough. I have had to wrap what should be step by step logic into asynchronous mish-mash to keep any of the logic from interfering with the User Interface so that users don't see a laggy interface when clicking buttons, seeing a spinner, and anything else.<br />
<br />
Just to give some perspective on this, if you do a loop through 300 items and don't do much work at all in the loop, it will lock up the UI during this loop. The spinner stops, clicks don't work, nothing. On a desktop this isn't an issue as the loop takes almost no time, but on a mobile device like the Pre or Pixi, well you get the point. The time taken to process is longer and so is the unresponsiveness then of the UI unless you break this loop up into an asynchronous process. That leads to questions like how many iterations should I do before returning control to the UI....This starts to sound an awful lot like writing a thread scheduler without know what other threads are running in the OS.<br />
<br />
My point of this post is to convince Palm to implement something like the WorkerPool from Gears into the Mojo SDK. Some people would say why add threads when you can code around it, but from my perspective, let me choose to use a more advanced tool like threads if I need them, and I REALLY NEED THEM. I would rather keep the logic of my code straightforward and let it run in a low priority thread then try to do my own thread management using asynchronous callbacks (This is not fun by the way).<br />
<br />
I spoke with some engineers at Palm about this while out there for the Sprint Developer Conference, but please make it a priority. Complex apps would be easier to write with threads or something simulating threads. Even if it continued to be a single thread but with scheduling built into the webOS piece that would be fine (ie <i>yield</i> support). Just don't force me to schedule threads as I don't have access to know what else is happening on the device to do it and I really don't want to anyways.<br />
<br />
For the time being I will continue to simulate threading where it doesn't exist.flpalmdevhttp://www.blogger.com/profile/10413672431004030778noreply@blogger.com3tag:blogger.com,1999:blog-2484108913481812773.post-41833837516488057432009-11-11T20:44:00.002-05:002009-11-12T06:44:27.948-05:00Closure and webOSSo I have spent the last few days messing around with <a href="http://code.google.com/closure">Closure</a>, Google's new javascript library, compiler, and templating.<br />
<br />
<span style="font-size: x-large;">First, the why</span><br />
<span style="font-size: x-large;"></span>The Closure compiler from Google promises to do code optimization, inlining, and trimming all in one. So theoretically it would make the javascript faster and smaller which is a good thing especially when working on a mobile platform.<br />
<br />
My first goal was to get gDial Pro to compile using the Closure compiler and its standard optimization level. This can be simple, just compiling each js file individually, which doesn't really give too much gain since a lot of the optimizations need to see all of the js code in one file in order to really do its magic.<br />
<br />
So it should have been simple right, just pass in each js file on one line to the Closure compiler and let it work its magic which it did. The resulting code would not run though as it simply concatenates all the files together in the order passed in and compiles. In the gDial Code there are some js files that need to load in specific order after other files. So when they concatenate willy nilly, you get broken code as some objects/functions were not defined before where they were being used.<br />
<br />
So to make it work, I needed to concatenate all of the javascript files in the order that they need to load and then run the compiler. This was easier said than done as I wanted a generic solution that didn't require me to hand edit the build file every time I added in a new javascript file or changed the load order. The solution is that the sources.json file already has my code listed in the order it needs to load. So, I created a <a href="http://en.wikipedia.org/wiki/Sed">sed</a> command to parse that file for the filenames since they are already in order and concatenate them together, then run the Closure compiler.<br />
<br />
Also, after this happens, all of the code for the app is now in a single output file and so that same sources.json file need replaced with a file referencing the single .js file that we have output from the Closure compiler.<br />
<br />
And then it works!!!!<br />
<br />
<span style="font-size: x-large;">Gotchas</span><br />
You can't use the object oriented inheritance from the Prototype library. (i.e. Class.create). The reason is due to the way that you make calls to super class functions in their system. They require that the function receive a special parameter named '$super'. Closure changes the name of all parameters to short 1 letter names for space reasons and so this '$super' variable will have its name changed which breaks the inheritance.<br />
<br />
You can get around this by using the excellent <a href="http://www.dojotoolkit.org/">Dojo Library</a> and its class inheritance system which doesn't require the use of special variable names and works fine with the Closure compiler.<br />
<br />
Also, I only apply the Closure compilation when building my production releases of the software as the name/file mangling would be a nightmare for use in debugging. So I debug my code and then I have a build script which runs the compiler on the code and builds my packages for distribution.<br />
<br />
Forget about trying to run the compiler in advanced optimizations mode. Won't work as it really needs to be run on a single file with ALL of the javascript code and the Mojo Framework js code as well as their version of prototype get included into the app separately. I am sure someone will come up with a solution to this in the future, but for now I wouldn't recommend even trying it for the average app developer.<br />
<br />
Also, for the same reasons, using the Closure Library is a no go as well. It has a package system that dynamically loads the js files it needs, but due to the way the webOS apps are loaded, the package system doesn't seem to work.<br />
<br />
<span style="font-size: x-large;">Worth it?</span><br />
Tough question. Now that I am done with implementing it, the hard work is done and I will likely continue to use it as I plan to migrate to the Closure Library and Advanced Optimizations as techniques are discovered to make them work with webOS.<br />
<br />
As to whether there is any performance increase in the resulting code, I am not sure as I just put it out there to the Homebrew community and I am awaiting feedback from all of the users on their experiences with the app. It was pretty optimized before and I was already minifying code with the <a href="http://developer.yahoo.com/yui/compressor/">YUI Compressor</a>.<br />
<br />
Only time will tell whether it was worthwhile.flpalmdevhttp://www.blogger.com/profile/10413672431004030778noreply@blogger.com5tag:blogger.com,1999:blog-2484108913481812773.post-49739937647856531062009-11-04T09:10:00.000-05:002009-11-04T09:10:46.856-05:00Whew back from Sprint DevLet me just say that the Sprint Developer Conference was great. There are a ton of good people developing apps for webOS and the guys from Palm are okay too :)<br />
<br />
If you have read my previous post <a href="http://flpalmdev.blogspot.com/2009/10/so-this-is-place-where-i-will-be.html">Get out of my fast lane</a> you will know that I laid out 3 steps that Palm can do quickly to empower its developers to create even better apps. I was happy to find out at the conference that they do intend to do all 3 of these items and in fact they have already started following through on them. I believe they know they need to move quickly in order to compete with Apple and Android. Only the future will tell how it plays out, but the OS is still my favorite even when looking at Android 1.6 and iPhone 3.1. Now Android 2.0 might change my opinion when it brings a lot of the unique "Synergy" features that currently only webOS offers.flpalmdevhttp://www.blogger.com/profile/10413672431004030778noreply@blogger.com0tag:blogger.com,1999:blog-2484108913481812773.post-78567617772073562252009-10-22T10:47:00.001-04:002009-10-22T10:55:40.118-04:00Get out of my fast lane<div>So this is the place where I will be documenting some of the changes, trial, and tribulations of our work on gDial Pro for webOS by Palm.<br />
</div><div><br />
</div><div>First, let me say that you can make incredible things quickly using the webOS toolkit and javascript. I think it was a stroke of genius on Palm's part to choose this as their primary development platform for webOS. I understand that some programs will need more native access to API's and I think eventually Palm will provide that as well as a way to keep most of your code in javascript. Once that is made available, the complaints on what can't be done with javascript will likely end.<br />
</div><div><br />
</div><div>The problem with the great speed at which one can develop on webOS is that Palm as a company has so far not been able to keep up with the speed with which apps are developed, changes made to the underlying Linux based OS, and new developments around the web as a whole. If you are going to move to a rapid development platform, then you have to be part of that yourself or else it just frustrates all those driving 60mph around you while you are in the left lane going 30. At least get out of the way if you want to go that slow :)<br />
</div><div><br />
</div><div>In some ways they are out of the way at least by allowing homebrew and the hacking/patches that people are distributing already. But that doesn't provide a path to the majority of end users of the device who don't know about homebrew or developer mode or webOS Quick Install. Palm, we need you out of the way to get to these end users. I know there has been an announcement of a fast track way in the future for developers to distribute apps outside of the Palm App Catalog which is a start, but if you are going to let us bypass the catalog, then why not just allow us full access to all the System API's that are right now restricted to Palm apps. Let the end user choose if they want to trust an app to access their contacts or email client or whatever. Be truly open. When I download software for my Mac, I take a calculated risk everytime that the developer doesn't have bad intentions. All you have to provide is a way for the community to rate apps and it will work itself out while not stifling the ability of the apps to surpass what Palm is doing.<br />
</div><div><br />
</div><div>Back to the analogy of the cars, Palm is in the slow lane right now with some subpar apps. Lone developers have already solved a lot of these issues in addons, apps, and patches, but they are relegated to superusers only at this time. Palm has people out there doing their work for them for free, but yet they don't take advantage of it or allow their end users to take advantage. With homebrew apps and patches you can have a real super phone that far surpasses what an iPhone provides, but then their is no revenue model for the developer. You have to use the Palm App Catalog for that and the app catalog is just not built for the speed at which top rate developers are creating applications.<br />
</div><div><br />
</div><div>My proposals for improvement that should be able to be made quickly on Palm's part:<br />
</div><div><br />
</div><div><ol><li>Provide every developer who has paid the fee access to submit their app to the app catalog and get it pushed immediately to some category marked "Unreviewed-warning could be dangerous". Basically tell users to use these at their own risk as they could be buggy and dangerous, but for the love of god let us get our updates and releases out there immediately to users who are willing to take that calculated risk. I promise the rewards will be a lot better than the issues you will have.</li>
<li>Stop the com.palm restriction for system API's. It doesn't make sense to prevent 3rd party developers from not being able to access contacts, calendars, etc. "Synergy" means everything works together, so if you want the cow, you get the milk. Give us access.</li>
<li>You must release major updates early to developers. gDial Pro was broken by undocumented changes in 1.2. These changes have not been acknowledged or explained even though I have reported them. The developers are more than happy to be beta testers of new versions if it means they can keep their apps working. Everyone else does this. Apple announces new features and then releases beta updates to developers, and then releases to end users.</li>
</ol></div><div><br />
</div><div>That's it. These are 3 easy steps to greatly improve the webOS position in the marketplace. There are amazing developers out there creating great apps, but they usually require com.palm access to be amazing. My own app gDial Pro is not so amazing when it can't universal search over all contacts on the Pre in the official App Catalog version.<br />
</div><div><br />
</div><div>There are some other changes that need to be made, but they will take more time and I may discuss in future posts. But these 3 items really are simple and should be fairly easy to do from your end in a short amount of time.<br />
</div><div><br />
</div><div><b>Welcome to the new Internet speed, now get out of my fast lane.</b><br />
</div>flpalmdevhttp://www.blogger.com/profile/10413672431004030778noreply@blogger.com6