Tuesday, January 17, 2012

Ský Development Conference (Links in Icelandic)

Last week I had the pleasure of presenting at the annual Ský Development Conference (Hugbúnaðarrástefna Ský) in Reykjavík, Iceland.  This year's conference theme was "The Work Environment of Software Developers".   The conference offered presentations on the following topics: Programming Languages, Quality Assurance, Issue Tracking, User Interfaces, Project Management, Databases and Data Warehousing.  My presentation was under the Project Management topic, titled "Practical Tips for Software Development Leads".  In it I tried to provide some practical tips to team leads and software development managers.  Suggestions on such things as how to get the most out of your team, how to manage your time, how to use programming to help with your managerial duties, how to achieve continuous improvement and how to motivate developers.  The conference was all in Icleandic, so unfortunately so are the slides.  They are available on the conference web site and on Slideshare (mine).

I especially liked Ólafur Gauti Guðmundsson's presentation on the Play framework, which I have been playing with a bit and Stefán Baxter's presentation on NoSQL databases.  Margrét Dóra also had a great talk on user interfaces, reminding us that "stupid users" are really our own fault, a result of poor user interface design.  And Birna Íris Jónsdóttir had a good QA talk titled "It works on my machine!" where she took some shots at us programmers for all the lame excuses we provide when our stuff breaks! :)  All in all a fun day and an enjoyable conference.

Sunday, January 15, 2012

Quickly Launch Remote Desktop Connections on Mac OS X

At work and at home I have a few PC servers that I frequently need to remote connect to. My Mac launcher application of choice is Alfred. I wanted to be able to use it to instantly launch connections to those servers without needing to type in anything but the first few letters of the server name. Getting this setup on Mac OS X is a bit of a hassle, but here is basically what I do:
  • I use the Remote Desktop Connection Client for Mac to connect to the PC servers.
  • After installing the client and typing in the name of the server I want to connect to I go to preferences and customize the connection:
    • Under the Login tab I enter account information
    • Under the Display tab I specify my preferred remote desktop size
    • Sometimes I tweak some of the other settings, but those two are of main importance
  • Then I go to File and Save As... and save this connection as a .rdp file on my Mac
  • Now I can double-click on the file to be instantly connected to the remote server
  • Problem is that application launchers don't really know how to run .rdp files, so I want to take it a step further and create a runnable Mac Application for each .rdp file.  To do this I use an open source program called Platypus, that a coworker of mine told me about.  
  • Unfortunately Platypus does not know how to run .rdp files, but it does know how create Applications that launch shell scripts.  Hence, I create a simple shell script to launch my remote desktop connection.  E.g. if I want to launch SteiniServer.rdp, then my script would look like this:

    open "/Applications/Remote Desktop Connection.app" ~/Documents/RDC/SteiniServer.rdp

  • Then I save the script on my computer in a file called rdcSteiniServer.sh
  • Now I open Platypus and use it to create a Mac Application with the following settings:
(If you want to add a custom icon for your application you can right-click the image and choose Select Image File...)
The only thing that really matters is selecting Script Type Shell and the path to your script.
  • Then I hit Create and select:

  • Now I am ready to launch my remote connection with Alfred, which I do like this:
  • Basically, I activate Alfred (Ctrl-A for me) and as soon as I have typed in RDC it finds the RDC Steini Server Application and when I hit enter I am automatically logged into the remote PC server without having to type in anything else.

    If you have a simpler way of achieving the same I am eager to hear :-)