Learning Cappuccino - cappuccino

What is the best source to learn Cappuccino? I do "traditional" web development, but i'm very interested in this new framework. Please note that I have no knowledge of Objective-C.

As mentioned above, the website is a good place, but there are also some other good resources:
http://cappuccinocasts.com/ (screencasts)
http://www.nice-panorama.com/Programmation/cappuccino/
http://www.littletreesoftware.com/blog/
http://theocacao.com/document.page/593
There are a few others too, and many of them are linked to from the site.

I wrote a real life cappuccino tutorial based on an actual customer project: http://www.springenwerk.com/2009/09/real-life-cappuccino-tutorial-part-1.html

On the tutorials is says:
A great introduction to Objective-J. Familiarity with JavaScript is recommended, prior knowledge of Objective-C not required.
http://cappuccino.org/learn/tutorials/
It seems the website is a good place to learn. Interesting framework.

You also have http://www.cappuccino-project.org/learn/
It is our new work-in-progress website. Not complete at all, it still has some very basic tutorials to help you starting coding with Cappuccino

I recently took up learning cappuccino. I found the Cappuccino Casts and the tutorials on cappuccino.org, however, like you, I come from a web development background - not cocoa / desktop apps.
Following some online tutorials was good to a degree, but I felt I lacked fundamental knowledge about the Objective-C and Cocoa and Cappuccino is modelled so closely to it. I bough a copy of Aaron Hillegass' book called "Cocoa(R) Programming for Mac(R) OS X" here: http://www.amazon.com/Cocoa-Programming-Mac-OS-3rd/dp/0321503619/ref=pd_sim_b_3 which I felt really helped with my base understand of application development rather than traditional web development.
I would definitely recommend giving it a read, I worked my way through it in a few days and thought it gave enough knowledge to understand what all the Cappuccino stuf was about.

I recently found that when I install Cappuccino from source, there is a fairly significant amount of code to learn from hidden away in <install-dir>/Cappucino/Tests/Manual
There is a wealth of code there that isn't advertised anywhere but is certainly good enough to learn from. Just drop the Frameworks next to the index.html file in each test folder and open up and learn!

Related

Resources for Learning Objective-J and Cappuccino?

I have noticed, for some odd reason there is absolutely no books out on the Cappuccino Web Framework, and Objective-J.
I would really like to learn these, but I cant find any resources other than the poorly set up (confluence-like) wiki/reference on the webpage.
Is there any other resources on Objective-J and Cappuccino? Preferably PDF?
I had exactly the same problems a while ago.
There is very few comprehensive tutorials on Cappuccino. Only some articles are available.
I would recommend to learn Cocoa first (especially AppKit and Foundations). Since Cappuccino is a port of Cocoa, you will find that your transition to Cappuccino and Objective-J would be smooth and easy.
Also some very good tutorials are mentioned here. Especially, I like this one:
http://www.nice-panorama.com/Programmation/cappuccino/

What are some methodologies that a solo developer should use while creating cocoa programs?

I have recently started learning cocoa development with a fairly large scale(probably Core Data based) application in mind as my goal. I have been looking into development methodologies that would be used to help build a higher quality product with better code and although I have found a couple that I am sure I would like to use, such as version control(probably with git) there are some others like unit testing that seem like they would be hard to use when the majority of the application is written with IB and Core Data. I would really appreciate some suggestions as to what tools or workflow methods a solo developer should be using.
Thanks.
P.S. First post in SO!
EDIT: By the way I primarily plan to develop for OS X and not the iPhone.
welcome to SO :-)
One thing I struggle with as a solo dev is discipline...!
Always comment, test, design ahead if you want to increase the quality of your code, reduce the amount of times you re-write something until your interfaces/class structure actually works, and have code that you can come back to in a years time and know what you mean!
Apple have a great guide for Unit Testing
As of iOS 4, Apple have added a UIAutomation framework for testing the User Interface of apps.
O'Reilly has a guide here, and you may want to have a peak at Apple's official documentation for UIAutomation
Its fairly new, but it won't hurt to take a look at it.
There has also been a query on SO about automated testing of iPhone apps.
Our own Chris Hanson did a series of posts about Cocoa and Unit Testing. It isn't as difficult as you think.
use git, it makes it really easy to go back to prior versions
comment your code, as others mentioned you'll need to look at it years later and understand it
get in the habit of building yourself reusable classes. Many tasks you perform when developing will need to be duplicated in other projects
expect that no matter how diligent your try to be, your users will have problems. As such you have to develop a methodology of allowing your customers to report their errors to you that is useful. I recently implemented this for myself. It's basically a way to get meaningful stack traces back from users through email. I learned this here.

What's the best resource to learn how to write apps for Mac OS X?

I'd like to learn how to write application for Mac OS X.
Like how to use XCode properly, Cocoa syntaxes and examples, etc.
I'm already a web developer using ruby, php, mysql, rails, etc.
I looked through google quite some times but never found something palpable to learn from.
But I really want to make my own application, for fun and maybe business later.
Thanks a whole bunch for your tips!
Aaron Hillegass's book "Cocoa Programming for Mac OS X" is certainly up there. It would also be well worth your time to learn the C language well.
To jump right in as quickly as possible, I'd recommend going through the following Cocoa Dev Central tutorials:
http://cocoadevcentral.com/articles/000081.php (C)
http://cocoadevcentral.com/d/learn_objectivec/ (Obj-C)
http://cocoadevcentral.com/d/learn_cocoa/ (Cocoa part 1)
http://cocoadevcentral.com/d/learn_cocoa_two/ (Cocoa part 2)
http://cocoadevcentral.com/articles/000082.php (Style part 1)
http://cocoadevcentral.com/articles/000083.php (Style part 2)
Once you've read those, you should be able to do quite a bit on your own, just using the documentation in Xcode (option-double-click on a class name in Xcode) and Apple's developer site.
You should start by learning Objective-C. Programming in Objective-C is an excellencent introduction to the language
If you're looking for a free resource this is an excellent web-site
Only after you have a solid understanding of the language would I worry about the different frameworks available.
The first thing I would start with is Automator. In fact, it's what I did start with. Solve a couple of easy problems with it, like renaming iTunes songs or photo manipulation. In the process, you'll probably think of an action you want that's not included. You can write it yourself using AppleScript.
Now you've got the basics of two desktop programming systems for MacOS in about a day. It might seem silly to learn these two super-basic systems, but in the process you'll learn the flow of desktop development and get a couple of "quick wins" in before you move on to XCode. You'll begin to think of your Mac as more than just a web client.
If I were you, I'd check out RubyCocoa next. It's a language you're already familiar with, so you'll be able to score another couple of wins here, too.
When you're ready to take on Objective-C, Cocoa Is My Girlfriend is a great introductory resource.
I would start with the currency converter sample Apple provides.
This gives a nice introduction to Xcode and Interface Builder.
You could then try to implement the same basic application but with bindings.
As you seem to have experience in some interpreted languages, you may have troubles with the memory management in Objective-C at the beginning.
You can turn on Garbage Collection to make your life easier.
If you want to use your knowledge to create iPhone apps, you should learn the memory management concepts as there is no garbage collector available on the phone.
The podcasts on the Mac Developer Network also contain some good information.
I was in the same situation some time ago, struggling to learn mac dev, read a lot of books, and it was hard for me to retain all that information, but I stumbled across CocoaCast where you can find lots of video tutorials on Mac Development! And it's totally free to watch them, even to download them.
Stanford recently put out a course on iTunes U that teaches you how to program on the iPhone. Because the iPhone uses the same programming language as OSX, a lot of what they talk about can be transferred to Mac app development. Best of all, the course is free to download and watch, and has a bunch of sample material that goes along with it. Click the link below to open it in iTunes.
iPhone Application Programming
Check out Apple's Developer Documentation, which seems to be getting more and more attention over time, and has become quite good for beginners to start with.

Recommended reading on general debugging techinques

What reading would you recommend on general debugging techniques? I am more interested in principles and best practices than in specific platform solutions. For the record I mainly work with .NET (F#, C#), and dabble in Haskell and Ocaml.
One of these Friday evenings we talked about debugging with my colleague on our walk home. I was surprised to learn that one can view and modify the state of live objects from the VisualStudio debugger. He also mentioned that another developer he knew, a "Java guru," had once shown him some debugging magic and given an article or booklet on debugging, which challenged my colleague's initial "there's nothing to it" attitude. Having spent more time than I wished hunting bugs, I am ready to be challenged as well. Are there any links you would recommend?
I'd recommend reading everything you can find on Test-driven development (TDD). From the Wikipedia article:
Programmers using pure TDD on new
("greenfield") projects report they
only rarely feel the need to invoke a
debugger.
From a personal standpoint, it's been my experience that the more unit tests I write, the less time I spend in the debugger.
Specifically for .NET, here's a nice article on Easier Debugging with Attributes.
I highly recommend the excellent book Debugging by David Agans.
While not specifically about programming, the principles are universal. One of the techniques in here provided the biggest quantum leap in my diagnostic capabilities, namely, backing out your fix to prove that just your fix has corrected the problem.
I've studied a lot of debugging books and thoughts. Probably the best one is Debugging By Thinking. I think it covers everything that needs to be said, in a logical fashion, in an easy-to-read package.
It takes a native approach (win32) but Advanced Windows Debugging is a great book.
I like Ian Taylor's.
Tess Ferrandez's blog If broken it is, fix it you should is both directly relevant to specific real-life scenarios you're likely to encounter in .Net debugging, (typically involving ASP.Net), and more generally thought provoking.
John Robbins' debugging books and blog are similarly worth reading.
Mike Stall's .Net Debugging Blog likewise.
Mark Russinovich's blog is remarkable - his knowledge of Windows internals combined with great forensic skill is impressive.
My first introduction to debugging was this tutorial. It uses GDB to debug a sample C++ code, but the principles are generally applicable. The thing I really like is the way the author explains his train of thought about what might be wrong, and then the specific commands needed to test the possibilities. It's pretty fun! If you're new to debugging, it's a great insight into the process.

What real-world projects would you suggest as code examples to study?

What real-world projects would you suggest looking through the sources?
As I'm learning Java Swing, mucommander seems to be a decent example. The code is excessively commented though.
EDIT: No shameless plugs plz :).
I learned a lot from looking at the source code to GoGrinder. It's well thought out, uses MVC correctly, and the comments are helpful (and no, I didn't write it). It's also a fun program to use if you want to learn how to play Go.
For Gui design, Patterns and general good advice I highly reccomend Jeremey Miller's series of articles on building a better CAB. For C#, but equally applicable to Java. Also using
the MVC style which Stackoverflow follows, and Apple uses for Interface Builder.
Build your own CAB
Jeremy's articles/ideas are followed in his own project, which you can download and inspect at http://storyteller.tigris.org/
Take a look at the Windows version of truecrypt. It is one of the best organized open source projects I've ever seen. You can almost tell how the whole thing works just from the directory and file layout.
What I've done to learn some new technologies over the years is to look to open source projects that both match the criteria you're looking for and also interest you.
I'm not a Swing guy, but I'd suggest finding a project that uses Java Swing, does not appear too complicated, and then start digging through the source. The nice thing is you can then see the app before you start poking through it, and then you can see what happens as you change stuff.
The idea behind picking something that interests you is that it will keep you engaged. I am intrigued by content management systems, so I might download a CMS that I can then see how stuff works, and I'm engaged because the problem domain of the project fits in with an interest.
I've done this once or twice when I had to get up to speed on C# and I think it works will. YMMV....
Some of the most well thought out source code ( c++ ) I have seen in an open source project is the Ogre3D graphics engine, I've learned a lot about OOA&D just by looking at the structure and reading the comments. It is also well maintained and the community is very active.. http://ogre3d.org

Resources