Objective-C in the Cloud
objective-cloud.com
objective-cloud.com
* How does Objective-Cloud handle circular references (will memory leaks be a problem?)
* Is there a way to cut down on boilerplate (having to declare member variables, accessors, synthesize them, and understand the differences between var = _var, self.var, static class vars, etc?)
* Any plans to port to other platforms (Android) and if so, will it still use objective-c?
* How do you sandbox binary code (will security be a problem?)
* Will you allow third party binaries/libraries to be uploaded with the code (or will everything be open source/code only?)
To be fair, I believe that this style of development may be the future. Perhaps we need a wrapper around pure C because it doesn't do enough to promote inter-module communication, and C++ dropped the ball on that.
I'm just concerned because objective-c is ideologically different from, say, Boost, D, or Go. It focusses more on patterns than abstractions and simplicity over correctness. I've found it nearly impossible to build an app in obj-c above a certain size that's guaranteed to run indefinitely, stably and without leaks. And I've found that large obj-c projects often lead to spaghetti code and repetition, because of a lack of understanding about things like delegates, inheritance, using notifications instead of nesting code, etc. Some aspects of obj-c are quite brilliant (like queuing tasks on the main run loop) but others like manual memory management are antiquated.
But kudos for this effort. I'm curious how this plays out.
It would really be nice to reuse some of that iOS code...
Interestingly, this is not the first time ObjC has been used for web stuff, WebObjects/EOF was originally an ObjC web framework but was later ported to Java.
The most interesting thing about this to me is that it makes the Apple frameworks (especially the multimedia ones --- CoreImage, CoreAudio, etc) available to cloud services.
I wonder about using RubyMotion or Mono with a service like this. It might address some of your concerns about the language.
Yes. Objective-C no longer requires most of this.
* I think ARC helps with most of the problems, of course you'll have to understand where to use weak or strong etc.
* You don't have to write @synthezize anymore, literals remove a lot of boilerplate too: http://clang.llvm.org/docs/ObjectiveCLiterals.html
* As far as I know the protocol between server and client is just HTTP + JSON
* They use the BSD sandboxing facility https://developer.apple.com/library/mac/documentation/Darwin...
When I flub a strong/weak reference on a phone, my app crashes. The user is mildly inconvenienced as they launch the app again.
When I flub a strong/weak reference on a server, my app crashes. That server is now down and my ops guy (probably me) will have some unkind words for me, particularly if it's in the middle of the night.
It's tempting to say at this point "well, don't flub references, n00b", which is much easier said than done. Bear in mind that we did use to write webapps in C - we moved to higher-level, more resilient languages for a reason.
I don't mind Obj-C/Cocoa. I'm a graphics guy at heart, so the closer-to-the-metal implementation makes me happy and lets me spin all kinds of neato magic with custom UIs... none of this is necessary serving data off a server.
All of this reminds me a little of the whole "let's do EVERYTHING in JS!" trend - while technically impressive I simply don't see the point of hammering a square peg into a round hole when there's a round peg nearby you can use.
Re: Obj-C and UI. Obj-C makes it really easy to write highly performant UIs because it's reasonably close to C. You can hit up OpenGL and other extremely fast drawing libs in a really performant way, without invoking any cumbersome hooks or wrappers (see: writing and interfacing native code in .NET). Writing insanely fast and visually complex UIs in Obj-C is a breeze. Its proximity to C is a strength in client-side dev, but it's a liability on the server.
There are bindings for ZeroMQ http://zeromq.org/bindings:objc which is all you really need to deal with stability issues.
Also as a side effect of practically being an apple hardware only environment and it being a compiled language, you don't have the option to create a 2 or 4 socket CPU beast to compile programs with.
That would limit the complexity in comparison to the way that a monolithic IOS app is built.
I tried using Obj-C on Linux as a "better C", much like people use C++, D, Rust...
The language is... acceptable. The ecosystem is just, mac, mac, mac.
I'm already sold on your service. I can't wait to get started and I'm really looking forward to the iOS and Mac SDKs.
It was then later on ported to 100% Java.
WebObjects 4.5 was the latest ObjC version and was cross platform even at the time: NeXT, Windows, Solaris and HP-UX.
Edited for style.
If Apportable delivers on its promises you could theoretically never leave Objective-C land.