Today is a good day to code

Mides SFTP / FTP Uploading Bug

Posted: June 9th, 2010 | Author: | Filed under: Apple, Companies, iPhone, mides | Tags: , , | 6 Comments »

A few days ago I submitted Mides 1.8.5 to the App Store with some cool features and fixes to a number of minor bugs.  I was happy when it was approved and then went live.  Unfortunately, there was a bug in the release for iPad users, a hidden dependency that was broken with the changes that I made to the file view, and as a consequence, file uploading was broken.  The workaround, to type the file name into the now blank rename / upload screen will work only if the file resides in the root path, any files in subpaths will upload a file called (null).

While there is a partial-workaround, and the fix was a two-line change to a single class, it is still what I consider to be a severe bug.  As soon as a customer let me know about it, I fixed it and submitted it to Apple, emailing wherever I could to try to get the fix deployed to the App Store quickly.  I am super grateful to my customers for letting me know right away that there was a bug in the update.

I guess what I really want to say is that as a one-man shop, especially one with a day-job, it is extremely difficult to move quickly.  The approval process makes it extremely painful to keep short release cycles and iterate as I like to, because there is a risk that you will have a severe bug.  On the web, and elsewhere, recovering from this is pretty easy, just push an update, boom everyone has it.  With the App Store I can’t, since the review process can take a while, and while you are waiting, your ratings and reviews get destroyed.  Very few people go back and update their one star reviews after you have fixed their problems, so your ratings are unrecoverable.

So I am going to slow down the cycle of releases,  and allow myself adequate time for rigorous regression testing.  My hope is that this should improve the quality of each release.  I think this is Apple’s intent and desire, and maybe they are right.  As for me, I have learned my lesson, this is shrink wrap, not web development, and I will think about it that way.  I’m sorry for anyone who is experiencing a hardship due to this bug, and I hope the fix is approved soon.


Why I Disagree With Gruber : AT&T’s Price Changes Suck

Posted: June 3rd, 2010 | Author: | Filed under: android, Companies, iPhone | Tags: , , , | 1 Comment »

First, let me get the link to Gruber out of the way : good and bad regarding at&t data plans.  I read his post, I disagreed with AT&T’s price changes, and after reading it, I still disagree with the changes.  They are all bad.  First AT&T announces that they are upping their cancellation fee to $375 from $175, which was bad, but understandable given the percentage of their customers buying the iPhone.  Then they announce this garbage.  My biggest issue with it isn’t that they are charging for it, it is the way they did it.  They took a device that we all love for its simplicity and tied it to a maze of complicated data + text + voice plans.

Remember, when the first iPhone launched, there was just the iPhone plan, and the only choices that customers had to make was how much extra to pay for SMS, which sucked but at least it was understandable.  Now, trying to explain to regular people what will happen if they buy the iPhone HD is nearly impossible.  When I told my wife about it, not technical, she said, “but wait, it was supposed to be unlimited.”  It doesn’t matter if the cap is high, as soon as people know there is a cap, they will change their behavior.  They will start to think, maybe I should wait to look up this site until I get into Wi-Fi, or maybe I shouldn’t watch this YouTube video, or how many kilobytes per second is the streaming on this h.264 video, all way too complicated.

Going from bad to worse, we were on the verge of a new age for the internet with plentiful, high speed data everywhere.  We were going to start seeing a new class of always connected applications, able to provide real-time data.  Consumers are likely to start self-restricting their mobile data use unless they are on the few and far-between Wi-Fi hot spots.

There is a class of argument along the lines that AT&T was drowning with the amount of data its consumers were using and that no carrier could keep up with providing quality service for the prices they were charging. I can buy that, but the solution is simple, instead of complicating everything, increasing ETFs, and other stuff that is hard to understand for most people, just raise the price of the iPhone plan to $99.99 and give unlimited everything.

Contrast this to T-Mobile, who recently re-iterated that their unlimited was really unlimited.  One could argue that they have fewer customers and can afford to have more aggressive pricing.  That is true, however to the end user, unlimited is unlimited.  Unlimited is better than limited.  It is simple to understand.  I am very glad that I bought a Wi-Fi only iPad, or I’d feel like a sucker who got baited and switched after Steve Jobs got on stage and announced a “breakthrough” data plan for the iPad.  A 2 GB capped plan is not breakthrough, it is hobbled.  The iPad is designed to watch video, stream audio and in general consume the hell out of bandwidth intensive content.

Basically I’m glad I terminated my AT&T contract when I did.  My iPhone 3GS makes an awesome iPod, my iPad can take its place, I will be able to use my Nexus One for tethering when Froyo comes out if T-Mobile does what I expect and make it free.  AT&T’s crap makes the next generation iPhone look less attractive, since after all, the shine wears off on any new technical gadget, no matter how wonderful, but you are stuck with the crap contract.  T-Mobile also one-ups AT&T by offering attractive no-contract rates if you want to just buy your phone outright.  When the Nexus Two, or the dual-core Snapdragon HTC Scorpion or whatever comes out, I can just save up the money, buy the phone, slap in my SIM card and away I go, I don’t have to wait for 2 years.

The cell phone industry ought to be ashamed of itself for what it is doing.  Even with crappier cell service, which is getting better, T-Mobile is a far better carrier than AT&T.  At least they don’t bait-and-switch their customers and partners with half-truths and complicated one-off deals.  If this doesn’t make people look around for an alternative carrier to AT&T I don’t know what will.  You can get overpriced, horrible service, not be able to make calls, not be able to use the data you are paying for, not be able to get out of your contract for a fortune, and still have to pay large amounts each month for garbage service.  What happened to the model where the business didn’t take their customers for granted, where they actually did things to be better than their competition?  Why are we stuck in the US with carriers who just want to squeeze their customers for every penny while providing as little service as possible.  I don’t understand what is good about AT&T’s price changes, and I hope they don’t set a precedent for other carriers.  If so we may find ourselves, in this country, at the far back of the line as far as wireless connectivity goes.


The Battle Between Geeks and Non-Geeks

Posted: May 24th, 2010 | Author: | Filed under: android, Apple, Companies, Google, iPhone, Microsoft, Programming | Tags: , , , , , | No Comments »

This weekend, on a bike ride, I was thinking through the Apple vs Google situation, as well as the paid vs non-paid, and this whole concept of open systems vs closed and I came to the conclusion that it is really just about geeks vs non-geeks.

For about the past 20 years or so, computer stuff, anything digital really, has been produced primarily by the geeks at Microsoft, and later by various open source geeks around the world.  It was reflecting their world view, that everyone ought to be able to tinker, and that they might want to.  This caused the severe amounts of confusion that people have had for years.

It would appear that now that consumers have a clear and viable choice in Apple and the iPhone that they are choosing, in droves, really, the closed app store based system.  It would appear that consumers would prefer an app store to the open web, an individual coherent vision to multiple pieces of different developer’s visions of the optimal way to do x.  As Apple likes to put it, they want an appliance, in which applications are just another type of content, and all methods of doing anything are consistent.

I would say that consumers have chosen that, but not because Apple always provides a superior method, or that they like being closed an limited,  I would say that it is because Us, as geeks, have not done a good job of providing clear and usable alternatives.  For developers and geeks, configuration and making tons of choices are just table stakes for getting our devices and software working exactly the way we want them to work.  We have a difficult time creating things that violate the ability to choose a different way.  Part of that is that most of us never have the hubris to think that we can decide for others how to do a given thing, or which thing to choose.  But that is exactly what makes Apple more powerful than Google to the consumer.  Google is catching on, but in a way, at the same time they just don’t get it.

I, personally, understand and prefer many choices.  I like Mac OS X and Linux, particularly because there are so many different ways to set things up, the 3rd party developer community, around the Mac especially, have done an amazing job of filling in the usability gaps that Apple has left.  Should users choose these productivity enhancers, Apple has wisely seen fit to let the 3rd party devs keep doing their thing.  The problem with Android, and the internet in general is that most people are not like us.  They don’t want to seek out and try 5 different text editors and window managers, and text expanding solutions before finding the right one.  They want to just use it most of the time, and they would prefer if the base implementation didn’t suck.

Geeks, and Google, we would prefer to just let the base interfaces and systems suck, since our partners are either going to replace them, or augment them.  That is exactly what shouldn’t happen.  Technical solutions should be like European Socialism… The government provides a generally acceptable set of services that everyone pays for, but it is possible to get better solutions.  This provides something of a floor for service providers.  Likewise, if you are developing a music solution for example, provide a playback solution that works with it first, then give the ability to plug into other services if the user prefers.  That way, they aren’t left hanging initially.

Where I get frustrated with Apple, and where I continue to choose Google’s services, even they are less usable, are that they do not give me the latter solution.  They provide a kick-ass initial implementation, but when I want to go and replace or augment it, particularly around the iPhone ecosystem, there are no options, in fact, they go out of the way to defeat any other option.  If I wanted to use Apple’s music purchasing service, but I didn’t want to use the iTunes application, I am SOL.  Apple feels that they make the best music playback solution as well as the best service.  For some they may, but for me, I would much rather use AMAROK or something else to manage my music, inferior or no.  If I chose the other way, I might want to use Amazon’s MP3 service for buying, but iTunes for managing.  Apple should make that easy for me.

At some point, geeky companies like Google, and to their credit, they are starting to, need to create good baseline solutions that run up to, but stop short of competing with other products and services that are auxiliary to their primary product.  Apple needs to accept that people may occasionally choose to do their own thing and allow them to.

I do not buy the assertion that in order to provide a cohesive solution you have to block all others.  I feel that a system can be aesthetically pleasing and useful, as well as permissive.  Karmic Koala I think gets really close to being there, but there are still too many places that I can get into with the OS where regular users would go WTF?!!?

This is why I am continually working on a new OS that as an ambition would combine the completeness and ease of use of the Mac OS, but honor the internet, as well as user choice.  They are not mutually exclusive, and the only way to prove it is to build something that shows it.  It is a huge amount of work, which is why the only way to do it is open source, but since you have to make clear choices for the user, at least in the initial state, some stuff just couldn’t be committed.

Basically, end-users won’t realize the cost of the choices they are making until they are gone.  In a balkanized, app-store-ized internet, choices will be limited, prices will be high, and satisfaction will be generally low.  That is where we are going, that is the choice that users are making because they can’t wrap their heads around the internet.  It is our fault as geeks, and we are the only ones who can fix it.  The average user is going to pick the shiniest and easiest widget.  There is no reason we can’t make that.


HP Buys Palm for 1.2 Billion

Posted: April 29th, 2010 | Author: | Filed under: Companies, Palm | Tags: , , , | No Comments »

Yesterday it seems that HP bought Palm for 1.2 Billion dollars. I think it would be wise for HP to use Palm’s hardware instead of their own hardware, which has been less than awesome for quite a while. I would also not try to brand it iPaq. I think that HP may have paid too much for Palm, except that recently it seems that HP has been trying to design it’s own operating system for a few months now.

A friend suggested yesterday that Palm had bought Be a while back, but in reading further into it, it seems that BeOS is owned by a holding company called Access Co. At any rate, what I hope happens is that HP uses the webOS for some of their media devices.

It is interesting, to say the least, but I don’t know if HP operating Palm as anything other than Palm makes any sense. WebOS is interesting as well, but it really needs to track the chromium project more closely, maybe it is and I just don’t know, but much of the HTML 5 stuff doesn’t seem to be fleshed out really well.


Conflicted About App Store Policies

Posted: April 26th, 2010 | Author: | Filed under: Apple, Companies, iPhone, mides, Programming, Uncategorized | Tags: , , , | 2 Comments »

Last night I started down a train of thought that I wish I hadn’t. I started thinking about what the world would be like if Apple had been the dominant player, and Microsoft had faded away into semi-obscurity, if Linus hadn’t created Linux. What if the app store had come about years ago, and had become the primary method of reaching any significant number of users, with what other blogs are saying existing in their developer agreement.

What that future looked like was something that frightened and disgusted me in many ways. First and foremost, scripting languages, like Ruby, Python, Perl, and PHP would have been mostly prohibited on significant platforms, and thereby would have been relegated to mostly research oriented platforms. IE, no serious development of those languages would have taken place. Java would have been killed almost before it began, resulting in a much weaker web environment, as well as eliminating much of the boom that accompanied the web development land rush. Some very innovative companies would have had a much harder time achieving scale without the efforts of OSI around them, many of them would likely have never come to full bloom. Companies like Google and Amazon would have had to first develop their own operating systems free of Apple patent infringement, and free of the app store.

Much of the above is an argument for no software patents, which I generally agree with, but I think that isn’t where we should focus our attention. The main issue is that basically the fundamental structure that we all take for granted came about because there was always a viable alternative, that was open, and that the distribution of software was never limited or conflicted. Microsoft may have been many things, most of them negative, but one thing it got right was realizing that an open and free developer community is critical to the growth and improvement of the art. It will sometimes cause issues, and produce hideous products, but it is not the responsibility of platform companies to protect users from developers. Rather it is to assist in the developer-consumer conversation, especially as regards features and capabilities of the solutions being developed for them.

I actually hate Flash, I think it is outmoded and needs to go away, that being said, I can, and should be able to choose to develop solutions for my customers in whatever language or framework meets their needs. That choice needs to be made by the developer and the consumer of what that developer produces.

Apple has every right in the world to prevent developers and consumers from doing whatever Apple decides is wrong on their platform. That is their choice. Apple’s scale and access to customers, however is forcing am uncomfortable choice on their developer base. It is a choice that will itself go away if developers don’t do something about it now. It is the choice to either develop the way Apple wants, the solutions that Apple wants for it’s customers to have, or get off the platform and develop somewhere else. If developers don’t nurture alternative platforms, that ultimatum will become, either develop the apple way or don’t develop.

For those who think this is far fetched, Apple is poised to pass Microsoft in market cap, and probably has one of the strongest brands in history right now. They are almost the only game in mobile, with Android and Blackberry chasing, Palm, obliterated, and Microsoft marginalized. Mobile is every bit as important as desktop, in some ways more so.

My application, Mides, is actually being caught as collateral damage in this apparent developer agreement mess. It was my hope to create an environment in which developers could create and and test their web products using the scripting environment of their choice, be it ruby, php, or python. Apple had prohibited this sort of thing, by my interpretation, basically from jump, deciding that it was a feature that users of it’s products would never be able to have. That may have been an inadvertent choice, but it speaks to the types of use cases they have in mind for their devices, any uses that someone can come up with, even if there is a market for it, are prohibited. The end user volume that Apple has seems to say hay the end user likes this model, however I would argue that they don’t know what they are missing yet.

What does this amount to for me? Well, I am not going to make any overarching claims about developing for the Mac/iPhone platform, and I am not going to claim that I am going to stop using Apple products, they really are amazing products, but what I am going to do is vote with the only two voices I have, my money and my development efforts. I don’t like the way this app store pattern is going. I want a future where kids have access to modify and do crazy things with the devices and software that they use. I want for them, and for myself, to think differently, and try things that don’t work, or cause problems, because in the end, that is how humans learn. To have someone else decide for me what is safe, or what is cool, or how I should do what I do is the very anthesis of what I believe in. Designing amazing user experiences is one thing, dictating how I interact with the world through my computer and its peripherals, is completely different. I feel that Apple has pushed across the line of consumer advocacy, and has moved into something more sinister.

What I am going to do is to actively develop for other platforms, such as the web, Ubuntu, and Android, even though I am still angry with Google for banning me from their user group for no reason. The rationale behind my decision is that Google doesn’t control Android, anyone can fork it and do what they want. If I want to push out a beta, I can, if I find a bug I can push out a release in the morning and my users can have it in the afternoon. I am back in the loop with the conversation that my customers and I are having without having a disinterested intermediary in between. I will from now on, very carefully think about my consumption of Apple hardware, and their software and services, before buying them.

This line of thought completely knocked my Apple fanboy hat off, if Apple cares, and I hope they do, they will work to re-establish that childlike sense of wonder in me that I am developing for the best platform in the world, if not, it’s not a big deal, if I am alone in the way I feel, Apple has millions of developers and consumers, they don’t have to care about one, but I’m betting that I am not alone, and throwing all of our weight around is going to be a big deal to them. Apps make and break a platform, and by capriciously throwing away the developers of those apps, Apple is making a huge mistake.


Google Will Buy Palm

Posted: April 20th, 2010 | Author: | Filed under: android, Apple, Companies, Google, iPhone, Palm | Tags: , , , , | No Comments »

I hear a lot of prognostication about who will buy Palm now that they are officially up for grabs.  People are suggesting that HTC, Lenovo, or even Apple would be the most likely to buy them, however I don’t think any of them will get Palm.  I think that Google will get Palm for around 1 billion dollars, and here is why.

Primarily, the main reason is that Palm’s WebOS falls directly in line with Google’s philosophy of web first, native second.  That with the Google Native Client could make for a compelling addition to Android.  One could argue that Android is lacking only in UI, and WebOS has a UI second only to the iPhone.  Secondarily, buying Palm would give Google patent ammunition to use in assisting HTC in their legal battle with Apple, especially since it is Google’s Android OS that is causing the issue.

It doesn’t make sense for Apple to get Palm, even if they are in the bidding, because Google has shown in the past that it is willing to go way above a company’s valuation to snag them.  This makes just too much sense so it has to happen, that is my prediction, it is sort of hopeful because I like WebOS and Palm, and would like to see it continue, albeit in a more pure HTML 5 sense.


Hands on Review of iPad Vacation Update

Posted: April 15th, 2010 | Author: | Filed under: Apple, iPhone, mides | Tags: , | No Comments »

For the past week and a half, I have been on vacation with my family, my iPad had come a day before we were scheduled to leave. I wanted to write an addendum to my earlier quick hands on review since I have had some time to work with it for a few days.

In many ways, the iPad is a breakthrough device, changing the game as far as usability as well as functionality. But for someone like me, a software developer, it misses the mark a bit.

The only significant bug I have encountered while on vacation is the Wi-Fi bug. It has bothered me at almost every hotel, with the device frequently failing to connect to the netwok, or to obtain an ip address. Otherwise things have pretty much worked as I had expected.

Without the ability to use Xcode, let alone GCC, and with the prohibition on downloading and executing additional binaries, however I haven’t been able to fix simple bugs with my iPad / iPhone application, Mides.

Right now, for someone like me, the MacBook Air, 13″ MacBook Pro, or my old trusty 15″ would be much better. For the weight, the MacBook Air would be a much better travel companion for an Objective-C coder.

I have been able to do a bunch of JavaScript / CSS / HTML work with Mides on the iPad, thanks to the Bluetooth keyboard, but serious software work will not really be practical on this device.

However, as a media consumption device to keep the kids happy, this thing has been awesome. The netflix, and other streaming video applications, has been fantastic, when the wi-fi worked. The 3G version should take care of the wi-fi issues, via not using it, but I am looking forward to the 3.2.1 update.

I’ll write another more comprehensive review, when I get back, as well as using my MacBook Pro to get Mides’ bugs fixed.


Mides 1.8.1 Endless Keyboard Popup Issue

Posted: April 9th, 2010 | Author: | Filed under: Apple, Companies, iPhone, mides | Tags: , , , | No Comments »

The Mides 1.8.1 release should have fixed a bunch of the startup, and SFTP stability issues, but there was one lingering issue. The endless keyboard popup issue. The fix is to disable the “Twist to complete” feature in the iPad settings app.

The reason this is an issue is that the accelerometer values for the iPad are way more extreme than the iPhone due to it’s size, so the code that I had to ignore small movements of the device is not working on the iPad. I will remove twist to autocomplete for the iPad in a future release as it doesn’t make sense for this device, and since there is now a button for it.

This issue shouldn’t affect the iPhone, it is an iPad only issue. There was no way to find then issue before I had hardware since the accelerometer is not available in the way I need on the iPad simulator. But at least there is a good workaround.


Hands on Review With The Apple iPad

Posted: April 3rd, 2010 | Author: | Filed under: Apple, Companies, iPhone, mides | Tags: , , , | No Comments »

Today at around 9 AM my opinion of the Apple iPad changed. In one of my previous blogs, thoughts on the apple iPad, I commented that I wouldn’t buy the iPad if I weren’t a developer, and if I hadn’t I would be seriously disappointed that I hadn’t.

The first thing that I noticed was that the iPad feels really sturdy. It feels as strong as s piece of solid aluminum. The on screen keyboard is pretty good, in fact, I’m using it right now to create this post. But using the Apple Bluetooth keyboard with it makes it clear that this thing has the ability to replace my laptop for most of the reasons I carry one. My own app looks great, although not without it’s minor bugs. A friend found a way to get into an endless loop with the code completion dialog. It took me a while to figure out a work around, it turned out to be changing the orientation.

Browsing the web is just …. Natural … There is a quality to using the web on this that is difficult to describe, but it is like nothing else. I would recommend that if you can wait, the 3G version would be better if you don’t mind AT&T, and you don’t mind paying them extra. If you do not have an iPhone, it may make sense to pay the extra. If you do have an iPhone already, then it just doesn’t make a ton of sense to me. I will probably get a MiFi somewhere and just sign up for a contract.

I would recommend getting a case as well. While I am not afraid that it will break, it is bigger than it feels in your hands and as such is a pretty likely candidate for some unintended bumping. The battery life is stellar. I don’t even think about it, and at the end of the day I still have 47% power.

The app situation is pretty unclear. I added a bunch of apps to my iPad hoping that more of them would have been optimized for the iPad. But it seems that most developers opted to create completely separate applications for the iPad. I was going to do that as well, but I didn’t want the headache of having to maintain two separate applications with the same functionality. The doubled applications range in usability. I found that most of the applications were very usable in their iPhone form.

In summary, my opinion has been changed. The iPad is a game changer. Mides on it is excellent, especially with the bluetooth keyboard. The iWork suite is fantastic. I love this form factor, it feels like you are playing with the future. It is also awesome to be able to stream episodes of Top Gear on my iPad with the Netflix app. I am glad that I got the 16 GB version, I really find that I don’t need more storage since I always have my iPhone with me, I haven’t found that I run out of space, especially with the convert to 128kbps AAC option in iTunes 9.1. Since this is a first impression, I’ll check back in after my experiment to see if I can live with the iPad instead of a laptop for a couple of weeks.


Mides 1.8 Release

Posted: March 29th, 2010 | Author: | Filed under: Apple, Companies, iPhone, mides | Tags: , , , | No Comments »

On Thursday I submitted Mides 1.8 to Apple, hoping to get it in for the big launch of the iPad store. However, it got kicked back to me because the reviewers approached it in a pattern that I hadn’t tested. They exposed a bug related to some #ifdef code that had hung around after my refactoring.

While I am disappointed that I didn’t make it for the launch, I am happy that Apple found that bug before my customers did. I have since fixed that bug and fixed some other minor issues related to SFTP. So all in all, this release should be a really good one. Unfortunately I’ll have to wait a few days to resubmit until my iPad comes in the mail. It’s better to test on real hardware. I could sit here and pretend that I didn’t want to release until I had the device to make sure that I had everything just right, but I am too honest for that.

I think that this is a huge launch and would have loved to be there at day 1. Suprisingly I just missed the 2.0 launch in much the same fashion. But I was in the store about a week or two later. Fortunately we won’t have to wait that long this time.

The announcement that Apple was accepting apps before the hardware shipped caught me by suprise. I thought they would make everyone wait until the device was out. 1.8 is a very ambitious release, trying to get SFTP and the iPad refactoring into it.

I’ll probably keep plugging away on 1.9 until I can resubmit my 1.8 branch. Mides on the simulator is awesome. I can’t wait to load it up on my shiny new iPad, I can’t wait for everyone who is supporting and using mides to do the same!

*EDIT* 4/2/2010

Mides actually will make the launch of the iPad app store.  In fact, it is in there already!  I am super jazzed to have a launch title on the AppStore.  The iPad version is pretty cool.  Just having more screen real-estate is huge.  I hope that there are no strange bugs.  Once I get my iPad on Saturday, I’ll sanity check it and try to fix any bugs that I notice.  Apple did pretty good due diligence on the app though, so I figure it is OK.