Hi. I’m Josh Smith, and I’m addicted to creating software. Here’s my mugshot:

That's me!
I have been a professional software developer for the past seven years. During that time I have worked exclusively on Microsoft platforms, mostly the .NET framework. I have been a Microsoft MVP for the past four years, maintained a rather popular blog about WPF and Silverlight, wrote many articles, self-published a book, and have generally enjoyed the ride. But then I noticed something…

Writing on the wall
A lot of people use, and love, Apple products. I mean, a lot of people. There are people using iPhones everywhere I look. Every coffee shop, book store, airport terminal, and men’s room (can’t speak for the women’s room) is chock full of MacBooks, iPads, and the like. I don’t see nearly as many Windows machines as I do Macs out in the wild.
That got me thinking about the big picture; as in “What can I do to improve my career, 5 or 10 years from now?” I assume you see where this is headed. Don’t get me wrong, I still have a ton of respect for some of the platforms that Microsoft puts out. WPF is just plain brilliant! But there’s more to life than Microsoft, and there’s more to a successful career than keeping all of one’s eggs in a single basket.
This blog will document my journey of learning how to develop software that runs on Apple’s hardware. I hope it proves useful or at least interesting to other .NET developers interested in taking the leap to Apple programming.
I’m currently reading ‘Learn Objective-C on the Mac‘ in order to come up to speed with the basics of talking to an Apple device. My pile-o-books also has ‘XCode 3 Unleashed‘ and ‘Cocoa Design Patterns‘ weighing it down. I’ll get to those soon enough. See you later!
Nicely done man! I look forward to reading about your iJourney into the world of Mac programming.
-Sent from my iPad
Welcome to the other side. I made the shift to Mac a couple of months back, and have since added an iPad and an iPhone 4 (still on order) to the ranks. I still develop for Windows and ASP.NET MVC (using Parallels), but have started looking at iPhone programming. It’s been a sometimes bumpy ride, but OSX is pretty slick. Not better than Windows overall, just different. There are horses, and there are courses… Anyway, enjoy the journey. You’ve got one subscriber already…
+ 1 on the feed – i’m envious!
They should really take away your MVP and give you the MVH (Most Vicious Heretic) award.
Of course I’m just kidding. I was thinking along the same lines as you. My girl friend is crazy about her MacBook and most of my friends already own an IPhone, IPad or IWhatever. Maybe it really is time for a change.
Anyhow, I’m looking forward to your future posts and best of luck on your journey.
I already wrote a comment on your other side of the fence (the other blog)
🙂
Here’s a hyperlink, to avoid duplication:
http://joshsmithonwpf.wordpress.com/2010/09/16/ive-gone-mac-will-i-ever-come-back/#div-comment-13556
Cheers, Dan
Having made the transition from PC to Mac last year I recommend for learning mac programming.
Thanks for all the feedback, everybody! Much appreciated. 🙂
Good to hear – i’m in exactly the same boat as you! But, the way I look at it – the way a .NET developer needs to integrate him or herself into the mac mix, is not simply by “re-learning” everything in the context of obj-c and xcode, but by utilizing the current .NET tools (Mono/MonoMac/MonoTouch), and finding new ways to use .NET on the mac. I’d like to think that the reason why we’ve drifted towards C#,.NET, Mono and whatever is not simply because we’ve used Windows, but rather that it’s just plainly a superior development platform (to Java/Obj-C). And as new Mac developers what we need to be is evangelists of our Smalltalk/C++-like OO-model, our CLI, XAML, LINQ, WCF, etc…. and not simply develop Mac Apps, but contribute to say Mono, bringing our wonderful world to the Mac development community which has suffered for way too long. Good luck – one day, I hope to be reading “MVVM for Macs by Josh Smith” on my iPad :).
Pradeep,
I appreciate your comment. I am learning Apple programming so that I can gain exposure to alternative programming techniques, round out my skill set, and have fun. Getting into MonoTouch is definitely in my future, but I’m not doing this just to evangelize .NET on a different platform. I really want to learn new things and enjoy programming in a different environment.
Hopefully one day you will have the opportunity to read “MVVM for Macs by Josh Smith” on your iPad.
Thanks,
Josh
Looking forward to reading this. I’m due for a new laptop some time next year…I’m hoping you will convince me to get a Mac this time 🙂 Please document your learning process here well….
Rob,
Thanks so much. I hope you’ll find this blog a source of inspiration.
Josh
“What can I do to improve my career, 5 or 10 years from now?”
I recently had the same thought, and I did the same thing; I got a mac and started learning outside of the .NET platform. I too really enjoy .NET, but nothing stays the same forever. It’s better to be ahead of the curve than behind it.
Well put, Daniel.
That’s great that you’re going to share your journey — it will be interesting. I recommend that rather than jumping whole-heartedly into both Obj-C and Cocoa you explore Cocoa concepts using either MonoTouch or MacRuby. You might find my brief article http://www.knowing.net/index.php/2009/03/30/from-theory-to-iphone-pt-3-a-diversion-into-ruby/ helpful.
To me, the big challenge with moving to Mac programming was the conflation of “programming for the Mac” with “programming in Obj-C in XCode and Interface Builder.” It’s similar to trying to understand Windows programming and being told “The next thing to do is launch the XYZ Wizard…”
Sounds like good advice. Thanks Larry.
Welcome to an equivalent of early MFC era on PC. Discovering how great Microsoft documentation on MSDN is (which BTW I regularly criticize as incomplete and/or obscure) will be the next step.
Actually, I’m pretty impressed at how good the Mac documentation is, especially as you can download a PDF of most documents and read them offline on the iPad. Sometimes the concepts are a little tricksy, but the developer community seems pretty strong.
One day I asked Mac OS 9 programmers how do I add a string to a combo box. Nobody knew the answer. I asked for a reference to a combo box API and nobody knew where to find it. I was fresh from Windows and couldn’t believe that such amount of ignorance of the basics is an acceptable norm. Since OS X came out a lot of things improved. But in the end it is all just the remains of NEXT. It may be appropriate in the world running out of resources to feed on cadavers (Objective C comes to mind).
Doesn’t the whole ‘control freak’ thing bother you? Just a few recent examples:
http://www.networkworld.com/community/node/66382
http://www.apple.com/pr/library/2010/09/09statement.html
[http://www.youtube.com/watch?v=YNSHA3FBW2U]
No Tom, not at all.
Hey Josh,
I’m also a .NET developer, learning the ways of the Apple.
Hopefully I’ll finish my first application within the next few weeks. The app is some sort of a chemistry calculator. I’m writing it with MonoTouch(it’s awesome!) using MonoDevelop. A great read on Objective-C/CocoaTouch and the iPhone SDK is iPhone in Action, highly recommended.
Have fun!
One thing I think I can predict: coming from WPF you won’t be getting excited about Apple technology any time soon. That is because it is all old technology.
There is nothing exciting about Objective C, just for one example. There are no great patterns, gurus, ideas, progress, developments or anything worthy of any mention in Objective C world. It is a dead, clumsy, boring language; the only reason for its existence is in the fact that it can be used to do things on Apple systems and because, rather than spending money on developing something modern, Jobs was smart enough to know that old can fit the bill anyway.
If anything, Apple recent success is a great lesson in how you don’t need a great technology to satisfy most customer’s needs. Heck, iPhone couldn’t run more than one thread until the recent release of iPhone4. Compare that to Windows Mobile, or even before that, Windows CE, a fully-featured portable 32-bit Windows-compatible OS, existing for almost a decade before iPhone was even conceived. Yet. Microsoft couldn’t make it user friendly for a decade or so and it is probably too late for Windows Phone 7.
All in all, IMO, if you needed something different a fresh, Linux and everything Google would be much more exciting.
Also was looking for a new notebook and at MacBook Pro on my way but finally stopped at Lenovo 510W. It has wider touch screen, more powerful graphics, i7-920 processor with 4 cores and 16 GB memory. Though apple doesn’t disclose processor model it seems like i7-6XX with 2 cores, supporting max 8 GB. Lenovo 510W has 256 GB SSD. It’s nice to have more SSD, though for my purposes I would go with 128 or even 90 GB.
Couldn’t find any embedded Fingerprint Reader mentioning at apple site and that was not minor shortcoming. Was MacBook Pro really shipped without Fingerprint Reader? Also MacBook Pro has a camera, can it be used for teleconferencing?
Btw, could mac os be installed in parallel with other os (windows, unix) on Lenovo 510W or windows on MacBook Pro? Do we need to change bios?
– FYI – interesting interview on MonoTouch/iPhone development:
http://adtmag.com/articles/2010/09/29/monotouch-qa-with-wallace-mcclure.aspx
Coincidentally 🙂
http://visualstudiomagazine.com/articles/2010/09/29/miguel-de-icaza-on-monotouch.aspx