99 karma · joined July 12, 2008
To your second point, even apps that stick to using only documented API methods have known to fail after iPhone OS upgrades. So, let's not delude ourselves (or the users) into thinking we're writing robust (or worse, future proof) software simply by adhering to Apple's guidelines. All I would ask from Apple is that they get out of my way of getting an update to my users as quickly as I can.
Who cares whether a method was overridden or called or whatever -- if it's in the runtime it can be invoked.
Will you be covering integrating with any graphics libraries (say OpenGL or similar)?
To borrow a quote from the movie Highlander - "There can be only one (file)!"
I am slowly adding Clojure to this mix.
The most dissonant cognitive shift is going from Lisp to Objective C.
"Kudos to Pierre Chatelier for writing the book that Apple and Alan Kay could not."
What does Alan Kay have to do with Objective C? He invented Smalltalk not Objective-C. Perhaps the author meant Brad Cox (http://en.wikipedia.org/wiki/Brad_Cox).1. Concurrency done right -- take a look at Erlang or Clojure to get an idea of multi-threaded programming without the nightmare of locks and deadlocks. This feature will become increasingly important as CPUs are scaled by integrating more and more cores.
2. Testability -- immutable variable bindings and carefully sequestered state changes means your code is vastly better suited for testability.
3. Distributed Computing -- this maybe a controversial claim, but in my experience building distributed systems in Java, Common Lisp and finally Erlang (on separate projects of course), Erlang stood out as the most robust and understandable distributed model of all.
In so far as 3rd party libraries go, a lot of newer FP languages are built on top of existing VM platforms (e.g, Clojure on JVM, F# on .NET), and are able to leverage all their available libraries. Bear in mind, that while these libraries may help build your application slightly more quickly, you end up sacrificing the benefits of FP by integrating their non-FP code.
Check out http://www.defmacro.org/ramblings/fp.html for a much better overview of FP (don't miss the "Benefits" section about a third of the way in).
On any given node there were between 1,000 and 3,000 processes (threads) handling requests and internal jobs. I had supervisor trees for ensuring that everything kept running. All that worked like a charm.
Most of the issues I ran into were with getting the host infrastructure (Linux in my case) configured correctly. Things like number of available socket handles etc. Erlang dies unceremoniously when it runs out of system resources.
Mnesia is really nice. My database isn't very big (~500K objects), but still needed to be redundant and highly available. Setting all that was a breeze compared to most SQL dbs.
Yaws is nice, in that it's a full featured web server, but I'd probably also look at Mochiweb (http://bob.pythonmac.org/archives/2007/11/07/mochiweb-anothe...).
Given that you have a requirement for "massive parallelism" -- high concurrency, Erlang is a very good option. I also believe Scala (http://debasishg.blogspot.com/2006/11/threadless-concurrency...) and Clojure (http://clojure.org/concurrent_programming) offer reasonable alternate approaches.
Good luck.
VenueM is a general purpose solution for turning any RSS feed into a clean looking iPhone web site.
I can empathize with your experience trying to network in SoCal. Hopefully, your post encourages more local entrepreneurs to join the effort.
Peace.