I was tinkering around with Cocoa development this weekend, following the Cocoa Programming book over at The Pragmatic Programmer. Since it covers Xcode 3, I knew I would run into some difficulties in translating what is happening in the book and what I am doing on screen. But that’s part of learning, right? I managed to find the different inspector windows and get the SimpleBrowser example put together pretty easily. Now it came down to building for Release.
Unbeknownst to me, Releases have changed since Xcode 3. With the introduction of the App Store for Mac OS X, Apple made it easy for a developer to create Archives within Xcode. These archives are then submitted to Apple for approval for the App Store. I did not want to submit my SimpleBrowser app to the App Store; I just wanted the ability to share with friends. In Xcode 3, these Releases would be found within a Releases directory in the Project directory. Xcode 4 handles it a bit differently.
Under the Product menu option, select Build For => Build for Archiving. This will create a Release for the project. To find the Release, open the File navigator and expand the Products directory. Right-click the app and choose Show in Finder to open the location of the Release.
As I dig even further into Cocoa development, I am sure I will be writing more posts like this to document my learning experience. Let me know if you found this helpful!
Heroku is a great service designed to make it easy to deploy and scale web applications. I have had an ongoing love / hate relationship with Heroku. I love how easy it is to deploy a prototype for a client to review. I hate when Ruby versions don’t match up. I love the CLI. I hate having to turn on Add-ons for basic services ( I’m looking at you Logging ). But aside from all of this, I get along pretty well with Heroku.
Until, the one day I cleaned house ( aka removed unused Heroku apps ). There was one particular site I had worked on that for whatever reason had 3 Heroku apps. We ( the company I work for ) decided to move off of Heroku and onto a couple Rackspace Cloud instances. These instances have been up since the site launched in October of 2011, so I thought, what would be the harm in removing the unused Heroku instances? I proceeded in deleting them.
As I was eating lunch with a couple of my co-workers, our project manager came outside with some bad news: one of our sites was down. Specifically, the one I had previously deleted the Heroku apps for ( though this hadn’t occurred to me yet ). Luckily, we had some stellar clients that let us know that the site and email were down. Since the email is through Google Apps, this sounded like a DNS issue.
After returning to the office after lunch, I began digging into the DNS outage. I logged into our GoDaddy account to try and figure out what was up. I discovered the nameservers were pointed to Zerigo’s. Hmm, I didn’t think we were using Zerigo for this site, but apparently we were. I proceed with logging into our Zerigo account. Nothing shows up for the site in question. Interesting. Now, it was time to ask the guy who set it up.
At first, he thought it may have something to do with Zerigo’s query limit of 50,000 domain queries per month on their free account. But after he logged in and couldn’t find the records either, we both became puzzled. Memory finally returned to the chap; he had setup the DNS using the Zerigo add-on in Heroku. When I destroyed the application it was tied to, it also removed the DNS records.
The fix was easy: recreate the records in our free Zerigo account and wait for propagation. Takeaways from the experience? Don’t destroy Heroku applications without first checking the associated Add-ons. You never know what you may be dumping with it.
Julia has been learning her letters by tracing the letter out and coloring a picture of an animal corresponding to the letter. In case my explanation has completely baffled you, here are a few pics to ease your understanding:
Julia has also been performing science experiments to discover the world around her. One experiment took one of daddy’s beer bottles and placed a balloon on it to test air pressure. Another has her growing seeds to witness the different stages of a plant’s life cycle. And still another has her discovering that plants sweat. In the picture below, you can see Julia holding up a moist plastic bag that she had used to cover a dry plant earlier that day.
Julia has also been busy expanding her art skills as seen in the gorgeous cat picture below:
I will take one for the office please.
She has also been working with mommy to put a puzzle together:
She finished the puzzle tonight.
After much parental bugging, Julia finally pushed mommy and daddy to purchase her a helmet for her roller skates. I have yet to see her on the skates, but she wore the helmet for a little bit tonight while scooting up and down the sidewalk.
Last but not Least…
And one last picture of Isaac being… well, Isaac.
As the children continue on aging, I will continue on posting their antics and accomplishments.
So I recently decided to follow the norm of posting my dotfiles to Github. I find this to be a best practice in the case my computer dies and I lose all of my data ( but that won’t happen because I have Time Machine, right… right? ). I can easily get a new computer, install the software and pull down my dotfiles. Boom! New machine that runs just the way I like it.
I am also posting in the hopes of getting suggestions from the community. That’s kind of a nice cherry on top. I know there are developers out there that sink hours into configuring and fine-tuning their tools until true coder zen arrives. I am really hoping to learn a thing or ten from the zen masters.
Comments and suggestions are welcome.
The family recently traversed over to the Sarah P. Duke Gardens to take Isaac’s two year-old photos. The gardens have a lot of great photo opportunities providing a wide array of scenery. Below, you can see Bethany posing the children to take their pictures.
We had a lot of fun walking through the gardens, looking at the fish and trying to catch the butterflies. I’m not sure Isaac was in the greatest of moods for pictures, so we will have to see how they turned out. Until then, here’s another shot of the kids at one of the venues.
Afterward, we hit up Cookout for delicious milkshakes. Mmmmm
It was a crazy week at work. Most of these beverages were consumed between a day and a half to meet a milestone