Install software to make software that makes software

I’m watching my terminal as Homebrew installs during my latest episode of yak-shaving. I feel a strange urge to explore the Homebrew site, a step that has nothing to do with the reason why I’m here. Hi, I’m Cliff. You’re here as the result of an unfortunate chain of events. You probably started to wash laundry when you realized you were out of detergent. On your way out the door to get detergent you noticed the handle was slightly loose and decided it needed to be tightened. Somewhere between looking for the screwdriver to fix the door something prompted you to check your email, before long you found yourself on Facebook where my post caught your eye. That’s one possible reason why you’re here. I’m here because some four footed hoofed creature with too much hair demanded my attention.

Hairy four legged beast demanding attention
Hairy four legged beast demanding attention

Extreme Yak Shaving
Have you ever found yourself downloading an OpenGL & SDL framework while watching a tutorial when what you really needed to do was install a missing JDBC driver? Today I found myself in a similar situation where I merely wanted to change a dependency in my Android project. That got me thinking about dependency management on iOS, and hey I just learned about this cool project called CocoaPods. To install Cocoa Pods I need Ruby. I can’t install Ruby the old school way, I’m downloading RVM! RVM’s install directions use the gpg command which isn’t available on Mac OS X. I need Mac Ports or Homebrew to install the Linux package. NO!!! I refuse to get side tracked with Homebrew! I’ll skip the gpg step and just use the curl command to direct install without checking security signatures!! The RVM install completes and while I install Ruby I notice the shell is going out to Homebrew land to automate the install. Gosh, I haven’t looked into Homebrew in over a year… I should check out their webpage to see what’s new. It’s always good to get the latest scoop on long living tech like Homebrew. Yak shaving is the work of doing meta work in order to do actual work. Extreme yak shaving is the distraction that results from work of doing the meta work.

I am installing software (Homebrew) to install software (ruby) to install software (Cocoa Pods) which I’ll use to install my iOS software dependencies. I’m not even getting into the learning curve associated with this major distraction. Am I losing it? (Don’t act like it’s just me! Some of you are waiting on a Unity or gaming engine download right now because you ran out of toilet paper!) How do we get some many layers of abstraction between us and the work we actually intend to do? I’m thinking eventually things will swing in the other direction as they always do. Instead of using systems to manage the install of managers that install frameworks we use to build systems (which ultimately manage the install of managers that install…) we will obsess over slim code and vanilla iOS/Java. Languages like Go are already becoming mainstream I’m waiting for the idea to spill into mobile which has currently gone the way of EJB. Until then I’ll keep watching my progress bar fill while the next software installing software installs.

Where does Xcode download and install its simulators?

I need to fire off a quick tip before I go to bed tonight. I was stuck on a bad build of an XCode Simulator and I wanted to reinstall it. (Sometimes the downloaded sim is corrupted. This is common in the beta/pre-release builds of XCode.) I had downloaded and installed both 8.4 and 8.1 simulators. Hi, I’m Cliff. You’re here reading this because you suck at uninstalling Simulators in Xcode.

I had the worst luck trying to remove what I’d downloaded and installed. First I tried drilling into the folder to find and remove the downloaded simulator here:
However, after restarting XCode it still “thought” the simulators were downloaded. I even tried deleting the cache folder here:
But I had the same results after restarting. The actual path to the downloaded and installed Simulators (since version 6.x) is:

Anacron squeezing the life outta my Mac?

So I download Anacron because I’m sick of manually launching Mac Janitor to run daily, weekly, and monthly stuff right? Ever since then I start having all kinds of crazy issues. I loose settings and preferences left and right. It started with Quicksilver spontaneously quitting and forgetting what it was supposed to look like when it reopened. Then I noticed Parallels started looking elsewhere for my WinXP VM install. (I have it under ~/Library/Parallels which may or may not be the default.) All of the sudden RDC can’t remember the defaults for talking to my Dell. It’s crazy and it all started when I installed Anacron. The bad thing is I don’t know how to uninstall software on a Mac yet. In windows you have add/remove programs, in Mepis/Ubuntu I could always rely on Synaptic, on a Mac you’re supposed to be able to just delete the .app folder but what about software that installs via an installer? Has anyone else had similar issues with Anacron? Is it just me???



What is it? It’s a tool, much like VNC, GotoMyPC, FogCreek Co-Pilot, etc. which allows you to remote control a computer of your choice. The difference is RDC is a Microsoft product using Microsoft proprietary protocols for remoting. They offer a version for Mac users too. So if you own a Macintosh and need to do something like, oh, I dunno, control a Windows computer you can do so. I use RDC. I use it because I’m allergic to Chicken of the VNC. Truth be told, VNC from Mac to Windows sux! You can’t get your work done, your keys are all incorrectly mapped, there’s little option for customization, it’s terrible! With RDC you have most your your keys mapped correctly. There’s the Windows key, Alt+Tab works correctly, Ctrl copy/paste works, multi-select, just about everything except an insert key. (If you’re on a MacBook Pro you have to remember the trick with the fn+delete to get a true delete instead of a backspace and honestly why don’t the y just stick the extra button on the Mac keyboard? Are they so aesthetically overachieving that they’re afraid the general user community will be like, “Oh no! there’s two keys for deleting characters! I’m gonna haffta grow an extra finger to operate it!” Really would one more [two more, throw an insert key in there too] key ruin the shape of the keyboard or something?)

So yes, I use RDC because it maps my keys correctly. The other day I started RDC. I got a polite message informing me that my beta copy was outdated and suggesting that I upgrade. In my business one kinda understands the underpinnings of such a dialog, having worked on at least two auto-versioning systems just completing one recently it comes as no surprise that a piece of software may find the need to maintain itself. So I elect to upgrade. Now lets talk about auto versioning for a minute. I feel it should be as unintrusive as possible. I’ve seen at least two other good examples of such unobtrusiveness on the Mac. Adium occasionally updates itself and the whole process always runs smoothly. It fetches the latest version from the web, unpacks and installs itself, and restarts with little interruption. ZipEG is another such auto-versioning tool that causes little disruption. The tool I just wrote is also similar, however I’ve not figured out how to trigger a restart from J2ME and I fight with the unpredictability of the device that sometimes chooses to allow me to run an app after installing and sometimes forces a reboot. At any rate, that’s what auto-versioning should work like. Ask once, do the update, restart, and get the [insert four letter explitive here] outta my way.

Microsoft appears to choose extra dialogs bearing its icon over simplicity whenever possible. Let me back up a minute and explain the RDC upgrade process. The update warning appears giving you the option of upgrading or continuing. (Thank God for options, you’ll see why later.) You click “Download Latest Version” and instead of performing the upgrade it points your browser to the site where you can download and install the latest version. Not too bad, just extra steps for end users. Then you download and install. When I reopen my .rdc file (this is the file containing all of the settings, user name, password, etc. for my remote session) it seems to be associated with the older version of RDC because I continue to get the out of date dialog. I delete the older version which was saved in a non-standard sub-folder under “Applications”, I update my QuickSilver index because I use QuickSilver for just about everything short of filing my taxes though I think there is a 1040 and a 1040a QuickSilver plugin available, and I launch RDC again this time directly and still get the prompt. I delete all installs of RDC and reinstall from the downloaded .dmg file. (On the Mac a .dmg is kinda like an archive you open them and sometimes they include installers.) Same dialog. After accepting the reality of the dialog that is not going away, I click the continue button. Lo and behold I am patronized by another dialog telling me that RDC cannot verify the identity of the computer I want to connect to. Apparently, according to the dialog box, this problem can occur if the remote computer is running a version of Windows that is earlier than Windows Vista. Once again I am given the option of connecting anyway as if to say, “are you sure you want to connect to a Windows XP device? Wouldn’t you rather click no then download the latest version of Windows Vista and install before you continue? Thank you for using Windows products.”

Now I always get two dialog prompts whenever I launch RDC. The first one reminds me that I’m still using a beta copy and I should update to a release version that does not appear on the web site. The second one reminds me of how foolish I am for daring to still using a legacy Windows XP device of a remote connection. I use to be able to walk right into my Dell XP box from QuickSilver by keying RDC aqnd hitting enter twice, once to laucnh and once to bypass the standard AOL notice dialog that pops up on WinXP screen login. If ya’ got a Mac and your getting ill vibes from RDC hit me off with some lingo below.

My empire for an INSERT KEY!!!

I had almost gotten over my loss of an insert key when I switched to OS X. While Windows/Idea works magic all over with Alt+Insert Ctrl+N seemed to fit the bill on the Mac. Several months went by with my only feeling occasionally bother by no insert key. Somtimes I needed block copy while running Idea over a remote windows session. A quick trip to the edit menu was only mildly painful during these times. Today… today I’m trying to push a Tomcat bundle to a remote Linux server with no UI. I get the bundle over there and decide to disable the Tomcat manager in conf/tomcat-users.xml. I pull up vi because it’s the only Linux text editor I’ve taken any serious time to somewhat learn. (By that I mean I know how to insert characters, quit, and quit while writing changes to disk, nothing more.) Ah… a remote vi session from iTerm on my Mac, how nice! Now lets change the document and… hey!!! WTF???!! How do I get into insert mode???!!!


I’m playing with Xara on my Macbook (over Parallels) because well, because I have an unofficial requirement to fulfill in our project. I put together an animation that I can’t speak about because none of this stuff is released. Half of the stuff I’ve been putting in the project will likely never see the light of day. So anyway, what started as a quick and dirty image edit session in Xara of the Christmas holiday turned into what I hope will turn into the “new thing” at MapQuest. I get the whole thing put together and find out that I’m waaaay off the requirements spec. Ya’ see I’m doing this splash screen thing and I didn’t know they had a spec. I looked for the spec but didn’t find it. Getting to the point (’nuff babbling) I reviewed the spec and decided that I could do something really similar with Xara and have it finished before day’s end. And that I did. I mocked up a quick animated sequence around what the official requirements doc illustrated and finished just before quitting time. I was a little late so instead of pausing the VM like I normally do, and quitting I decide to shut the clamshell and pack it up. I knew it was a bad idea but I had to get to day care to get my youngest and it was getting late.

Picked up the little one and sped home to give her a snack then it was off to Gymnastics class. I got the little one changed and into class when I went upstairs on the balcony and opened my Macbook. (I usually work on the Mac while she’s in class because they have WiFi here.) I get the spinning wheel of death. Sometimes I can work around it by putting it back into sleep mode and waking it up again. I wasn’t that lucky this time. 3 minutes turned into 10 minutes turned into 15 minutes before I had it and started pushing all kinds of reboot and power off sequences. The danged thing finally reboots OS X and I cross my fingers as I go to launch Parallels. Windows of course needs to boot instead of resuming the earlier session and I begin to get worried. When Windows finally starts I go to open up my project again to see all of my work gone. Either I never hit the save button or my saved changes didn’t make it to disk prior to my closing the clamshell. (I write most of my files to a network drive mapped to a folder on my Mac through Parallels.) The desparation I felt when I saw all of 2hrs work lost. I really tried to be pixel perfect in my revisions! I’ve just been wrought with not only random laptop freezes, but Blackberry crashes and oddities, and desktop drama. Maybe it’s just me. When I use a device I push it to the limits. I don’t just settle with the default functionality behind the mfg software. I gotta go into menu options, tweak and customize. I gotta run and Idea in OS X while I launch Eclipse in Parallels, and screen record with iShowU in one of my dual screens while I invoke a Maven multi-project build over remote desktop and config Outlook filters on the same machine. I gotta do it all, and have it all done in tandem.

when I crash, I crash hard. And boy does it hurt. You’d think I would have learned by now but I haven’t. I can’t be satisfied unless I have all the cool plugins loaded. I’m not happy unless I have groovy automation sending remote commands through a Linux proxy controlling a remote Tomcat instance secured by a firewall while getting hot deployment confirmation streamed as an audio feed using a Text To Speech engine. I have to have this same confirmation played back via WiFi on my iPhone. By the way, does anybody know how to recover data from a Parallels crash?

Slowsilver- Heads up for Mac lovers

If you like your Mac like I do and you spend a fair amount of time doing things with it and noticed the mouse or trackpoint thing slows you down then you’ve probably run across an app called QuickSilver. Now assuming you’ve used QuickSilver for, oh let’s say a month or so and you’re the type that needs to read up on the customization options on things like remote controls, microwave ovens, and television sets then you probably found your way into QuickSilver’s catalog system. That’s where today’s tip begins. For those who don’t venture outside of the stock packaging on the products they use I’ll explain a bit. QuickSilver is an application that allows you to find things on your Macintosh computer like the Microsoft Excel program, that Flickr multi-file upload tool, the song you couldn’t remember the name of but found and downloaded from Rhapsody and then forgot the name of, or that power point presentation tucked away in your “Documents” folder somewhere. You can usually find these lost articles by typing the first couple characters of a name, or some acronym of the file. If you don’t use a Mac and use Windows instead there’s another toy called Launchy that works the same though not as cool as QuickSilver. (Also if you run Linux you can look at Katapult for KDE which is almost as cool as QuickSilver but missing some features.)

At any rate, assume you have QuickSilver and you’ve managed to dive into the catalog and decided you want to index some other folders. In my case I wanted to use QuickSilver to launch GroovyConsole. What I did was add the unzipped groovy folder to the catalog and hit the refresh/re-index button. I then brought up QuickSilver (Ctrl+Apple+Space, because the default key mapping collided with auto-complete in Idea) and typed “groov”. That brought up a long list of everything under the Groovy distribution. I arrowed down about 57 times until I found the groovyConsole shell script and hit enter. “Off da’ chains!”, I thought as I began to get my groove on within my favorite scripting environment. Later on I decided to bring up QuickSilver to find the Groovy In Action pdf lingering somewhere on my hard drive and I dunno where because QuickSilver makes me so lazy that I never care to remember the locations of where I save things. I hit Ctrl+Apple+Space and nothing gives. I try it a few more times then try various other key combos thinking I was confusing my hot keys again. (I tend to use several apps that all seem to prefer the same Ctrl+space or Command+space combo) I then right click the QuickSilver icon from the OSX bar and tell it to quit. QuickSilver laughs at me refusing to shut down. Then it dawns on me. QuickSilver must be blocked on the process running my GroovyConsole! I quit GroovyConsole and then down goes QuickSilver with a prompt that it quit unexpectedly and an option to restart. Lesson to be learned… using QuickSilver to launch shell scripts could cause undesirable behavior. Better stated, leave the factory setting on all of your software. Otherwise said, leave well enough alone. Or just stop folling with configs and get your real work done…