Mar 2010
Development setup
Mar/23/2010 06:14 PM
I've got several applications I'm working on; each of them are nearing the end of the planning stage and I'm now jumping into coding them.
On a Mac.
For years I've been musing about writing some software for mobile devices and about a year ago I worked up the motivation to get started. On my Mac. Back then I was targeting Symbian - I wanted to write some software for the touchscreen enabled Nokia devices then coming to market. On my Mac.
I was a leper. A freak. It wasn't that I felt unwelcome in the Symbian development community, but with every dammed download being a file ending in .EXE and having base requirements including some version of Windows... well I'll just say that it was more annoying than I had hoped.
Now I'm targeting Maemo/MeeGo. Things are different. Wonderfully different. Instead Windows being the rule (with, of course, some exceptions) it is now Linux that is the rule (again, with some exceptions). Linux; so much more flexible than Windows. Hell I'm even willing to RUN Linux. Still, I'd rather run MacOSX.
So I'm getting my development environment setup. Were I booting straight into Ubuntu, apparently, everything would be smooth sailing and more or less integrated. I'm not. I'm still somewhat off the mark of the 'ideal' developer. This time though, I don't think the hurdles will be overpowering. This time, I can see the light at the end of the tunnel and it's surely not so long of a trip to get there.
I'm starting this blog off now, before I get everything setup, so I might document events as they pass: problems, decisions, solutions, and rationale. The whole 9 yards.
And to put this whole process in context, I'll outline the basic requirements for the apps I'm working on. I'm not ready quite yet to announce the apps or their feature sets, so "names have been changed to protect their identities":
Secret App #1: 'Grasshopper"
- Standard GUI app with touch friendly controls
- Most UI widgets will be text boxes and lists
- Will provide at least one very dynamic graphical representation of data that changes over time, including visualization of filtered predicted data; I'm still working out exactly what sort of graphica elements to use here but simple may be best.
- Will use a SQL database for data storage if I find that tractable, perhaps text files if not
Secret App #2: 'Locust'
- Will require a background daemon polling for location data
- Will require use of local sensors including the accelerometer to detect motion events
- May use a SQL database for data storage but will require significant work to prevent the data store from growing too large
- May include integrating location data with maps, with the goal of having the user draw on the map using their finger (stylus hopefully never needed)
- Will include integration with a task and event subsystem; hopefully the native calendar application
There is a third app in the pipeline, but it will borrow a lot of code (or at least concepts) from both of these, so for now it has got to sit on the back burner until both of these apps are more or less code-complete.
I'd love to develop both of these using Qt, but for now the Qt Mobility API is incomplete making development of a location aware Qt app using MacOSX rather, well, more of a steep learning curve than necessary otherwise. Besides, I think working with the official SDK would be good for me.
So I've downloaded the Maemo5 SDK (actually the virtual appliance development package - an Ubuntu virtual machine with everything neatly preinstalled for me). This will be used for developing 'Locust' while the cross platform framework and tools will be used for developing 'Grasshopper'. Using Madde to compile my Qt app for the N900 I've already got a basic UI stubbed out and working on my device.
The moral of this blog post: If you want to develop N900 apps on a Mac, you should first see if Qt provides all the APIs you want to use (today, not eventually, since we all know the goal is to eventually support a full development environment through Qt). If you can get your project done in Qt, install Madde on your Mac along with Qt Creator and all the framework bits. I started with a simple 'Hello World' example in Madde and have extended from there to what appears to be a fully functional app (until you try to enter data and find that nothing is saved and none of the computed values are ever computed).
If Qt doesn't fit your needs, best bet is the Maemo 5 SDK in the form of a virtual applicance. I'm quite glad I downloaded it and absolutely ecstatic that it was provided.
On a Mac.
For years I've been musing about writing some software for mobile devices and about a year ago I worked up the motivation to get started. On my Mac. Back then I was targeting Symbian - I wanted to write some software for the touchscreen enabled Nokia devices then coming to market. On my Mac.
I was a leper. A freak. It wasn't that I felt unwelcome in the Symbian development community, but with every dammed download being a file ending in .EXE and having base requirements including some version of Windows... well I'll just say that it was more annoying than I had hoped.
Now I'm targeting Maemo/MeeGo. Things are different. Wonderfully different. Instead Windows being the rule (with, of course, some exceptions) it is now Linux that is the rule (again, with some exceptions). Linux; so much more flexible than Windows. Hell I'm even willing to RUN Linux. Still, I'd rather run MacOSX.
So I'm getting my development environment setup. Were I booting straight into Ubuntu, apparently, everything would be smooth sailing and more or less integrated. I'm not. I'm still somewhat off the mark of the 'ideal' developer. This time though, I don't think the hurdles will be overpowering. This time, I can see the light at the end of the tunnel and it's surely not so long of a trip to get there.
I'm starting this blog off now, before I get everything setup, so I might document events as they pass: problems, decisions, solutions, and rationale. The whole 9 yards.
And to put this whole process in context, I'll outline the basic requirements for the apps I'm working on. I'm not ready quite yet to announce the apps or their feature sets, so "names have been changed to protect their identities":
Secret App #1: 'Grasshopper"
- Standard GUI app with touch friendly controls
- Most UI widgets will be text boxes and lists
- Will provide at least one very dynamic graphical representation of data that changes over time, including visualization of filtered predicted data; I'm still working out exactly what sort of graphica elements to use here but simple may be best.
- Will use a SQL database for data storage if I find that tractable, perhaps text files if not
Secret App #2: 'Locust'
- Will require a background daemon polling for location data
- Will require use of local sensors including the accelerometer to detect motion events
- May use a SQL database for data storage but will require significant work to prevent the data store from growing too large
- May include integrating location data with maps, with the goal of having the user draw on the map using their finger (stylus hopefully never needed)
- Will include integration with a task and event subsystem; hopefully the native calendar application
There is a third app in the pipeline, but it will borrow a lot of code (or at least concepts) from both of these, so for now it has got to sit on the back burner until both of these apps are more or less code-complete.
I'd love to develop both of these using Qt, but for now the Qt Mobility API is incomplete making development of a location aware Qt app using MacOSX rather, well, more of a steep learning curve than necessary otherwise. Besides, I think working with the official SDK would be good for me.
So I've downloaded the Maemo5 SDK (actually the virtual appliance development package - an Ubuntu virtual machine with everything neatly preinstalled for me). This will be used for developing 'Locust' while the cross platform framework and tools will be used for developing 'Grasshopper'. Using Madde to compile my Qt app for the N900 I've already got a basic UI stubbed out and working on my device.
The moral of this blog post: If you want to develop N900 apps on a Mac, you should first see if Qt provides all the APIs you want to use (today, not eventually, since we all know the goal is to eventually support a full development environment through Qt). If you can get your project done in Qt, install Madde on your Mac along with Qt Creator and all the framework bits. I started with a simple 'Hello World' example in Madde and have extended from there to what appears to be a fully functional app (until you try to enter data and find that nothing is saved and none of the computed values are ever computed).
If Qt doesn't fit your needs, best bet is the Maemo 5 SDK in the form of a virtual applicance. I'm quite glad I downloaded it and absolutely ecstatic that it was provided.