Is Xojo the right development tool for me?

Hi,

I’m completely new to Xojo and development in general beyond creating a few prototype rings in Filemaker. I have a pro License which I got as part of a Mac software bundle promotion. I would hope to get some kind of advice from developers here familiar with Xojo and other development platform options as to whether I would be best served in investing my time in Xojo or going elsewhere for my particular project (or even dropping the idea completely if it’s unrealistically ambitious) .

I have come to development as a frustrated end user of software within my profession - (film and video production). There were many gaps in the options available for automating tasks and fulfilling many of my duties within existing software solutions and despite my many attempts to ask for features to be added to assist with my (relatively new) area of the industry nothing was forthcoming from any of the current software providers. Others have begun to emerge with some of the solutions I was seeking but all are expensive and none fulfil my vision of what should be possible. I think there is a market for my vision if I can develop it and get it out in time.

For this reason whatever development platform I learn I need to be able to do so quickly and easily. I don’t have much time to invest alongside my day job and I need to be reasonably quick to market - say 6 months or so, and that includes learning and programming in my very limited spare time. I want the application/s I develop to be multi platform and I want to be able to make mobile apps which link in to them down the line.

The apps will be very database centric - scaling from single user to sharing data amongst multiple users via a local server and maybe even a web server with some kind of web front end available. An attractive and intuitive UI will be a key to it’s success - so what I develop on should help me by providing elegant and intuitive native controls to make this job easier. A core piece of functionality will be the viewing of video clips in various professional formats and extraction of metadata from them - some of these are not natively supported on desktop platforms and will require use of the camera manufacturers SDK’s or API’s so if there aren’t plugins to use these existing already then I will need to create them and I would want the development platform to make this as easy as possible. One benefit of Xojo is that there is already a VLC library plugin available so I could use this to access a lot of specialist video formats and hopefully their metadata but I will still need to add others. Generating PDF and web reports and exporting this metadata in various formats for interfacing with other industry standard software will be another core feature of my software so any help the platform gives me with printing, PDF generation, building a report designer and text parsing would be appreciated.

Hopefully the above gives enough of an idea of what I’m trying to achieve and can help you answer as to whether Xojo would be the best path for me.

All the best,

Quentin.

Nobody can answer this question for you…

Can XOJO do what you described? certainly
Is it the best fit for you and your desired end result? Thats up to you…
You don’t mention a platform, so I cannnot mention other tools to consider
but I will say if you are starting at ZERO, then regardless of the tool you use, that is a VERY ambitious timeline
especailly for a database centric app… since in addtion to the chosen tool, you also need to learn and be comfortable
with SQL and database operations.

Thanks for the quick reply Dave.

I intend for this to be multi platform for desktop - OSX and Windows will be key platforms, but Linux might also be worthwhile down the road. I also want to develop companion apps for iOS and, if possible, Android down the road but for initial release just Windows and OSX would be fine so current support for them and future support for the others would be just fine.

I will also be following a roadmap of adding progressive features but I would like to know that I can achieve something I can begin to use myself internally for a few tasks within the 6 month timescale. No doubt I will be testing and tweaking it for some time in use on actual film productions.

I am fairly happy with some of the basics of databases for data operations as I have been using Filemaker for a few years now and been looking into SQL for some time now. My brain seems to think in a way that is quite compatible with databases on an information level - the security and establishing secure connections to them, well that I haven’t really broached yet. I am leaving Filemaker behind for this project because of it’s expensive and restrictive licensing model, large distributable file sizes and the limitations I was bumping into trying bring in unsupported video files and trying to use it as a deeper development environment than it is intended for. Also Filemaker helps abstract you from SQL (though I did need to resort to it to achieve certain things) so maybe there are other development environments that do this?

My guess is that incorporating 3rd party SDK’s and API’s will be the real hump here and this is where I’m not sure how much harder or easier things are with the various development platforms.

I guess this could also become a question of whether programming is something that can really be achieved in your spare time like this, whether it is worth giving up that time to do it if it is not something you are passionate about but just a means to an end. Can I learn it, do it, then come back to it when I need to to tweak things or will I get too rusty without regular practice?
Will I be better served by employing someone else? If so what are the costs involved? If I do it myself and then go to public release will I be able to hand it over to a team to maintain and support if I want to continue with my current career rather than becoming a full time software dev and support guy?

As Dave said, this is a tough question to answer. Xojo can probably do what you want but I’d need more details to determine that.

We do Xojo consulting and we have multiple developers with many years of Xojo experience. Even I would be hesitant to say all of that could be done in 6 months by just one of us.

If you involved all 4 of us it could probably be done in 6 months but what scares me is needing to use camera manufactures SDK’s and API’s. That’s a can of worms and in the long run it might take a couple of months to just get one of those working right.

Personally, I’d scale back what version 1 absolutely has to do. Get that out the door and in the hands of users and then future versions can expand upon it.

I agree with Bob on this. Trying to put all the features in the first release sometimes is not the right thing. Sometimes it is better to the the basic (functionality of the) app out the door, then release update(s) with the other functionality(es).

sb

Hi Bob & Scott,

I guess I let my full long term roadmap ambitions came through there and then I dropped the 6month bomb on top!

Yeah, I have way scaled back ambitions for V1.

Basically that would be a single user local SQlite db allowing you to import camera metadata from various sources, playback the clips and add notes and change fields, grab a thumbnail, create a PDF report, export an ALE (which is practically a CSV file with a few extra header fields) or XML for edit software to ingest. Currently my Filemaker solution does this but I am limited to Quicktime files and importing the video file metadata from accompanying text files that only a few cameras create. If I can read the embedded metadata in the video files and extract that into the database that would be a big advancement, as would playing back all the extra formats that VLC supports. That would be a good step forward and make a suitable V1.
I need to make sure that what foundations i build now will scale up to V10 though! That goes for the development environment too.

It seems really clear that the camera manufacturers SDk’s and API’s could become major sticking point in this ever getting off the ground and this has, in truth, been the biggest hurdle at the back of my mind for some time. What is actually involved here from a Xojo perspective and what questions do I need to ask to know if these hurdles can be overcome?

There are a couple of issues here. First, do they have a cross platform library available for Mac OS X, Windows, and Linux? And then if so can we use Declares or will we have to wrap it in a Xojo plugin? I’m not entirely sure what the boundary is for plugin vs declares is but if it requires a plugin I’d contact Monkeybread Software as they’ve done a lot of that type of work (at least tons more than us).

Thans for that Bob. I will try and investigate further with each major camera vendor to find out more details of their API’s and SDK’s. I’m pretty sure they are all multi platform but how they expose their functionality or have to be integrated into other apps is unknown to me at this time. How do declares function? Do they basically send a message to an external app or library and return the result? Something along the lines of call library x with function Y and return Z then you can put the result into a variable and carry on from there?

I would say that Xojo will be the easiest of the various languages for you to learn and use. There will be limitations, but you can hire those out. You’re going to run into the same problems with accessing the camera API’s regardless of which language you choose.

Which camera manufacturers do you need to support? I know that the MonkeyBread plugins offer a connector for Canon and Nikon cameras, though I’ve never used them. I’m sure @Christian Schmitz can chime in here with more detail.

I’m looking at high end digital cinema camera raw video formats here like Arri Raw for the Alexa and Amira cameras, R3D for RED cameras and Sony RAW from the F5/F55/F65, so nothing that I have found any existing plugins for (which is unsurprising really).

I know those cameras can generate a LOT of data. 33 of them can generate half a Petabyte (500 Terabytes) of data in a single days use (not 24 hours but a normal shooting day). As a storage person, that makes me pucker. that is a LOT of data that has to be stored somewhere.

FileMaker apps cannot currently be sold on the App Store and FileMaker don’t care.

Quentin, One aspect of joining the Xojo club not mentioned is the terrific support you will get from the members of this forum.
Answers are usually non-judgemental and unambiguous. In my experience with this community I have found;
There are no ‘dumb questions’, so don’t be like me and start with “I know this sounds dumb but…”
If people don’t know the answer they won’t usually reply. This is good philosophy against misleading red-herrings.

If you are time poor like some of us, then this community can fast-track your to solutions and hasten your grasp on programming this style of language.

One thing not mentioned: OOP.

Object-oriented programming is nothing like writing Filemaker scripts.

If you haven’t done any OOP then this will be a major learning curve, however the concepts are applicable to other languages as well.

Xojo is free to try and learn, so simply download it and work your way through the relevant parts of the free documentation and the examples inside the Xojo folder.

Good point Markus, a zero risk strategy.

Thanks for all the replies guys, sorry I dropped off the radar for a while - kids half term and no time for anything!

Markus & Chris, I appreciate that it’s free to learn and it’s also the same for one of the other competing development environments I’m looking at. The trouble I have is lack of time to invest in that process which is why I am asking here before spending too much time going down a dead end. It’s a fantastic option to have for others who aren’t so time poor though!

Learning OOP is a bit of a hurdle but so far it Xojo seems much more logical to my mind than the Livecode way of working (which I am also looking into as an alternative…)

Scott, you are right, a key part of my job is managing and backing up that data.The most I have ever had come from one camera on a single shooting day is just under 2TB. Luckily we don’t shoot with 33 cameras very often but I have worked with 14 on occasion… Luckily they weren’t all rolling too often though! Part of what I’d consider adding down the line to this tool would be checksum verified copying to multiple destinations. It would need to be fast enough to match existing long standing products to be worth adding though so I imagine C++ programming to get to the guts of things might be required for that…

I have been looking into the SDK’s. All are multi platform. The RED one is designed for C++ or objectievC (for Mac only) based development environments - Xcode, Visual Studio, GCC&GlibC, for mac it also requires linking in CoreServices and the IOkit framework plus using the GNU C++ Standard Library intend of the default LLVM one. All in all a lot of requirements which make me think a proper plugin will be required rather than being able to use declares but I need to look further into how declares are used unless some kind should can give me a brief summary… Perhaps I will try and contact Monkeybread software directly…

Note that a plugin is just declares wrapped in glue code that makes it “look” like a native Xojo class. A plugin is more convenient to use in your Xojo code, but they’re the same under the hood.

FFmpeg can extract metadata from an array of different media file types.

e.g. to write a video file’s metadata to a text file:
ffmpeg -i -f ffmetadata

The format of the file output is explained here.