Developing Perspective

#14 - My Setup


00:00:00   Hello and welcome to Developing Perspective.

00:00:03   Developing Perspective is a near-daily podcast discussing the news of note in iOS, Apple,

00:00:07   and the like.

00:00:08   I'm your host, David Smith.

00:00:09   I'm an independent iOS developer based in Herndon, Virginia.

00:00:12   This is show number 14 and today is Tuesday, August 23, 2011.

00:00:18   The format of Developing Perspective is that I'll handle a handful of links, articles,

00:00:21   things I've found interesting since the last episode, and then move over into a more general

00:00:26   discussion towards the end.

00:00:27   The show will never be more than 15 minutes.

00:00:29   Let's get started.

00:00:30   All right, first link I have today is to a tool that I use and have used for years and

00:00:36   years and recently just realized I never actually talked about it on the show.

00:00:40   It's called Size Up.

00:00:41   It is essentially a window manager for Mac.

00:00:44   And what it allows you to do is to set up a variety of different templates for how you'd

00:00:48   like your windows organized on your screen.

00:00:51   I use a fairly large screen and actually two very large screens.

00:00:56   And so it's something that is often very important for me is to say, "Okay, I'm going to use

00:00:58   these two windows side by side, both using, say for example, half of the screen left and

00:01:03   right or top and bottom or quarters or those types of things. What this application does

00:01:08   is lets you set up keyboard shortcuts to say, "Move this window to exactly the top left

00:01:12   corner or exactly the left side or fill the entire screen or move it to the other screen

00:01:18   and do those types of things." And it's become muscle memory for me for how I can organize

00:01:23   my windows and it really just saves a lot of time and effort. Some of this is a little

00:01:27   less relevant if you are using a single monitor setup in Lion and you really like full screen

00:01:34   apps, maybe it wouldn't be as useful. But if you're using a smaller screen or two screens,

00:01:39   then it's definitely something worth checking out. I think it's like $10 or something. It's

00:01:43   a fairly inexpensive tool that I've just really found really helpful. Next, there's a repository

00:01:49   over that's actually managed by GitHub itself. So it's github/gitignore on GitHub. Basically,

00:01:56   Basically, it's a really interesting project that they put together collecting useful .git

00:02:02   ignore templates.

00:02:03   And so if you use Git as your version control system, your gitignore file typically in the

00:02:08   root directory of your project tells Git what to exclude from the project.

00:02:14   So these are typically things that are either something you wouldn't want versioned, so

00:02:19   maybe it has your local development database or something like that, your local preferences

00:02:25   and settings that aren't really part of the project, that if you have 10 people working

00:02:30   on a particular project, say, a small to medium sized team, and you committed that, you're

00:02:36   constantly going to be overwriting each other's preferences and choices, and that can be very

00:02:41   frustrating. And so this is just a great way to--great collection that they've put together.

00:02:45   They have a template file for almost every language or project you could imagine. So,

00:02:51   For example, one that's especially relevant for me is an Objective-C Git ignore file,

00:02:56   which includes all kinds of things.

00:02:57   So your build directory, your PBX user file, your project files, the different perspective

00:03:02   things.

00:03:03   Some things that I probably wouldn't have actually even known that I could exclude or

00:03:08   should exclude.

00:03:09   So definitely worth checking out.

00:03:11   There's also ones for, for example, Rails or Ruby files, WordPress, all manner of things.

00:03:18   Drupal, C++, lots of interesting things there.

00:03:22   Definitely worth checking out if you use Git,

00:03:24   and definitely just a big help that I recently found.

00:03:27   I was like, oh, I recently created a new project,

00:03:29   so I'm like, oh, what should I put in my Git ignore file?

00:03:32   So it's just worth looking at that.

00:03:35   Next, there's a really interesting article.

00:03:38   So if you're not familiar with Why the Lucky Stiff,

00:03:40   who was a kind of a legend in the Rails community

00:03:42   back in the day, a couple years ago,

00:03:45   he sort of dropped off the radar intentionally.

00:03:48   I think he just sort of had enough with kind of the persona and perspective that he had,

00:03:54   especially given that he was an online persona rather than a person.

00:03:58   He was just sort of called Y and he was famous for some of the things that he'd done.

00:04:02   But there's a really interesting article or I guess it's a post someone wrote, which publishes

00:04:06   an email that he got from Y back in the day talking about sort of how he developed and

00:04:16   why he made some of the choices he did.

00:04:18   It's just a really interesting thing where he talks a lot about, he often shuns the predominant

00:04:25   styles of coding and things because what he really enjoys is experimentation, kind of

00:04:31   mucking about and trying to make interesting things.

00:04:35   And he focuses on that far more than he does on design patterns and protocols and procedures

00:04:41   and things.

00:04:42   wants to do is make interesting things.

00:04:44   And he says the best way to do that is to kind of push

00:04:47   the boundaries, to kind of be playing around

00:04:49   and playing fast and loose with things to get it to work.

00:04:52   Now obviously that's advice that works in certain contexts.

00:04:55   It's not something that you want to do.

00:04:57   If you're necessarily working on a large team of 30 developers

00:05:01   working on something, there's a certain amount

00:05:03   that's necessary.

00:05:04   But it was just a really encouraging thing

00:05:06   to kind of read and think about, especially

00:05:08   for small slide projects, things where really the goal is

00:05:12   to experiment and learn something.

00:05:14   So it's not as important to be unit testing all your code,

00:05:17   to be writing lots of comments, those types of things.

00:05:20   And it gives you much more flexibility to say, hey,

00:05:22   I'm going to experiment with this.

00:05:23   I'm going to play with it.

00:05:24   If it works, it works.

00:05:25   If it doesn't, it doesn't.

00:05:27   But it's kind of freeing in some ways to think in those terms.

00:05:29   So definitely worth reading.

00:05:31   And lastly, there's a site-- it's patterns.com,

00:05:34   but with all the vowels missing.

00:05:36   And essentially, you may have come across this before.

00:05:40   every now and then it seems to just kind of be rediscovered.

00:05:43   But it's a really interesting site

00:05:45   that shows you patterns in iOS development.

00:05:48   And so say, for example, you're creating a comments entry

00:05:54   screen.

00:05:55   It'll have dozens and dozens of ways

00:05:57   of displaying comments screens.

00:05:59   Or for example, you have a search screen,

00:06:02   or you have a recipe display, or a settings screen,

00:06:06   or a share panel.

00:06:07   Whatever those kinds of things are,

00:06:09   It has a collection of different examples of it.

00:06:11   So for example, I opened up the recipes area.

00:06:13   It has one from all recipes, Martha's Everyday Food, Eataly,

00:06:17   and Epicurious.

00:06:19   And it's just a really interesting way

00:06:21   to kind of get some inspiration.

00:06:22   If you kind of get stuck, you're like, huh,

00:06:25   how should I show this calculator?

00:06:27   How should I show this about screen?

00:06:29   What could that look like?

00:06:30   And so it's a really nice way to kind of just capture

00:06:32   that in a way that gives you some inspiration

00:06:36   and gives you some kind of thoughts through.

00:06:38   So examples from other people who've thought through the same problem that you're encountering.

00:06:42   So just worth checking out.

00:06:43   All right, so that's it for today's links and discussion area.

00:06:48   Now I'll be moving into our general discussion for today.

00:06:51   And for that, I'm going to be talking about my computer setup.

00:06:55   So I work outside of my home in a small office that I rent just a mile from my house.

00:07:00   And that's where my primary office setup is.

00:07:02   And that's where I sort of probably do 90% of my work.

00:07:05   The machine that I use most part here is a late 2009 iMac.

00:07:11   It's a pretty beefy machine at the time.

00:07:13   I think I got pretty much the fastest iMac that you could at the time.

00:07:17   It's now probably not too impressive, but it's an i7 processor which has, I believe,

00:07:22   eight virtual cores.

00:07:23   I think I maxed the RAM.

00:07:25   I think I sort of got up to something like 8 or 16 gigabytes.

00:07:29   It's quite a lot.

00:07:31   Those parts aren't especially interesting.

00:07:32   It's a 27-inch model, which is nice to have a nice big screen.

00:07:35   And then what I find probably the most interesting part of my configuration there is I boot from

00:07:39   an external solid-state drive.

00:07:41   So this is just an other world computing solid-state drive that comes in a bus-powered FireWire

00:07:48   800 enclosure.

00:07:49   The advantage of what I found about that is A, the iMac that at the time when I purchased

00:07:54   it was, in order to get a solid-state drive, was a very, very expensive upgrade on it for

00:07:58   not a lot of capacity.

00:08:00   And so I left the normal spinning disk drive

00:08:02   as the internal drive.

00:08:04   And then I boot from the external solid state drive.

00:08:06   Now you get a lot of the performance gains

00:08:08   that you would get from an internal solid state drive

00:08:10   from that.

00:08:11   You get a lot of-- for your sort of random seeks

00:08:13   and those types of things, you get a lot of benefit from that.

00:08:16   The unfortunate downside is that I

00:08:18   am capped at the bandwidth of FireWire 800.

00:08:23   So if I'm doing large transfers and things,

00:08:25   you'll notice that a little bit.

00:08:26   But since most of what I do is doing very small reads, the performance benefit is definitely

00:08:31   significant.

00:08:32   I found that it's in the range of 20 or 30 percent faster than the internal disk when

00:08:36   I have done some benchmarking between them.

00:08:39   Another advantage of leaving my boot drive to be external is that when I'm on the road,

00:08:44   it's very, very easy for me to pick up and put down my work.

00:08:50   So if I shut down my iMac, unplug that FireWire drive, plug it into my MacBook Pro, which

00:08:55   which is just an old MacBook Pro, I think it's two or three years old, it boots right

00:08:59   up, all my files are there, everything's set up exactly like how I like it, and I don't

00:09:03   have to keep the two machines in sync in that regard.

00:09:06   It's just literally the exact workspace that I was using otherwise.

00:09:10   I can move easily between the two machines.

00:09:12   It has a few artifacts that you usually run into, some of the display configurations and

00:09:16   those kinds of things get kind of confused.

00:09:18   But generally so far I've been doing it for about two years now, and it's been a great

00:09:23   configuration to be able to have my external drive that is movable between my machines.

00:09:28   So for example, when I go to WWDC, I just take my MacBook Pro, Firewire 800 drive, and

00:09:36   off I go and I can be just as productive.

00:09:38   I don't have a situation where, "Oh, I've left something on my iMac back at the office."

00:09:44   So that's part of the configuration.

00:09:47   Connected to my 27-inch iMac, I also have a 27-inch cinema display.

00:09:51   So it's kind of an absurd amount of desk space.

00:09:54   And it certainly is more than I need.

00:09:55   That's one thing that I-- it's kind of a-- unfortunately,

00:09:58   these displays only come in increments of 27 inches

00:10:01   these days.

00:10:02   I would have probably opted for a slightly smaller setup

00:10:04   if they had same-day displays in that size.

00:10:08   But the advantage I find is I like having two screens.

00:10:11   I think that's definitely worthwhile as a developer

00:10:13   to have-- essentially, what I typically end up with

00:10:15   is Xcode running full screen, or not in an alliance sense,

00:10:19   So I'm taking up the entirety of my main display

00:10:23   directly in front of me.

00:10:24   And then to my side, I have any external things that I need.

00:10:27   So documentation, the simulator, mail, Safari,

00:10:30   those types of things are running on the screen

00:10:32   on the right, the way that I prefer it.

00:10:35   And what I find is that I'm generally

00:10:37   using one and a half of my monitors.

00:10:39   So I'm using the full main monitor and then half

00:10:41   of the other one.

00:10:42   Beyond that, it gets too far out of your vision.

00:10:44   You're almost having to turn to look at it, which I don't

00:10:47   find especially comfortable.

00:10:49   Let's see, other parts of my setup and configuration

00:10:52   are that I run--

00:10:54   I have a dock for my iPhone and a dozen or--

00:10:58   probably not a dozen, but I have several dock connectors

00:11:00   coming out the back of my computer,

00:11:02   because that's one thing of being an iOS developer,

00:11:04   is you're always constantly plugging and unplugging

00:11:06   different devices.

00:11:07   I think in my office, I have about six or seven

00:11:09   iOS devices of various kinds, ranging

00:11:12   from second generation iPods and--

00:11:15   And iPhone 3G all the way through to the iPad 2 and iPhone 4, those types of things.

00:11:20   And so it's very convenient to have just a lot of dock connectors.

00:11:24   I also have an extra MagSafe connector plugged into the back, or available from the back

00:11:29   of my machine.

00:11:30   So this is also helpful sometimes where, for example, right now I'm running the iOS 5 betas

00:11:34   on my main machine as Xcode.

00:11:37   And then I have on my MacBook Pro, it also has an internal bootable drive that I can

00:11:42   use and that's where I run my current 4.1 which is sort of the main shipping version

00:11:48   that I need to use for submissions to the App Store now.

00:11:50   I run on that and when I'm connecting that, when I'm actually doing those builds, I can

00:11:55   easily plug the display port from the cinema display into that and then you still have

00:12:02   that massive screen real estate that I'm used to even though I'm using a much slower machine

00:12:06   to make that happen.

00:12:08   One thing that's also kind of fun with this setup and using an external drive as your

00:12:12   primary drive is it's very easy to have backup.

00:12:15   So every night this super duper clone is made of my external FireWire drive to the internal

00:12:20   drive of the iMac.

00:12:22   And the advantage of that is A, I can easily, I have a backup of all my work that's at no

00:12:29   more than one day old.

00:12:31   The other advantage is it means that my iMac can boot without my main boot drive connected

00:12:36   to it.

00:12:37   So if I unplug my FireWire 800 drive, I can still boot the iMac, and it's essentially

00:12:41   a snapshot of my yesterday's work.

00:12:43   You have to be a little careful with that so that you don't end up overwriting files

00:12:46   that you want when the next time you do the backup.

00:12:49   But often that's been helpful for me if I'm away or something like that and someone needs

00:12:54   to use the computer.

00:12:55   They still can.

00:12:56   They can boot it up, open up Safari, do whatever they need on it.

00:12:59   It's just a fully working computer.

00:13:01   It's just my computer a day ago.

00:13:05   That's essentially my configuration.

00:13:07   The other little things that I always like is I'm a big fan of the Microsoft natural

00:13:11   split keyboard.

00:13:12   It's this kind of strange habit I've gotten into.

00:13:15   I've been using a Microsoft natural keyboard for years and years now.

00:13:19   I think probably since I was a – first could choose my keyboard when I was at a job where

00:13:24   that was something I could do and I've just grown used to the muscle memory for where

00:13:29   all the keys are.

00:13:30   Everything is just perfect and I've never had any problems with RSI, carpal tunnel,

00:13:34   anything like that.

00:13:35   It's just a very very comfortable machine.

00:13:38   I use a Logitech keyboard, mouse, just the standard $9 laser mouse that just feels right

00:13:44   in my hand.

00:13:45   It's the right size, it's the right sort of sensitivity and speed.

00:13:49   I've tried using a magic mouse but for me it's too small and the lack of physical button

00:13:54   and kind of just feel of it just doesn't, never quite felt right.

00:13:59   And then I also have a magic trackpad that I use primarily for gestures and things like

00:14:03   that to play around with, but it's not something I use very often. I often use that too when

00:14:07   I'm recording shows like this or other recorded things because it doesn't have a clicking

00:14:11   sound when you make a selection with the mouse. And that's essentially my setup. And then

00:14:18   of course I'm recording this on a Rode Podcaster microphone. I have a big set of Princess Leia

00:14:22   headphones that, by Princess Leia I mean the big over-your-ear sort of two buns stuck on

00:14:28   side of my ears looking set up and that's about it.

00:14:33   I have a little printer and I'm just looking around my desk with an old printer scanner

00:14:39   that I primarily just use for scanning but that's my setup.

00:14:42   That's where I make my money.

00:14:43   That's how I make my living.

00:14:44   So anyway, I hope that's interesting and that's it for today's show.

00:14:47   I'll talk to you tomorrow.

00:14:49   Happy coding.