Switching from the Mac to the PC – Why and How

As I recently mentioned in another post, I’ve just switched back to Windows as my primary operating system after years of using Mac OSX. The reason for this wasn’t because I chose it, but because my wonderful Macbook died after years of hard use and poor care. I loved it dearly, and I must say that it was the best machine I ever bought. I often took it with me when I left the house and I used it pretty much as my primary machine for years. At the same time, I also had this PC (the one I’m writing from) running a dual boot Hackintosh/Vista configuration. I only used Vista for gaming and the occasional Windows program, so most of my time was spent on the Hackintosh setup running OSX. I managed to mess this up recently and ended up having to rebuild the system. Rather than set it back up the way it was, I decided to give Windows 7 a try.

At first, I found switching quite painful, but after having several days to get used to it, I have to acknowledge that Microsoft has finally produced a decent OS again. I find the taskbar a huge improvement and the new window docking system is fantastic, especially coupled with use of the hotkeys. It goes a long way in making up for historical lacks in productivity features on Windows, and it makes switching applications, bringing them up side by side, maximizing and minimizing them all very intuitive and effective.

Added to that is the fact that the new look of Windows 7 with aero is quite beautiful in its own way, though I wouldn’t say it goes so far as to come close to OSX. Nevertheless, the themes feature is nice, as is the ability to dock items to the taskbar and control the colors/tints of the translucent areas of the aero interface.

However, there are certain features and programs which I still find lacking. One of these is stacks in OSX. Fortunately, there is something which comes close to dealing with this. Alastria Software has produced something called 7stacks which operates in much the same way as stacks. You essentially just create a shortcut with the software on your desktop, and then pin that shortcut onto your taskbar. What you get as a result which operates and looks very similar to the stacks you would get as part of OSX. At the moment, the software is free. It is in beta, however, and most of the other software on their site seems to involve charges so I wouldn’t be surprised if they went to a commercial system in the future.

Another feature I really missed from OSX was the popular free app, Quicksilver. While it was possible to get by without it by using Spotlight, it never worked as well and as intuitively as Quicksilver did, and didn’t have all of the extra plugins. The closest thing I’ve found to Quicksilver for Windows is an app called Launchy. It works in basically the same way as Quicksilver, and you can customize your hotkeys. Launchy also supports plugins and different skins, making it both a useful and beautiful app to use. It’s definitely a must have.

For the Spaces/Esposé experience, there are a few choices. Switcher and iEx are free apps which mimic these sorts of features, but there are also some commercial packages such as AnthaBounce (formerly Winplosion) which aren’t horribly expensive. Personally, I’d go with Switcher if you need this sort of functionality. You can change the behavior and style of windows, set different hotkeys or screen areas for activation, and it really does work very well.

For more must-have Windows apps to make your life more bearable, you should check out my post on My Top 25 Must-Have Free Windows Apps. I’ve written it from the standpoint of having just switched, so it should be useful for you. Other than that, stay tuned for more tips as they come to me.

A more productive Python learning experience

I’ve recently decided that I’ve wasted a large portion of my working life not teaching myself things and learning new skills. This is all too evident when faced with a difficult job market like we’re facing at the moment. As someone with primarily Microsoft experience and having worked mainly in that area and with the software and hardware systems which are common to the US military, I find that I’m often facing a skills gap when trying to apply for jobs in the open market. I left the US Air Force in December of 2007 and worked as a web developer and Linux/BSD server admin for a while and during that time I realized more than anything else that I didn’t know enough and needed to learn more. My goal overall is not to be a developer, though I am interested in doing work of that nature to some extent. Since I enjoy writing but can’t immediately make the jump from IT, my short term goal would be to understand current technology and development enough to be able to write about it with authority in something like technical writing, which is more my style. I’ve dealt with technical writing and documentation some in the past, and I enjoy it.

That being said, I’m not exactly sure how to go about this process. I suppose the best way to write about topics is to understand them and in order to understand them you have to gain some practical real world knowledge of their working. This is where I come up against some problems. I want to be able to understand some of what modern programming is about. I’ve got some experience with HTML/CSS/PHP but I want to delve into something like Python. I hear a lot of good things about it so I decided recently that I was going to take it up. My problem is that I often find it difficult to learn programming languages and have failed several times to learn one or another in the past, due to not sticking with it in the long run. This time, I’d like to avoid that. Here is how I intend to do it:

Initially, I started reading some guides and tutorials on the internet, which is a great way to start learning without having to spend a whole lot of money on a big book. The problem with tutorials is that in order to do the stuff written in them, you’ve got to change windows. This means that you end up switching back and forth between your browser, PDF or text file and your terminal window, IDE, etc. I hate this. Yeah, it’s easy enough to switch on a Mac and I can do it pretty quickly, but I don’t want to have to do it at all, and I don’t always have my other monitor available for the task. Enter Learn Python.

Learn Python is a program which was imagined and implemented by Daniel Jalkut of Red Sweater Software. Essentially it is a shell window and a browser window smashed together. You can have your shell and browser panes top to bottom or left to right according to your preference, and when you close the program, it saves the URL so that when you open the program again you can continue your tutorial where you left off. It brings a level of productivity to the learning process which I didn’t have before and I think it’s great. If you’re thinking of learning a programming language or just want to gain better understanding of the shell, etc. it is a great way to view tutorials on any subject and input commands to replicate the results. I personally wanted to use Python 3.0 instead of the default version which comes with OSX so I installed it and changed the Localizable.strings file (Show Package Contents > Contents > Resources > English.lproj) to read:

"/usr/bin/python" = "/Library/Frameworks/Python.framework/Versions/3.0/bin/python3.0";

Another great resource I’ve found for learning Python is the site ShowMeDo.com, which has learning paths and screencasts from very beginner levels to more intermediate and advances lessons later on. If you follow the learning paths, the lessons come with prerequisite lessons you should view before you do others and it really starts you off with a fresh (or refreshed) base of knowledge. This includes various linux command line knowledge and using tools such as subversion for source code version control. This method of learning is great for visual and auditory learners, and you can follow along or pause the video if you need a bit more time. It’s definitely worth checking out if you’re trying to learn. They also have paths for Java, Ruby, C and web frameworks like Django.

Lastly, I’ll just list some of the better beginner guides out there for Python. I’m by no means an expert on the subject and I do have a long IT background but I’ve approached this learning process as if I knew nothing at all, so if you follow what I’m following you should be able to pick it up in time, probably faster than I can. As I said, I don’t really aim to be a developer. I want to write about this stuff. I think I’m fairly good at explaining things in writing, but you tell me. If anyone out there has any advice on pursuing the noble path of technical writing, let me know. Anyway, here are the guides.

A Byte of Python
Dive Into Python
The Python Tutorial
Non-Programmer’s Tutorial for Python
Introduction to Programming using Python

Learning to Program
One Day of IDLE toying