“… and he rocks.”
I have been a fan of virtual desktops since I first used them in 1999 via a Windows application called Perfect Screens. Multiple desktops made immediate sense to me and I haven’t been without them since that first foray.
The Windows-based Perfect Screens allowed you to bind applications to certain desktops or set an application to be visible on all desktops. After some initial experimentation I settled on four desktops, one each for mail/chat, browsing, Word/Excel, and coding. With hot keys setup to allow using the keyboard to jump from desktop to desktop I was in nerd heaven.
In 2002 when I switched to Macintosh computers and Mac OS X, I hunted around for a suitable equivelent to Perfect Screens and found CodeTek VirtualDesktop. Since I was used to the idea of four desktops I continued with that setup on CodeTek.
With the introduction of Spaces in Mac OS X Leopard I stopped using CodeTek’s tool. Spaces was both better and worse than CodeTek. I liked that it was part of the operating system, but some of its behaviors were enough different than what I had become accostomed to that it was difficult to switch. Spaces allowed up to 16 desktops and for a time I had that many. Gradually I lowered the number to 9, which was the most I could easily access via the Control-# key board shortcut.
I kept the idea of delagating specific activities to specific spaces or desktops. Space 1 was email, 2 was browsing with my RSS reader and eventually Twitter added. Space 3 was calendaring and to-do lists. Space 4 was my primary terminal console desktop. Spaces 5 through 9 were used as scratch pads. When ever I wanted to open a new instance of and IDE or start an activity that would have multiple windows open, I’d grab an open desktop and start.
Mac OS X Lion reworked Spaces into what is now called Mission Control. Gone is the grid-like arrangment of desktops, instead they are just lined up in a row. Added is the idea of full-screen applications. These occupy their own space or desktop. At first I was resistant to the idea of a full screen application but I have grown to like them, particularly for email, iTunes, and now Xcode. Lion imported my Spaces and I continued to use them as before. With Mail now a full screen app desktop 1 was empty and became my primary terminal console desktop.
One of the annoyances of Apple’s implementation of Spaces is how multiple instances of the same application are managed. If you have open two separate copies of your browser, and you click a link in your Twitter application or RSS feed reader it will open in the browser instance that was most recently active. Often I find this not to be the one I wanted. The browser in Space 2 is my primary all-purpose browser. Usually a second instance of the browser was open for a development project and the only tabs present were for that project. Having random links from Twitter or RSS open there was not what I wanted.
Creating multiple Terminal consoles is also an issue with Spaces. If you had a Terminal open in Space 1 and one in Space 4, say, and you Cmd-tab to select a Terminal you would land on the most recently used one. Which often as not was not the one you wanted. There is no way to create a new Terminal window in the current space if one is open in any other space.
These are minor annoyances but annoyances still. One of my co-workers doesn’t use virtual desktops. He has all of his applications open on a single space. By using Exposé and Cmd-Tab he switches back and forth between applications. By not having multiple desktops he inadvertantly avoids some of my grumbles. So yesterday I closed all but one space forcing all my applications onto the same destop. I still have Mail, iTunes, and Xcode as full screen apps. And I would run iPhoto that way too, where that an option. The biggest difference is the amount of clutter on my desktop now. After years of having just one or two apps displayed at a time having 13 apps, some with multiple instances open, all on the same desktop is jarring. Only time will tell if I grow to like this new arrangment. I don’t know if I’ll tend to have just a single instance of my browser running thus avoiding the eeny-meeny problem of which will focus. If nothing else having something different will force me to learn new habits and learning is always good.
I’m one of those people who doesn’t turn anything off when I fly. I do set my phone to “airplane” mode, mostly so it doesn’t make any noise that would get me in dutch with the flight attendents. No electronics until 10000 feet is a silly rule. But if that’s the price we have to pay to not have cellphone call usage during a flight, I’ll gladly pay it.
When you create a new project in Xcode the generated files all include a bit of copyright information for you. There are two places Xcode looks to gather the company information used: your address book entry, and the Xcode plist. If a company name is found in your address card entry that name is used. If no name is present, Xcode creates a new dict entry in the plist and fills it with “My Company Name” for you. If both entries are present the plist entry wins.
To see what may (or may not) be in your plist run this defaults read command:
defaults read com.apple.Xcode PBXCustomTemplateMacroDefinitions -dict ORGANIZATIONNAMEIf there isn’t an entry for ORGANIZATIONNAME you’ll get an error, otherwise you’ll see the current value.
To set ORGANIZATIONNAME to a different value run this defaults write command:
defaults write com.apple.Xcode PBXCustomTemplateMacroDefinitions -dict ORGANIZATIONNAME "your value here"Rerunning the read command now should show you the new value for ORGANIZATIONNAME.
The information for this posting cam from this Apple Developer forum discussion.
Smile. You’re on candid camera.
Heck, these are good for any presidential candidate.
Excellent poem that points out some absurdities in the English language.
Thirty years ago when I started programming professionally, online programming meant CICS on a mainframe somewhere. I worked with CICS and IMS for the first few years of my career as a COBOL programmer. I also dabbled a bit with an early 4GL called Nomad. What distinguished these early applications was an utter lack of graphical interface. Everything was text based. Usually the bottom two lines of the terminal display (which may have had only 24 or maybe 40 lines total) was devoted to a legend that told the user which function key performed what activity.
And we walked uphill both ways to the raised-floor, Halon fire-suppressed machine rooms to run our programs too.
In the early 1990s I did a tiny bit of client-server application development using PowerBuilder 3. On my own I toyed around with [VisualBasic](http://en.wikipedia.org/wiki/Visual_Basic “VisualBasic) 1.0. VB was the first development platform I bought for my self to use.
In 1996 I started working with a distributed object-oriented platform called Forte. In 1999 Forte was purchased Sun Microsystems. The power of Forte, and its language, TOOL, was having a complete end-to-end solution. You wrote serve components and client applications in the same IDE, and they communicated through Forte’s middleware. What doomed Forte was its expense and that it was proprietary.
Both PowerBuilder and Forte produced Windows applications, client-server applications that ran on the end-users computer and communicated to backend processes over the network. A graphical tool was employed to build these applications, one that allowed you to position various UI elements on the screen and then wire them to functions.
Creating the interface was something tangible in a way. You assembled windows from component parts. There were buttons and drop-down lists and multi-select lists, radio buttons and check boxes, text areas and labels.
Starting in about 2004 I began to work exclusively with Java-based systems, and HTML applications. While Java the language has great similarity to TOOL, creating applications with HTML is nothing at all like PowerBuilder or Forte. CSS and Javascript have come a tremendous way - in the hands of skilled people wonderful interfaces can be realized. Conceiving the interface and figuring out how to conjure it up from HTML and CSS and Javascript is an artform.
I am moderately capable at building small webpages. This site has largely been handcrafted by yours truly. And I have built and maintain Sibylle’s piano completely by hand. Creating true web applications is something I’ve never done, either professionally or personally.
Today I think I figured out one reason why I’ve never had the drive to build web applications. The process lacks the tangibility that creating client-server apps had. In the end the web app can look and act like a native application, but getting there is a vastly different process.
In the last week or so I’ve been playing around with iOS and I am loving every minute of it. This afternoon, while watching a pair of co-workers discuss visual changes to a web app, I had an epiphany: I like iOS development because it has the same tangibility as Forte had. You build your applications interface with buttons, and labels and so on.
In a way I feel like working iOS is like coming home. Conceptually, stateless applications haven’t changed much in 30 years. The paradigms I used in CICS and IMS worked in client-server applications, just as they work in web applications and in native iOS or Android applications. But the added immediacy of building the interface in iOS adds something I’ve missed in development work for a long, long time.
Climbing has always fascinated me. The overhang on this ascent is wicked.