
Objective-C in The Cloud - bonaldi
http://objective-cloud.com/
======
scraplab
We've just spent a few months writing a component of our stack that uses
Objective-C/Cocoa, because it's the only environment that supports a very
specific API that isn't available on any other platform to same the level of
quality.

We used an HTTP server[1] around it, exposing an RPC style interface. Our app
exports metrics with a StatsD client[2] we wrote.

[1]: <https://github.com/mattstevens/RoutingHTTPServer>

[2]: <https://github.com/newspaperclub/statsd-cocoa>

The good news is, it's just what hoped it would be. The app performs
incredibly well, and having access to the APIs like GCD and so on is great.
The downside is that it's a pain putting the application into production.
Being forced to use Mac hardware is incredibly annoying. (We knew this would
be the trade off.)

All our dedicated Mac Minis came with 10.7 on them from the hosting company.
Upgrading to 10.8 required someone to be present, or attached to the KVM just
press next on an iCloud wizard before it boots back in, and I'm always worried
that a point release might do something odd.

VMWare ESXi 5.1 supports running OS X 10.8 on top of Mac hardware (legally),
so we're leaning towards using that to make the managing the machines slightly
easier - being able to snapshot and rollback if an upgrade does something odd
or drop into the console if we lose remote access.

~~~
js2
Have you looked into setting up NetBoot/NetInstall?

~~~
scraplab
No, but that's a good idea.

~~~
awakeasleep
It's essential and could really improve your lifestyle!

Peachpit press has some books to get you started, and you could look into
<http://www.deploystudio.com/Home.html>

~~~
scraplab
Thanks!

~~~
pudquick
If you need any more assistance come find us in ##osx-server on the Freenode
IRC network :) We live and breath DeployStudio, NetBoot, etc.

    
    
      -- frogor@Freenode
    

<http://webchat.freenode.net/?channels=%23%23osx-server>

------
tsunamifury
I am a product manager that oversees a good amount of ObjC code. I oversee
many other code-bases and dont know all the details, ins-and-outs, and quirks
of each -- just the high level architecture.

I say this because your landing page makes it very difficult for anyone but a
semi-expert to understand the benefits of this. I'd advise you that your
target buyer may not be as intelligent as you -- dumb it down for them.

The long opening paragraph has a lot of nuggets in it. I'd recommend you boil
it down to this:

\- We help you scale your (distribution/development) \- We save you from
(cost/failure) \- You'll gain (efficiency/ease of mind)

~~~
LinaLauneBaer
Thanks. We will think about simplyfying the first few sentences.

------
protomyth
Stuff like this makes me wish Apple would bring back the Objective-C version
of WebObjects or at least release it as open source so it could be brought
into the current era.

I do miss EOF.

~~~
Moto7451
You could try <http://wiki.gnustep.org/index.php/GNUstepWeb>

~~~
mmariani
Luke! Read the source!

Avoid GNUstepWeb unless you want to feel some pain. Instead you should take a
look at WebAppKit[1] as it looks more promising.

[1] <https://github.com/tomasf/WebAppKit>

------
OldSchool
Great idea! Nice job bringing it to the world. I hope you find great success
with the business side.

The biggest problem selling to developers is going to be developers telling
you how they would make it better. My advice is listen, but prioritize by
following your instincts and the paying customers!

------
PommeDeTerre
It's not very reassuring to check the FAQ, and to see important questions
like, "Is it possible to prevent unauthorised people/clients from using my
services?" being answered with a very vague answer like "Yes."

I hope to see more complete and detailed answers for common questions like
those.

~~~
LinaLauneBaer
Founder here: Thank you for pointing this out. We will improve the FAQ
shortly.

~~~
terhechte
Fantastic idea, I'm an Objc developer from Hamburg, so seeing that you guys
are from Lübeck makes me smile! Good luck! (I've also registered for
notifications as I can see some usage scenarios for this already :) cheers

~~~
LinaLauneBaer
He. I am thinking about founding CocoaHeads here in the area... Do you know if
CocoaHeads Hamburg is still active?

------
tszming
Have you considered making a version without the Apple's frameworks
integrated, i.e. the core Obj-C runtime, so you can run on Linux (then you can
scale more efficiently on EC2 like Heroku).

I think there is a demand for people who need close to C performance without
the need of messing with pointer explicitly and with sane OOP support as
default. Your user base is large due to the number of existing iOS developers,
and able to interop with C libraries is also an advantage.

~~~
bitwize
I do this for a game library I'm writing.

The problem is, if Python is a language with batteries included, then on non-
Apple platforms Objective-C only comes in kit form -- with certain critical
components you have to supply yourself. To wit: due to changes made in the
Objective-C runtime made by Apple and backported to the GNU runtime (which,
mirabile dictu, is now MUCH more API-compatible with Apple's stuff), the
Object class is now only the barest skeleton of a thing, and no longer has
+alloc, -init and -free methods in its own right. To get _even constructors
and destructors_ without the Cocoa framework, you will have to implement them
yourself. Not that hard to do, actually; there are API calls for that. But the
average developer is going to wonder what sort of bush league he's operating
in where the language runtime doesn't even provide constructors and
destructors.

As a rule if you are going to use Objective-C, you are committed to Apple.

~~~
comex
Well, sort of. GNUstep provides a free implementation of (enough of) Cocoa.

~~~
nglevin
GNUstep-base is pretty solid if you're looking for an open source Foundation
(constructors, destructors, container classes, networking, etc.) that's
compatible with Apple's implementation.

If all you're looking for is constructors and destructors, consider ObjFW.
<https://github.com/Midar/objfw/>

ObjFW is much more lightweight, although it does have its own set of
conventions. Fortunately, +alloc, -init, +new and -dealloc are all present and
accounted for.

------
programminggeek
You know, it seems like you could use MacRuby to write the web bits and
possibly also to talk to the Obj-c libs you would need. Then you get the
already made nice Ruby things like Sinatra for writing your HTTP services, and
still use Obj-c for specific libs or things you would need to use.

------
onebot
FWIW - Glancing at your website, I am not immediately sure what it means to
Push Objective-C to the cloud? More specifically, what is the pain point you
are solving for me?

------
filleokus
Something similar I've been using: <http://webappkit.org> "WebAppKit is a BSD-
licensed framework for creating web applications using Cocoa and Objective-C,
running on Mac OS X."

Quite neat to use Obj-C and all the great frameworks on the web as well.

The big problem with using Objective-C for stuff like this is that you almost
have to host it on Apple Hardware, which is quite expensive and hard to do by
your self in a cloud-like fashion. With the Objective-C in the cloud service
you move the hosting to them of course, but it is still a problem lurking when
(and if) they are going to scale it really big.

~~~
ekurutepe
Well, technically it doesn't have to be Apple hardware. They could be running
hackintoshes, which would obviously be against the EULA of OSX. Another
possibility is virtualization. Somebody correct me if I'm wrong but I think
the OSX Server EULA allows virtualization since 10.7. So setup any linux
server off the shelf and virtualize OSX Server instances on it and you have
your cloud building blocks.

~~~
jws
The _Apple Software License Agreement for OS X Mountain Lion_ [1] is not your
friend here.

 _…you are granted a limited, non-transferable, non-exclusive license:… (iii)
to install, use and run up to two (2) additional copies or instances of the
Apple Software within virtual operating system environments on each Mac
Computer you own or control that is already running the Apple Software, for
purposes of: (a) software development; (b) testing during software
development; (c) using OS X Server; or (d) personal, non-commercial use._

So development, testing, running OS X Server, and non-commercial are the legal
uses.

The Mac OS Server license is more restrictive, a single copy on Apple branded
hardware.

EOM

[1] <http://images.apple.com/legal/sla/docs/OSX108.pdf>

------
jevinskie
How are these sandboxed to prevent local privilege escalation exploits?

------
mistercow
This would be amazing for code reuse when integrating with a Cocoa app front-
end, much as using node.js can let you reuse JS code between server and
client.

------
DeepDuh
I like the idea a lot actually. Using Apple's frameworks for web apps could
indeed be useful. I just wonder to what user numbers such a service would
scale, given Apple's limited hardware offerings. Didn't Apple promote using
VMware boxes on commodity hardware for some while? Is this possible now with
OSX Server licences?

------
zerop
Newbie Here: Why would I like to develop my app in objective-C?. Why not
python, java etc?

~~~
nglevin
There's less of a performance hit at runtime than using a scripting language
like Ruby/Python/Lua/Perl/PHP, since the generated code uses a fair amount of
compiled C.

You can use Smalltalk-style messaging that C++ and C alone wouldn't give you.
So you can query objects for methods, variables, and other things that they
may or may not have without causing your entire app to crash.

You wouldn't have to wait at runtime for a VM to startup, since Objective-C
has no VM. :)

Just a few things.

------
lucian1900
How is this hosted? Linux + GNUStep? Afaik Apple discontinued their XServe
thing.

~~~
LinaLauneBaer
Founder here: In the beginning we are hosting on dedicated Mac minis because
they are energy efficient. Lets hope that Apple releases Mac Pros soon...

~~~
bobowzki
Yeah you're really quite tied into apple hardware here... I wonder if it would
be possible to run mac os x server instances on VMs? Good luck anyway... I
often wanted to use cocoa server side since it's such a great platform and
xcode's pretty great too.

~~~
atlbeer
I believe Apple's licensing only allows OSX to be virtualized using OSX as the
host system.

So you still have a hardware roadblock.

~~~
jws
Maybe a hardware speed bump.

I generally find the hardware cost is not dominant with respect to bandwidth
and physical placement costs. So even if you pay almost twice as much per
compute cycle[1] it is still buried in the other deployment costs.

The bit that keeps me from using Mac Minis (and I have a huge software reason
to do it) on my server end is that I don't trust that I can manage them
remotely. If I can't get to a console and reboot with remote media I'm not
willing to commit to it in production. If you are big enough to have 24x7
staff colocated with your hardware then things are a little different. Then
they'll just cuss at you for making them drive a little cart with a monitor
and keyboard around the place.

EOM

[1] It isn't that high for one unit, compared to reasonable quality commodity
gear, but when you look to comparing, say 16 Core i5 processors of power there
are some nice commodity solutions that are much cheaper than 16 minis.

~~~
mikeash
There must be remote management systems that will capture DVI output and
provide mouse/keyboard commands over USB. Modern Macs all do netboot so that
takes care of the remote media. Probably isn't cheap, though.

------
bonaldi
I wonder if there's any clever trickery can be done here to let web services
get access to iCloud APIs. (I suspect not, due to the authentication nightmare
that would be involved)

Apple's apps are at a real unfair advantage, here.

~~~
LinaLauneBaer
Founder here: May I ask what you are trying to do exactly? To me it is not
clear what exactly this might be...

~~~
bonaldi
Say I wanted to replicate Apple's Notes app: I can write iPad, iPhone and Mac
apps that all share the same storage (and update in the background without the
app running). But there's no way for me to create an equivalent of icloud.com
that lets users edit their notes on the web.

~~~
LinaLauneBaer
You will be able to do that with Objective Cloud. We will have a distributed
storage service that you can use. You will be using Core Data like you are
used to.

~~~
scrumper
Aha! Now you have me. Good luck with this, I think it's a tremendously
exciting service.

------
frankus
One possible improvement (and maybe it's not feasible—you've obviously spent a
lot more time thinking about this than I have) would be to accept any object
that implements NSCoding, rather than strictly NSDictionary objects.

Depending on how you're isolating instances I could see how that might open up
a huge can of worms from a security perspective.

------
aespinoza
It is really cool to see services like this. Specially since we are actually
working on the sibling of this, but instead of using Objective-C we use C#
(<http://iknode.com>).

I can think of a couple of ways we could work together. Are the founders on HN
? Drop me a line.

------
mpweiher
While the dictionary to http mapping is a nice touch, will it be possible to
deploy our own http servers?

While CocoaHTTP isn't bad, I've got my own lib that is not only around 3 times
faster (request/response), but also has other benefits I'd like to keep.

------
zeitg3ist
The bandwidth pricing is way off. With the 99$/month plan, you only have 35 GB
of traffic included, and each subsequent GB costs _three dollars_! Madness.

~~~
LinaLauneBaer
We are thinking about the pricing constantly. The problem ist that we cannot
predict how people might use their access to Objective Cloud. These prices are
very conservatively and might go down quickly.

------
malkia
Just of pure curiosity - Apart from OSX, would that work under gnustep or
cocotron?

------
aggarwalachal
Ahh.. a mac mini server farm.

~~~
aggarwalachal
good stuff. would be cool to use objc for web apps

------
LuckyMax
Great idea! I hope you will manage to do it. I would use it with pleasure.

------
ekurutepe
This is amazing! Where do we apply for beta tester accounts? :)

------
craigyk
wow, not one comment dissing Obj-C? my head just blew up.

------
gdonelli
My support and respect

