As some may already be familiar with, I'm re-styling my website. I plan to include a user system where I can add photos, tweak portfolios, water-marks and what not. And eventually branch out to user registration so clients can book sessions over the web. Then I wondered, could I make the user backend computer based? So, primarily myself, can log in from my computer and upload photos.

I'd be able to add features to watch folders for new photos, and basically alleviate server load. My initial goal for the online script was to take an uploaded photo (of any-size) and resize it, watermark it and move it to a directory where it'll be found by the portfolio script. Then I read that some servers (I believe here in a post by Ben) restrict the amount of RAM a script can use and that an 8MP (give or take a 2MP's) picture took 32MB's to process.

The Desktop App would be able to save the locations of multiple photos (kind of like upload boxes) and resize them, watermark them and place them in their respective directories all in one fell swoop. Opposed to the web, where I'd need to upload the photos (whether from FTP or through the script) then resize, watermark and relocate them. It's really no different, but the web process seems much slower and cumbersome.

My primary camera right now is 15MP's. I could output smaller photos (4MP's) to the server and have the script do it's thing but why not cover two bases: Export the full-sized JPEG's and let a computer application resize the photos and upload the photos to their appropriate destination and back up the full sized JPEG's to a folder on the server so I can fetch them at any time if I need to resize the images or re-watermark them if I no longer have the originals or I'm away from the drive that stores them.

To do this, I'd need to learn Objective-C (C++?) for OS X. I'd prefer to use a library that supports Windows & Mac - for when or if - I release a version with client support. A version for clients to log in, browse their sessions (past & scheduled), create & edit/cancel sessions and view all uploaded photos from previous sessions where they can order prints.

Of course, the client support (Web or Computer) is a long ways down even after I make the user/login system. So Windows support isn't a main concern at the moment, but something to factor in. I've searched for Desktop based apps for Joomla! & Drupal and both are nonexistent. I'm not opposed to an entirely online UI, I think it'd be convenient to have a desktop application. I'd also like to create a mobile application but that's even more iffy than the desktop application.

Whether I choose a Web & Computer User Backend, it'll be a huge undertaking for me. I have no idea what's involved to implement what I want in both environments. This will not make it into the February update of my website, but likely an incremental update if not a future version. Obviously, regardless of which option I choose I'll need to use a web database (MySQL) to store client information.

As an inexperienced developer, what seems logical? The Web UI or a desktop UI? I won't need to cross develop on the web, but I feel like I'd have more creative freedom (and memory) on the computer.
GCC is available for OS X and should be installed by default.
I do have locations for GCC, one in /usr/bin/ which is usr/bin/gcc and the other is /usr/include/gcc/darwin/default.

The file in /user/bin/ isn't a folder like it is in /usr/include/ (as I tried to illustrate without the trailing directory slash). It is however an Alias to a folder: /usr/llvm-gcc-4.2/bin/. I also have a g++ file in the same /usr/bin/ as the GCC alias. The alias in /usr/include/gcc/darwin isn't a folder either and doesn't have an original as when I click to view the original, nothing happens like with the other alias.

I'll dust off Xcode next week and find some tutorials to see if GCC properly works.

Is GCC capable of FTP and specific things for connecting to and editing things on a remote server, such as MySQL?
This is something that should be very easy to knock together in a .NET language such as C# (you've got the FileSystemWatcher to watch for directory changes, the System.Drawing namespace for image manipulation and the WebClient to upload files); at least, when I've needed to do bulk operations like what you mentioned I've been able to knock together a C# app to do it for me quite quickly.

You do, however, need to differentiate between a language, compiler and libraries. Some languages (e.g. BASIC and PHP) will build all of their functionality into the language, though most general-purpose ones (e.g. C++, C#, Java, VB.NET) only provide the bare minimum of functionality and stuff like user interfaces, Internet access and image manipulation is handled by libraries. So, yes, GCC will let you write a program in C++ that can do what you need but you will need to identify which libraries you'd like to use to perform that task. I mentioned C#/.NET as its standard class library should cover everything you need, as should Java. The C++ standard library is less comprehensive so you would need to shop around for appropriate cross-platform libraries to write your program against (e.g. libcurl for the file transfer bit).

Edit: I would suggest that if you want this to be a fairly generic piece of software then do not access the server's file system or database directly - instead, interact with a web service written in PHP or similar which can provide a single point of entry to the site.
Hire someone to do it.
allynfolksjr wrote:
Hire someone to do it.

I'd rather not. If I need more features I'll need to hire them again and getting into programming would be fun - bonus!

Ben, .NET sounds great for this. Is that available for OS X? If it is, perhaps I may go with that and use some OS X specic libraries as well. OS X has Camera RAW support built in, this way I could watch a directory and upload resized JPEG's of the RAW's to my Dynamic Galleries.

The difference between .NET & C++ is that .NET has those libraries built-in where as I need to "include" them in C++? Correct?

I like the Web Service idea, and was another option I was considering in the background. I figured if I made the web UI all I'd need to is connect to it via a desktop app and do stuff. But this sounds a bit different. Where as requests are sent to a single page that then runs some server side scripts. Could I tie the Web UI into that as well?

On top of the functionality another thing I love in programs is a great UI. While the basic UI provided by the OS works, a lot of what makes an application unique is it's style. I'm fairly sure the answer is yes, but does .NET provide an easy to customize GUI?
".NET" is Microsoft's brand name for a software framework that includes a virtual machine, an extensive class library and support for a large number of different programming languages (commonly including C#, VB.NET, F# and C++/CLI). If you're familiar with the way Java works it's something like that. As most of it is based on open standards third-party non-Microsoft implementations have sprung up, e.g. Mono which will cover you for Mac OS X. Unfortunately the best development experience is still on Windows (thanks to Visual Studio) so I'm not entirely sure how much fun it would be to develop directly on Mac OS X, though MonoDevelop doesn't look too bad.

You can wrap up native APIs for use in .NET code but if you are going to be relying on them a lot it is probably better to just write the whole application in a native programming language (for Mac OS X this would be Objective-C).

User interfaces are typically done on Windows with System.Windows.Forms (which is supported by Mono but has a very Windows-based design) or WPF (which is not supported by Mono). You can create cross-platform GUIs with GtkSharp or Mac OS X-specific GUIs with MonoMac.

With regard to the web service there's no reason you couldn't just connect directly to the standard web UI. A more formal web service would just return data in a format that is machine-readable (e.g. a JSON response) rather than human-readable (e.g. a formatted HTML page).
Register to Join the Conversation
Have your own thoughts to add to this or any other topic? Want to ask a question, offer a suggestion, share your own programs and projects, upload a file to the file archives, get help with calculator and computer programming, or simply chat with like-minded coders and tech and calculator enthusiasts via the site-wide AJAX SAX widget? Registration for a free Cemetech account only takes a minute.

» Go to Registration page
Page 1 of 1
» All times are UTC - 5 Hours
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum