Posted: February 13th, 2010 | Author: irv | Filed under: Apple, Cocoa, Companies, Objective-C, Programming, iPhone, mides | Tags: Apple, Cocoa, iPhone, ipod touch, mides | No Comments »
A few days ago I completed an analysis of what my profit and loss looked like for both of my applications. What I discovered was very disturbing, or would be to any entrepreneur.
I have to date put around 200 hours of work into Mides and around 90 hours into CycleMetrics. So far I have made less than $2,000 total on either of them.
Part of this is my fault, I started out with something of a flawed concept with the design of Mides because I was in love with the idea of nested code, self closing tags, and closures. This ended up eating away almost all of the devices’ memory, and was so recursive as to be nearly unmaintainable.
So I killed my darlings, went in for a heavy refactoring of the code without nesting, and ended up with a pretty decent mobile IDE.
However, at what my hourly rate is at this point in my career, based on my salary plus benefits, I am as of now, with all of my original plus ongoing effort into the software, about $30,000 in the hole on Mides, and $10,800 in the hole on CycleMetrics.
When I launched my app, shortly after the app store launched, I thought that I would be able to make back my money in 2 years and get positive. It has been 2 years, and I’m nowhere near making my investment back.
This is mostly O.K. since I have an awesome job, and I’m not missing a house payment or anything, but I think it is unwise to basically give away software that you keep shelling out effort on. I can’t let it die either, that doesn’t make sense, I love the idea of programming on your mobile, and I love the idea of being able to code on the apple tablet even more.
I also hate ads, and don’t want to do the ad driven thing. So while I’m still subsidizing the hell out of Mides at $9.99, it isn’t the slap in the face that $4.99 was.
So as a result, I have decided on $9.99 for Mides. I am putting in a fair amount of work to get to the tablet in an intuitive and sane manner, I also have a bunch of features planned. Some of which have been suggested by the awesome community at getsatisfaction.com/mides, and others that fit in with my dream of Mides.
I am still not sure what I want to do about CycleMetrics, but I have some online features that should be able to drive more reveneue for me. I don’t want to go to ads, and I don’t want to lock users in or try to steal their personal info to try to make a buck on it. That just doesn’t jibe with my philosophy.
We’ll see if the market thinks Mides is worth $9.99. I still think it is worth way more, but that is because I see it as it will be, not as it is. If people don’t think it’s worth $9.99, then they will later, but I can’t promise to keep the price there as I struggle to make it my dream of a fully featured mobile development environment.
Posted: January 25th, 2010 | Author: irv | Filed under: Apple, JavaScript, PHP, Programming, iPhone, mides | Tags: 1.7, code-completion, JavaScript, jslint, mides, PHP | 2 Comments »
I wrote Mides originally to help me to write web applications when I am on the go. A huge part of web application development is JavaScript. The iPhone / iPod is an awesome device for heavy client JavaScript apps. So as a result, I added JSLint in Mides 1.7 to make debugging JavaScript easier.
The main problem with the developer setting in Mobile Safari is that it is inaccessible to other applications. Since one of the main purposes of Mides is to enable development with either no, or an unreliable internet connection, it wouldn’t be possible for Mides’ internal HTTP server to run and serve the mobile safari application with content. This is the entire reason I wrote an HTTP server for Mides, so that JavaScript XHRs would work correctly for testing.
What I have done to help out with JavaScript debugging is to modify Douglas Crockford’s JSLint library slightly to make it work on the iPhone. It helps out with outright errors, but also with many excellent tips for writing safe and readable JavaScript applications. You can see the errors and optimizations by tapping on the burst and exclamation point icon when it appears over your JavaScript or HTML. This feature is optional and can be disabled in the iPhone settings.
Another issue I wanted to address with a new feature is that I always forget the argument, or the exact PHP method call that I want to use, especially around MySQL. I already had the documentation in there, but since it is a full-text search, it tends to take a while. So I added a new feature that allows you to look up just the method signature, that is the method name and the arguments to the method. I didn’t want to put a button in there for this, it just didn’t seem right. I tried for a while to come up with something usable, and I think I have figured out something that works. You just need to twist the phone to the right ( or left ) to do the code-completion on the method. If the text before the cursor matches one or more PHP method signatures, then it will add that value in context, in line into your code with the argument types. If it matches more than one, it will display a modal dialog that will allow you to choose from the top 5 PHP methods that match what you have typed.
One fix that a customer asked for on getsatisfaction.com/mides was that I make tabs parse properly. I also added that in Mides 1.7, now your tabs will be properly displayed. To create a tab, just space 5 chars into the document.
I am adding features both at the request of customers on the burgeoning community on getsatisfaction, as well as through my own usage of the product. I probably won’t implement all of them, but please keep the suggestions coming. They help tremendously. Some of them are really tough to implement, but if they make it more usable I’m all for it.
One of the main issues around Mides is moving files onto and off of the phone, Apple hasn’t made it easy, and FTP is not the best solution, it is a nightmare to support, and difficult for users to set up. I thought about having a small application that you could install on your Mac and PC that would make it much easier to transfer files with, but this didn’t seem like the best solution either. I am actively thinking through better ways, but nothing so far has really stuck.
At any rate, I am constantly trying to make Mides more useful, I know it has been rough, but I’m glad to see that some of you are starting to get real use out of Mides. I hope to keep making it better and eventually to rival and in some ways improve upon the desktop coding experience.
Posted: July 24th, 2009 | Author: irv | Filed under: Apple, Google, Microsoft, iPhone, mides | Tags: Apple, ARM A9, Cortex, Multicore, tablet | No Comments »
I have been poking around with ARM chips via the beagleboard for a while now, and I have to say that at a far lower speed, they are much more energy efficient than the Intel Atom, and I have a hard time finding the difference in performance. After Intel’s tirade at that conference, I was sure that there was something to the threat from ARM, now we are seeing some rumors about the possible fruits of the Apple / PA Semi merger : AppleInsider exclusive: Apple Tablet Early Next Year.
While that is interesting in its own right, I think there is more at stake here than just what chips are powering the coolest devices. I have been waiting, as have most everyone else, for this conceptual tablet. I want to not have to carry a Kindle, an iPhone, and my laptop. It would be awesome if I had a single device that used wireless HDMI to connect to my screen and speakers, bluetooth to communicate with my keyboard and mouse, and 3G for phone calls and mobile data. This mythical tablet is the closest thing to this. If it runs full OS X, and has the ability to run iPhone apps as well as native OS X apps it will complete the hat trick. It should have a virtual keyboard for when I am not near my bluetooth keyboard, and when it is in proximity, it should use it, without dialogs or configuration. Likewise when the monitor is away, it should display on device, otherwise, it should use my monitor.
So even if this device is only partially what my dream is, it will be enough to get me to buy it and probably most of everyone else will buy it too. That makes for an interesting shift in the consumption of applications. Now people will start developing for mobile first and desktop second. This means that they are developing for ARM first and Intel second.
From the server room to our pockets, power is a concern. One of the things that I can’t wait for is the ability to have a server that runs 100 ARM Cortex A9 cores at 1 GHz instead of 8 CPUs at 3.4 GHz. The former server would consume way less power and perform far better as a web application server due to the extreme threading that would be possible. Desktop machines would follow directly behind with 50 core desktop machines with 50 PowerVR video card on a chip chips with the monitor divided up in a 25 x 25 grid ( this will take some work ). This could be a very thin box with only one very silent fan and have insane performance. Not to mention that the same machine could be a laptop that runs way cooler than my MacBook Pro, which hovers around 135 degrees(f) while just playing iTunes. It could get 16 hours of battery life using the same battery that I use today.
In this world, Apple is far better positioned than Microsoft, with their / Kronos’ OpenCL. Snow Leopard will be in a great place to benefit from this type of architecture. Not to mention the AppStore, Apple has the DRM, distribution, signing infrastructure all in place, and hundreds of thousands of developers know how to use it, don’t think they aren’t thinking about pushing this model to the macintosh for application distribution, it just makes too much sense.
The future is clearly mobile, but who is going to lead that charge is an open question. Apple has made moves to secure their superiority for the next few years, Microsoft appears to be going backwards. Intel just can’t seem to break into the ultra-low power CPU space without an acquisition. I think the Wind River purchase was to put a dent in the number of ARM customers. Clearly the future is not dominated by WinTel. I am shocked that AMD hasn’t abandoned its platform and moved to ARM computer on a die chips, I am sure you could imagine how awesome it would be to have a muti-core ARM chip with an ATI GPU on a die. Intel would say that the ARM doesn’t perform as well as their Atom CPU, but that was the mistake that let AMD back into the game before, they just kept sticking to the performance argument while the market was telling them that the current speeds were fast enough, and that they wanted better performance per watt. If Intel hadn’t had that R&D group pushing ahead with the Mobile Pentium in Israel, the computer industry would look very different today.
I think that the Apple tablet will be a game changer, and will ultimately be their most successful computer launch, even more so than the iMac which brought them back. I am afraid that if Microsoft and Intel can’t answer, the one-two-punch of Steve Jobs, and Google will finally have felled the giant duopoly.
Posted: July 8th, 2009 | Author: irv | Filed under: iPhone, mides | Tags: 3gs, IDE, iPhone, mides, PHP, update | No Comments »
I have been getting killed in the reviews for the past couple of weeks. Probably deservedly so. I wanted to drop a brief update as to what is going on with Mides. After exploring the concept of including a PHP interpreter to debug scripts, I have decided that at this time it isn’t practical. There are too many problems and roadblocks to implementing it, not to mention that it is only palatable, performance wise, on the iPhone 3GS, which many people do not have at this time.
What I have decided to do is to work on additional features to improve the functionality of Mides as an IDE. I have some code completion features I am working on, improving the performance of the documentation searches, and adding line numbers are a few of the improvements that I have brewing for the next release of Mides.
I appreciate all of the awesome feedback, and am working to implement as much of it as I can, or at least as much as my day-job will allow.
Posted: May 7th, 2009 | Author: irv | Filed under: PHP, Programming, android, iPhone, java, mides | Tags: android, IDE, Interpreter, iPhone, mides, parser, PHP, Programming | No Comments »
For the past few weeks I have been working on writing a PHP interpereter for Mides. As I know that I am not allowed to do it for iPhone, as it would involve downloading and executing scripting code, which is not allowed. I have only been looking at the tokenizer for the iPhone, while I have been looking at the full monty for Android.
I actually have gotten to the point where the tokenizer is passing a lot of my tests, but there is a lot of ground to cover with PHP. Tommy Carlier’s blog on writing a parser has helped tremendously. Still, even after getting the tokenizer working, I have to write an interpreter to execute the tokens. This involves implementing the many methods that PHP has built in, so it will be a while until I get that completely done.
I am pretty frustrated with Mides for iPhone, actually, I wanted it to be a full PHP implementation and editor, but until the Terms and Conditions change it isn’t worth the effort to build an entire PHP interpreter just to have the app rejected. I am still improving the iPhone version, and the next update should be a huge improvement over what is currently there. I had to remove the nesting because I need the memory for documentation search as well as the PHP tokenizer that I am working on. Overall, the next update for Mides will make it better, it will be close to what I was hoping for, but it will never be completely what I was hoping for on iPhone.
The Android version of Mides on the other hand is shaping up nicely. The Android text view supports color so I have some syntax highlighting happening which doesn’t hurt performance on the G1 too badly. The tokenizer is mostly done, and now I am designing the interpreter. Development on Android is going a lot faster since I don’t have to worry quite as much about memory leaks, although if you try you can still make them happen.
At any rate that is why there haven’t been any updates for Mides in a while, I have been working on localization, parsers, and interpreters. I am spending most of my time on the iPhone version of Mides, but it seems that I am getting farther with the Android version, go figure.
Posted: February 14th, 2009 | Author: irv | Filed under: Programming, mides | Tags: android, g1, Google, phone, t-mobile | No Comments »
For the past few weeks I have been thinking about the limitations placed on my mobile ide Mides in the App store. I have been turning around and around the idea that I should write a version for Android that does some of the things that I really want for it to do, like have a real PHP parsing engine, have a ruby interpreter, etc…
I could put the time into doing it on the iPhone and then submit it to Apple to see what they say, but that could be a bunch of wasted effort, and even if they were to pass it one time, the next update may be rejected. My application is a niche application, so I am really not into it for the money, although it is nice. I think I could actually build a better version, a version that was more inline with what I had originally envisioned on Android.
I don’t think the G1 is better than the iPhone, or that the iPhone OS is inferior to Android in some way, it is just the policy of the AppStore keeps me afraid to try new things with my App, or that the effort could be wasted not because of a technical limitation, but because of a policy limitation, which I hate.
The biggest question now, since I have decided to port Mides to Android is whether to get a G1 developer unit or a straight up t-mobile G1. I think I’ll get the t-mobile unit since I am not rich, and since it is more inline with what my target audience is likely to use.
Boy, I’m not looking forward to having two phone bills, but I guess that is the cost of doing business.
Posted: January 17th, 2009 | Author: irv | Filed under: Uncategorized, mides | Tags: Cocoa, IDE, Interpreter, iPhone, mides, Objective-C, PHP, Touch | No Comments »
Mides and The PHP Interpreter
I really want to put a PHP interpreter into Mides, the problem is my interpretation of the Ts & Cs of the App Store. It is my understanding that executing downloaded scripts is prohibited. To the best of my knowledge, downloading a bunch of PHP templates and running them through the interpreter runs afoul of that provision.
What that really means to me is that the dream that I had when I originally wrote Mides will be a long time coming. I think that with some competition, Apple will hopefully broaden the types of applications that are available in the app store. It would be fantastic if they allowed scripting languages to be included in apps. It would be awesome to have the ability to have ruby on the device, as well as PHP and Python. Really the only platform that I could put some sort of PHP interpreter onto would be Android, but for some reason I am just not super excited about it.
What I am super excited about is the Palm Pre. It looks sweet, oh well Mides fans, I guess we’ll just have to wait.
* 5/6/2009 – I am currently working on a Dalvik compatible compiler for PHP that will work on Android. It is a bit harder than I thought, so we’ll see if I can get through it. I looked at it on iPhone, and it still seems to be a no-go. *
Posted: March 10th, 2010 | Author: irv | Filed under: Programming, Uncategorized, iPhone, java, mides | Tags: iPhone, java programming | No Comments »
Coding Using Mides the PHP IDE for iPhone
So I have been checking out twitter, and it seems that people think that I am either crazy or sadistic for writing Mides so that one could code using PHP, JavaScript, and HTML on iPhone. The truth is that I am neither, well perhaps a little crazy.
What made me write it is that I was thinking it would be awesome if I could work on my sites on the iPhone. Everyone has downtime every once and a while where you wish you could do a little work. Mides does that for me. Working on projects here and there, it is amazing how much one can get done.
The way I came up with it was actually working in NetBeans and playing around with the code-collapse. That started the thought process that lead to the code collapsing metaphor present in Mides. I know that some hate it, and others love it, but for me it seemed to be a quick easy way to drill down into your code. Also, an additional benefit was that it allowed me to focus on the class, function, or loop that I was writing.
To me, the keyboard has never really been too much of an obstacle. I understand that for others it can be a problem, but having had my iPhone since it came out, the last time I thought about the keyboard was about two weeks after I had bought it. I really wanted a flexible bluetooth keyboard for blogging from the phone, but later I really didn't need it.
While not perfect, the code completion does help a lot, and once you get used to it writing markup can be really quick. I will keep working on ways, other than the ones already present, to allow Mides to accelerate text entry.
Some of the things that frustrate me while using it, even though I wrote it, are that I can't easily look up reference material on code that I am writing without leaving the code. Clearly copy and paste would be nice, and I wouldn't be surprised to see it in a subsequent release. The ability to debug JavaScript, and a real HTTP server running locally would be awesome, to help with resolving absolute paths. Ideally, I'd be able to process PHP directly on the iPhone, but that is complicated for a number of reasons.
Many of these features will be coming, but actually most of the effort has gone into thinking about how to achieve the complexity of a full modern IDE, while keeping the UI cluttered. I feel that I have succeeded in many places, where others need work. It is my aim, however insane, to build Mides into as feature complete an IDE as is possible given the hardware and software stack provided by Apple.
I used Mides to build the mides site, including all of the canvas tag work. I think I only did about 5% of the coding on the Mac. There were some interesting incidents working with alpha quality code trying to build a site on the iPhone.
Well, feedback is always welcome, and I am not above listening to rational criticism. I want Mides to be useful to everyone, and am looking forward to the day when I can do just about all of my work from my phone!
Posted: March 10th, 2010 | Author: admin | Filed under: Uncategorized, mides | No Comments »
Mides PHP IDE
Well after some great debugging by Apple, Mides, my PHP IDE has finally shipped. I can't tell you what a great feeling it is, as a lone developer to see your app in the app store. I realize however, that this is where the real work begins. I hope to be as transparent as possible about bugs, but I will play the new and upcoming features pretty close to the vest. However I can say that it is my full intention to make Mides a full IDE, with features on parity with its desktop equivalents.
Another possible inhibitor to my openness are the numerous NDA's that I find myself under. Hopefully that will change in time, but if I seem to be cagey, or cryptic, it's the NDA, not any desire to be difficult.
I know that there are several “no-duh” features missing from Mides, many of these will be added in upcoming releases. To get an idea of what is on deck from a bug fixing perspective, check the “known issues” area of my Mides page.
I'm a web developer by pedigree, and have actually built out sites largely in Mides, so I am definitely “dog fooding” it. Hopefully I will find bugs before you all do. At any rate, I hope you find Mides useful, and I appreciate your creative feedback, which you can deliver on my getsatisfaction site, through http://www.midestouch.com.
You can find Mides in the productivity area of the App Store.
Posted: March 10th, 2010 | Author: irv | Filed under: Uncategorized, iPhone, mides | Tags: iPhone | 1 Comment »
Mides and No Remote FTP
Frequently I have been asked why I have not added remote (web) FTP to Mides. The basic answer is that I see Mides first and foremost as an IDE. As an IDE, it needs to be able to edit and preview source code files, it needs to be able to preview / run / test these files, and ideally it should have good documentation. The FTP in Mides is only there because it was the easiest way to get files onto and off of the phone. WebDAV is another candidate that I might look at for communicating more easily with Windows machines, but either way, using a FTP server like CrossFTP, and Bonjour, or installing IIS and WebDAV is painful. Macs have FTP built in, which made it sort of a no brainer for me. FTP is a nice to have, but there are several reasons why it isn’t truly practical on the iPhone.
The first is obvious. If you have a production web site, why would you want to be doing edits live on the server. Aside from the security concerns, which can be addressed with SCP or SFTP, there is the simple matter of practicality. How could you possibly preview the site in firefox, or IE. Your edits could break your web application for 75 percent of your user base, and you wouldn’t know it until you got back to your computer. It is always better to at least check your work using your desktop before letting it loose on the world at large.
The second is security. If you are accessing FTP without using SSH, you are giving your password to whoever is sitting between you and your web server. This is dangerous especially on the iPhone and iPod Touch where you may be riding on a foreign access point (Wi-Fi). There are many cracked firmware routers out there, and if someone is logging off all of the URLs used to make calls over their device, they would get your username and password. If your public web application was accessible they could deface your site easily, or worse they could redirect traffic from your site to a malicious domain of their own. Even with SSH, there are many well known SSH exploits that can be run against exposed SSHd servers on the web. It is always better to use certificates, which are difficult to get onto the iPhone / iPod Touch.
The third is that your communication could be interrupted. This doesn’t sound too bad, but if your file doesn’t complete uploading, depending on your FTP daemon, you could corrupt a file on the server in a subtle way that you couldn’t find.
To prevent all of this, deployments to production should only happen directly from the staging server with code that has been tested in all required browsers. This mitigates the possibility of corruption, and security violations. Use AFP or SMB to transfer files over VPN, and use Kerberos authentication with either to make sure no one can snoop on your password. These things will keep you safe. If you want to work from your phone, use Mides and a good IPSec, PPTP, or L2TP solution. A good approach with a mac is to use a Dynamic Dns provider, and an open VPN product. Then connect via a secure tunnel to your Mac. Even if you are on a hostile router, you should be fairly safe.
* EDIT – 3/24/2009 *
I actually did add remote FTP to Mides, however I would still recommend against using the feature to connect to servers outside of your internal network.
Recent Comments