4 ms·
An interview with 280 North on Objective-J and Cappuccino
- yan 18y ago280North guys did what I always thought would be an awesome and useful undertaking and implemented it better than I thought could be done. I am talking about ObjectiveJ/Cappuccino specifically, but 280Slides is a whole different story. Everything runs snappy and I don't remember last time I was so impressed with so few people's worth of work. I can see a lot more being done in this direction, but I am just in awe in how well this was done so far in the time they had.
- smanek 18y agoDoes anyone know where I can read more technical details about Objective-J or Cappuccino? This sounds pretty impressive so far ..
- deleted 18y ago[deleted]
- andreyf 18y agoWhy did you chose to do Objective-J -> JS processing in the browers? For sake of speed, wouldn't it be a good idea to do it server-side and then just serve the JS?
- boucher 18y agoActually, we use both methods. You can preprocess the code ahead of time if you want, and serve content that way. We do this for our core frameworks (AppKit and Foundation). Most of our application code is not preprocessed though. One of the benefits of being able to run without having to "compile" (which is essentially what having to preprocess ahead of time is) is that you have a much more dynamic development environment. You can change code, hit refresh, and see your changes immediately reflected, instead of compiling and waiting.
- deleted 18y ago[deleted]
- tlrobinson 18y agoThe main advantage of doing it in the browser is for the developer: you don't need the explicit compile step: just write code, save it, refresh the browser. It also enables neat things like a REPL. That said, the nice thing about writing the preprocessor in JavaScript was we can do preprocessing ahead of time on the server, if we need to. However, doing it client-side is not as slow as you would expect. edit: Ross beat me to it, but we said basically the same thing
- maximilian 18y agoIt also seems that you can easily have a "testing mode" where you run the preprocessing client side when you are just building the app, and then when you deploy like "for real", run the preprocessing server side to keep things fast(er). If the site gets too hammered, then you could even have it switch, where an overloaded server tells clients to preprocess for themselves while the server catches up. This would be an interesting way to handle spikes in usage (like now for example)
- tlrobinson 18y agoPresumably the code doesn't change very often, so we actually just preprocess it once per revision and serve up the static files, so there's no extra load on the server or the client.
- andr 18y agoDoes it work on the iPhone?
- boucher 18y agoShort answer: yes. Long answer: There's still some work to do.
- nickb 18y agoGuys, great job! I have a question about timelines... how long was Obj-J in development and how long did it take you to develop 280slides? I remember reading that you started in 2005...
- deleted 18y ago[deleted]
- tlrobinson 18y agoThanks. Yes, Obj-J/Cappuccino was started while we were in college in 2005, but was put on hold for awhile when we had other jobs. 280 Slides was written in about 5 months, concurrently with some work on Cappuccino.
- yan 18y agoDid you guys implement proper message passing and proxying, or are they ad-hoc method calls?
- tlrobinson 18y agoWe do indeed do dynamic dispatch, just like Objective-C.