Jan
16
2010

This is not so much how to make applications for the iPhone, since there are so many on of those on the web already. This is more a syllabus on how to get started with the vast amount of information already out there and where to start from to quickly become proficient at iPhone development without getting frustrated or discouraged.
Development Requirements
An Intel-based Apple Mac
$99 (optional – if you want to actually publish your app)
That’s all!
Apple Developer Account
Development for the iPhone is initially free. So feel free to head over to http://developer.apple.com and sign up for a developer account if you don’t already have one. This will give you access to the Integrated Development Environment (IDE) called XCode, which is required to develop applications for the iPhone and iPod Touch. It also serves as a treasure chest of free information, sample code, tutorials, how-to videos and news, all of which I’ll talk about how to use later.
Once you’ve signed up for a developer account, you’ll need to download XCode and install it on your Mac. PC users are, as they always are, out of luck since a Mac is required for development. Once that’s done, put it aside as you won’t need it for a bit.
Learn to Program
An Important Design Pattern: Model View Controller
If you already know how to program a little bit, but haven’t gone through the rigors of a four year university Computer Science degree or something similar, start with learning an important design patterns, namely one called Model View Controller (MVC). Of course, a 4-year degree is not necessary, but you need to understand basic software engineering principles, design patterns and basic usability practices, which practically none of the programming tutorials, books and online articles teach. Also, a lot of practice helps as you’ll learn how to fix non-obvious compiler and runtime errors, how to structure your code, and pitfalls of each language you use.
Objective-C: The Language of Choice
After you understand the basic principle of MVC, you can then move on to learning the language of choice, Objective-C. Why Objective-C? Why didn’t Apple just choose a common language like C++ or Java? The reasons will become obvious as you learn about the language, it’s power, and how it fits into the MVC methodology better than any other language you’ve likely seen before. So here’s a nice tutorial on how to program in Objective-C.
If you already have a great understanding of programming and know a C-based langauge, skip the lengthy tutorial and take a look at this primer to get a sense of the additions to C that Objective-C brings to the table. For most people who are familiar with a C-based language, this will be all you need to get started.
Continue reading
no comments | tags: API, apple, article, cocoa, code, core data, dev, developer, development, guide, iphone, ipod, itouch, mac, objc, objective-c, tableview, tutorial | posted in advice, code, work
Oct
19
2009
I do a ton of localizations for web-based media (over 30 countries) and have run across several bugs in Flash where the characters don’t show up for certain fonts, especially for translations with non-latin characters (such as Russian, Chinese, Japanese and even Hungarian and German). I always complain about them, and instead of just complaining, I figured I’d share some of the solutions since they’re bugs in Flash and may not have obvious solutions.
Obvious Solutions
The obvious solution when you have a dynamic text field, that is either driven from XML, RSS, or other external document or data source, is to embed the font’s character sets. Obviously if you are going to be using Korean in your Flash application, you want to embed the Korean character sets so the Korean characters show up in the font you have chosen. However, with so much emphasis on branding these days, not all specialized fonts have characters in Korean.
For example, the Star Wars Jedi font that I once worked with has absolutely no other characters beyond A-Z, a-z and numerals. Forget Spanish and it’s tildes, forget German and its umlauts, but Russian?! Ha! Everyone knows there were no Russian Jedis! So, what to do?
Continue reading
3 comments | tags: Action Script, adobe, AS3, code, flash, fonts, foreign, localization, localize, macromedia, RSS, text field, translate, translation, XML | posted in advice, code, work
Feb
4
2009
Depending on who you are and what you do, you may find yourself working with people whose skills are superior to your own. For some of us, this happens more often than not. For others, this rarely happens, or at least they think it doesn’t.
If you don’t work with people who are better than you at something, then there’s a problem. The problem is you’re the best at what you do. If you don’t see the dilemma (and silly you), let me explain.
How We Improve
We all go to school to learn skills to do our jobs better. We attend conferences to learn what’s new in our industry of choice. And we sometimes take online college courses to stay fresh and relavent. But all these things are being taught to us by someone who is better at what we do, be it a college professor, a peer who has done more research in the area or a committee of people who have dedicated a large portion of time compiling the information you are now trying to absorb.
We are best at what we do the most. For some people, they’re good at watching TV (some of us can’t sit still that long). Others are good at playing video games, cooking, or sports. Hopefully we are all good at our jobs, since above all, we spend the majority of our waking hours doing just that.
So, if the majority of your time is spent at work, working with people who are uninspiring and not as talented as yourself, it might make you feel great that you’re the smartest person in the room, but honestly, how smart are you really compared to other companies? Some of us can claim to be the world leaders in our respective industries. Unfortunately however, most of us can’t and if we aren’t exposed to people who have different ways of working and who are better, we never learn anything new.
Be Humble and Learn Something
I have several developers that I work with. The first thing I do is admit that I don’t know everything and that their input is very important to me because of that. Complex databases are not my thing. I know a lot about them, but I work with people who know more about them. Sometimes you just need to shut up and listen, even if you think you’re right about something. You’ll learn that not only are you not always right, but that other people can be right too, and sometimes you can both be right; just with different solutions to the same problem. So surround yourself with smart friends and co-workers and just by hanging out with them you’ll pick up things you wouldn’t have otherwise. Don’t worry about being the small fish, revel in the wealth of information and inspiration that surrounds you.
2 comments | tags: improvement, job, performance, skills, work | posted in advice, work
Jan
29
2009
The saying, “If it ain’t broke, don’t fix it,” is not a very good motto, especially when there’s progress to be made. When you’re working with old and tired technology it really drags down your capabilities and your ability to move forward. The need to keep around legacy solutions only holds back your clients from realizing your full potential as a company.
Their Failure is My Failure
Being the Technical Director at my company means that I get to pull out all the stops when it comes to investing in our technical capability as a company. But it also means that I am responsible for those technological failures as well.
Coming from the world of Human Computer Interaction (HCI), the user is never wrong or stupid, but instead it is your design that is wrong or inadequate and the sooner you realize that, the sooner you can move on to building better, more functional and friendly software.
The same goes for my developers. They are forced to use the solutions I provide for them and if they have problems with it, break it, or can’t get it to work, that’s my failure to design a well-working platform for them to develop on. Sure, I can always fix the problem for them in a few minutes and show them where they were misled because I understand how all the pieces fit, but I’m the one that made it, so of course I understand it. I could dismiss their problems as them not knowing how the code works or that certain things need to be placed in particular spots for things to work properly, but that’s not their job. Their job is to develop really great pieces of work and it’s only a difference of mentality on how they should do their jobs better and easier.
On the one hand, I could produce documents and try to explain how everything works and occasionally field questions on how certain things work. The alternative is to pay attention to the problems they’re running into and resolve it in a way that’s best for them. This may require a higher initial investment, but it’s an investment that’ll yield higher returns in the long run, not to mention happier developers.
It’s Not Them, Stupid, It’s You
We’re quick to fault others for something that we ourselves may understand quite well, but with the wealth of diversity in this world, no one can know exactly the same things you do. I work with really talented people and I can’t blame them for not knowing things I think are common sense because I know they know things that I couldn’t even begin to grasp. So instead of trying to be superior to people or trying to absolve yourself from blame, take the stance that the end-user is always right, be it your co-workers, your clients or your customers. Remember, you’re not trying to compete with them, you’re trying to work with them.
Don’t Fix It, Improve It
Take something in your line of work that is tired and old and revamp it. If your software is coded in ActionScript 2, upgrade it to 3. If your website is made with just straight up HTML, refactor it to include CSS and some JavaScript. If your invoices are still written in the Courier font, hire a designer to make them less intimidating (unless that’s the point, in which case your business model is flawed if you’re constantly trying to convince your customers to pay up). I know it might not seem broken and may seem to work fine, but by improving on what you already have, it allows you to evolve and be a leader rather than having tired old things hanging around and weighing you down.
no comments | tags: actionscript, as2, AS3, code, company, css, development, Javascript, job, performance, responsibility, work | posted in advice, projects, work
Oct
5
2008
So, I don’t usually talk about work on the public stage (Blog, Twitter, etc). A few things have changed recently (which I won’t be talking about right away), and so I’ve decided to make my professional life a tad bit more open but in the spirit of informing and to entertain.
The idea is going to be, talk about what I do, and explain my experiences, what I’ve learned and what I’d do differently. Since I have such a wide range of things I do, hopefully some of this will be interesting to you.
Lightroom 2

I recently acquired Lightroom 2 for my photo workflow. I’ve been using Lightroom 1 for a few years and it’s been a blast using it on my PowerMac G5. However, it was a bit slow and it was slowing up my workflow. Lightroom 2 has tremendously sped up the processing of my photos (perceptually twice as fast). Before I was waiting on the computer, now I can mostly just work and not have to sit there while the computer processes the changes I just asked for. Continue reading
1 comment | posted in advice, art, news, photography, photos, projects, work