Friday, February 27, 2009

Firefox vs. Safari

Firefox has been my primary browser of choice for about four and half years now. Before I found Firefox I was using Internet Explorer. I have been using Opera sporadically as a backup browser for about three years. When Apple released Safari for Windows, I used it also for backup browser duty. When I bought my Mac, Opera took a back seat role to Safari as my main backup browser because Safari seems to integrate with the rest of the system a bit better. I still use them both however. Right now I am very eagerly anticipated the release of Chrome for OS X so I can throw it into the mix as well.

This week Apple released a beta of Safari 4. First impression: it's nice. After playing around with it for a few days, splitting my browser usage between it and Firefox, I have come up with some solid impressions about it. For the record, my Firefox version is 3.0.6 and I'm running the Safari 4 public beta (5528.16).

Tabs:
Tabbed browser has been all the rage for several years now and with mighty good reason. When I first discovered Firefox and how it had tabs, it changed the way I used the web. Now tabs are common place and each browser is searching for the most efficient way to use them. With Firefox, there is the title bar, address bar, bookmarks bar, and the tabs bar. Safari has combined the title bar with the address bar, making for a slimmer window header and allowing for the window to devote more space to the web page. This is a good thing that was first seen by Chrome and I can only hope that the upcoming Firefox 3.1 release will include this design modification. Since the title bar and tabs bar have been merged, clicking and dragging a tab will drag the entire window. Tabs are reordered by grabbing the upper right corner of the tab. Tabs can also be ripped off in their own window or to join new windows in this manner. This is less convenient than being able to click and drag anywhere on a tab to rearrange it. Since I so rarely (if ever) want to move my browser window, I would rather dragging a tab moves it and moving the entire window was more difficult to prevent it from accidentally happening.

A shortcoming I've always felt about Safari is that it will open new windows of itself when you click certain links. Firefox, instead, opens these links in new tabs. I have always felt that the principle idea of tabs is to have fewer windows and when links for the browser to open a new window rather than a new tab it defeats this idea. Safari 4 has this same shortcoming but yesterday I did find a solution to this issue for Macs. Typing "defaults write com.apple.Safari TargetedClicksCreateTabs -bool true" at the Terminal will cause these links to open in new tabs instead of new windows.

When new tabs are opening, one of the options available to users now is to show a page of "top sites". This is a grid of thumbnail representations of the most popular sites in your recent browsing history similar to Opera's "Speed Dial" feature. There is an extension to add this functionality to Firefox but it never seemed to be tremendously useful to me because it requires using the mouse and I prefer to keep my fingers locked at the keyboard as much as humanly possible.

Shortcuts:
Firefox's keyboard shortcuts are much nicer (IMHO) than Safari's. I have been fanatical about keyboard shortcuts for as long as I can remember and I love Firefox's. For example, in Firefox, jumping to the search box uses the command+k shortcut. In Safari, this is accomplished by alt+command+f, usable, but less convenient. Firefox also has the option to start searching the text on a page immediately when you start typing. I LOVE this feature. Safari lacks this. You have to type command+f to start searching the page. In Firefox to get the full functionality you have to use the same shortcut, but for just a simple quick search not having to use that shortcut is wonderful.

Downloads:
Firefox has the option to always ask where to save files that are to be downloaded. Safari always wants to download to a preset location that cannot be set per each individual download. I have always been more a fan of downloading a file to its final resting place and then opening it from the download menu. Safari wants to save to a preset location, by default the Downloads folder, thus forcing an extra step to move the file later on. Safari also has an option to automatically open what it calls "safe" files after downloading. This includes of list of file types including most formats that are not executable. While this is usually okay, it still represents a tremendous security risk and so is something I fundamentally have an issue with.

Open Source and Extensibility:
Firefox is free and open source software so it is available for every platform. Safari is closed source proprietary software and so is available for on those platforms Apple approves, Windows and OS X. Firefox is infinitely extensible by fans and developers to add all manner of wondrous tweaks so your Firefox installation can be uniquely yours and suit your needs as perfectly as possible. There are only a handful of plugins available for Safari.

The new Safari looks great so far and I haven't had a single stability issue with it. It makes for a very nice secondary browser but I will stick with my much loved incumbent Firefox for the foreseeable future. I like it's feature set more even if it isn't quite as fast as the new Safari. In my experience, speed differences are more a matter of connection speed than browser rendering speed anyway. Even more, Firefox is open source and I want to continue supporting their incredible efforts. I can't wait for the release of Firefox 3.1.

Tuesday, February 24, 2009

People practice poor password security

Read an interesting article tonight about password security. Turns out most people use the same one or two passwords everywhere they go online. That means if someone's password is compromised the attacker has access to on average about half of their digital accounts. Even if a user is extremely careful to keep his or her passwords a secret, consider this: some on-line services, like email and anything involving money, use encryption to protect passwords between your web browser and their server. But some services, like Facebook, do not use encryption. Just because the connection is secure at one web site and you keep your passwords a secret doesn't mean you are protected if you use the same password at Facebook that you use for your on-line banking. An committed attacker can easily sniff out passwords used at sites like Facebook and can identify connections at secure websites. Usernames are typically easy to guess so once an attacker has a password he or she has essentially has free range to about half of your digital accounts. This is why I use KeePass.

Remove excess languages from OS X

I stumbled upon a neat little tool a few days ago called Monolingual. This free and open source program will free up hard drive space on computers running Mac OS X by removing unneeded language files. Macs come with all of the international language packs installed and code for all of the different supported hardware architectures. OS X 10.5 is designed to run on multiple architectures, most notably PowerPC, Intel x86 and x86-64. Because of this software developers have created universal application that include all the code to run on a system installed on any of those architectures. The downside to this is that there is a lot of unused code sitting around on the hard drive just taking up space.

Monolingual will remove all of this unnecessary code and any of the additional installed languages that are unwanted. Monolingual has three tabs: 1) Languages, 2) Input Menu, and 3) Architectures. In the Language menu, be wary that US English is checked for removal by default. That would be bad because everything removed can only be replaced by reinstalling the operating system. By removed all the unnecessary languages from my computer, Monolingual was able to free up just over 6GB of space.

Saturday, February 21, 2009

LAMP and Java installation in Ubuntu

I installed some more application on my Ubuntu server today. Really makes me appreciate how easy it is to install things using apt-get. First I installed JRE with "sudo apt-get install sun-java6-jre". Next was JDK using "sudo apt-get install sun-java6-jdk". I installed these because at some point I may want to work with Java on that machine, but then again, maybe not. I have options though.

Next I wanted to install my LAMP stack. Apache gets installed by "sudo apt-get install apache2". A quick test to make sure it works by going to "http://192.168.x.x/" and it was onto the next item. PHP is installed by "sudo apt-get install php5 libapache2-mod-php5". Before being able to test this Apache needs to be restarted with "sudo /etc/init.d/apache2 restart". To test it I sent over the PHP files I've been playing around with on my laptop using scp to the Apache server's root directory, located at "/var/www/". This was a two step process since my user account on the Ubuntu server doesn't have write permissions to the "/var/www" directory. So I first sent my folder of php files over using "scp ~/php/*.* myusername@ubuntu:~/Documents/php". Then I moved them using "sudo mv ~/Documents/php /var/www". Then I created a symbolic link to this directory from my home directory for easy access. PHP does, indeed, work on my Ubuntu machine now.

Next I installed MySQL using "sudo apt-get install mysql-server". Mid-install, I was prompted to enter a password for the MySQL root user. Next was a tricky part. I needed to edit the php.ini file so that MySQL will play with PHP5. Doing all of this over SSH, this meant command line text editing, something new to me. So I learned some thing about Vim today.

In Vim, rather than using the arrow keys to move around, letter keys can be used instead: h (left), j (down), k (up), and l (right). There are several ways to enter insert mode, a common way is using the i key. This inserts text to the left of the cursor. I used o, which will start a new line and then insert text to the left of cursor. The esc key will exit insert mode. Vim is case sensitive when it comes to keyboard shortcuts, and so makes use the shift key. Typing shift+; will make a colon appear at the bottom of the window with the cursor next to it. From there, a number a commands can be issued by typing specific characters and then hitting enter. Saving is accomplished by :w and :q will quit. A nice long list of Vim commands is available here.

Back to what I was doing. I typed "sudo vi /etc/php5/apache2/php.ini" to open the php.ini file in Vim. The line to add reads "extensions=mysql.so". I also inserted a comment above it to explain its purpose. Comments in this file are created by starting the line with "#". Apache needs to be restarted for the change to take effect: "sudo /etc/init.d/apache2 restart".

I'll play more with it later.

SSH and Ubuntu

So I installed Linux on one of my servers a few days ago. I went with Ubuntu 8.04 (aka Hardy Heron) instead of the most recent release 8.10 (aka Intrepid Ibex) because I've heard that there some stability issues with Intrepid and because Hardy is an LTS (long term support) release. I do have some hopes to make this into a real working LAMP server, but I installed the desktop version so I could have a GUI to play around with if I want to.

Today I wanted to SSH into my Ubuntu machine and it turns out that Ubuntu doesn't ship with SSH preinstalled, much to my suprise. Luckily, its a super simple install process. Less than 5 minutes of searching on Google provided me with this command: "sudo apt-get install openssh-server". And thats all there is to it, SSH is now running nicely on my Ubuntu machine.

But wait there's more, I just learned a fun new Terminal command for use with SSH. I knew that SSH gives you command line access to the server, and that SFTP uses SSH to transfer files much like an encrypted version of FTP. But what I didn't know how to do was transfer files using the command line. Enter SCP. Syntax for using scp is "scp [path to file] [username]@[server address]:[path to destination]". So when I wanted to transfer a tmp.txt file from the desktop of my laptop to the documents directory on my Ubuntu machine, I typed "scp ~/desktop/tmp.txt myusername@ubuntu:~/Desktop". Don't forget that Ubuntu's ext3 filesystem is case sensitive.

Friday, February 20, 2009

Learning PHP

So far this semester I don't have any really neat projects to work on for school and I seem to have a fair amount of free time on my hands. So I decided to start learning my way through the LAMP stack. I already have some familiarity with Linux from experimentation and my knowledge of SQL is pretty respectable. I have experience working with Access and Oracle and learning MySQL will be nice. The first thing to learn is PHP. I found a nice looking tutorial here and started working my way through it.

Before I could really begin, I configured my Mac for use with PHP and Apache. Both of these come bundled with OS X 10.5 but are not active my default. Apache is turned on by going through System Preferences to the sharing menu. Checking the box marked "Web Sharing" activates Apache, with the directory where it stores pages located at "/Library/Webserver/Documents". The local webserver is viewable at "http://localhost/". I created a new folder in here to store my PHP files and created a link to it from my Home directory using the commands from this post.

Activating PHP involved manually editing a config file. The file is located at "/etc/apache2/httpd.conf". This is a hidden system file so in order to find it you'd have to either show all hidden files or navigate directly to that folder using the "Go to Folder" command in Finder available from the Go menu or with the keyboard shortcut command+shift+G. To show all hidden files instead, there are two methods I have used in the past. First is the Terminal command "defaults write com.apple.finder AppleShowAllFiles -bool true". This is followed by the "KillAll Finder" command. This will restart Finder and all hidden files will be visible. To hide them again reuse the first command but swap "true" at the end for "false". The other option is a graphical program Houdini.

In the httpd.conf file, lines are commented out using the "#" character. Everything following this is considered a comment and ignored by the system. Uncommenting the line that reads "#LoadModule php5_module libexec/apache2/libphp5.so" by removing the "#" at the beginning will enable PHP.

Thursday, February 19, 2009

Symbolic links in Unix

I got an idea today from a Lifehacker post from a few days ago. The article is about how to create a symbolic link to a file or folder for use with Dropbox to get it to sync multiple folders. A symbolic link is a file that contains a reference to another file or folder. The idea of that Lifehacker post was to reference another folder and store the symbolic link in the Dropbox folder so the contents of the linked folder get synced as well. That's a really neat idea, but I did mine for a different reason.

Lately I've been doing a good bit of command line work with Java files on my Mac laptop. I keep these files stored in my deep, yet organized, directory structure. New Terminal sessions start in the Home folder. Rather than having to navigate to the directory where I'm storing my files, I created a symbolic link for that directory in my home directory. The link works through both Terminal and Finder.

Here's how it works:
type "ln -s [path to linked directory] [location of link]"

So if you have a directory located at "~/Documents/Recent/Code/Java/SweetProject" and you want a symbolic link to in your Home directory you would type "ln -s ~/Documents/Recent/Code/Java/SweetProject ~/". This would create a symbolic link called SweetProject in your Home directory. To navigate to that directory all you have to type now is "cd SweetProject". The link is visible in Finder and is renamable if you want to call it something different.

By default, the ln command creates a hard link to a file which appears in Finder as being an exact copy of that file but is actually only a link to it. The -s switch is what makes this a symbolic link which allows the link to refer to directories.

More on symbolic links.

Tuesday, February 17, 2009

New Windows XP Pro Virtual Machine

I've been virtualizing my Boot Camp partition for almost as long as I've had my Mac. Initially I used Parallels but switched to VMWare Fusion after a few weeks. My rationale behind this was that whether I opted to boot directly into Windows or virtualize, I would always be using the same workspace. This sounds great in practice, but it turns out that I would only rarely actually boot into Windows, and only rarely for class. The vast majority of the times I would boot into Windows it was because I wanted to play a game. Most of the time I used my Windows installation for anything other than gaming, I would be virtualizing.

There are some serious downsides to virtualizing my Boot Camp partition. The biggest one is that I have to boot and shutdown the partition every time I want to virtualize it. Virtual machines, on the other hand, can be suspended between uses which saves time on start up and shutdown. Also, VMWare can save snapshots of virtual machines so if something happens that royally screws up the operating system, you can revert back to an older snapshot.

I've been meaning for a while to rebuild my Windows installation so today I decided to put that on hold and setup a Windows virtual machine. The installation is very streamlined and VMWare Fusion takes care of the whole process. I told it which disk image to use for installation media and it identified my install disk as being Windows XP Pro. The next screen asks for a password to use and for the product key and that's all there is to it. The next time I had to provide any input what-so-ever to the virtual machine was to log in. Once I logged in, the VMWare Tools application automatically installed itself. It couldn't have been any easier.

I have decided to keep this installation as stripped down as possible. I will only install software that I either need or think I will need in the near future. Here is a list of what I installed:
  • Mozilla Firefox - favorite web browser for years
  • Google Chrome - backup web browser
  • Revo Uninstaller - Windows add/remove programs replacement utility that scans the harddrive for leftover files from uninstalled programs
  • Flash Player - so I can load web pages properly
  • Notepad++ - fantastic replacement for Notepad
  • Zone Alarm Free - excellent free firewall
  • Avast Home - excellent free anti-virus
  • Daemon Tools Lite - disk emulator
  • Java Development Kit - I've had at least one class where I have to program in Java every semester for two years now
  • MS Office 2007 - office suite
  • MS Visio 2007 - need this for class
  • 7-Zip - open source archive manager
  • Foxit Reader - super fast, tabbed replacement for Adobe Reader
I left out a bunch of what I would require to be critical Windows software for a desktop installation but this is really intended to only do things I am unable to do in OS X, plus a little bit more for flexibility. Now when I finally get around to rebuilding my Boot Camp partition I can do so with a different purpose in mind allowing for a less bloated installation and a smaller footprint.

Thursday, February 12, 2009

Scripting on a Mac

Today I was working on a homework assignment for a class on distributed technologies (programming with networks) and I had to do go through a multistep process to compile and run the server and client programs. So I figured it would be easier to write two scripts that would do the leg work for me. I used to do this on my Windows computer using batch files. I hadn't done this before on a Unix based machine so it took a little bit of research.

I opened up TextEdit since I was using my main text editor Smultron for the Java files I was working on and didn't want to mix them. The first line of my two scripts each looked like this: "#!/bin/bash". This will tell the system which shell to use. Unix has a bunch of different shell options (bash, tcsh, zsh, sh, csh, ksh). The default for OS X is bash and that is the one I decided to stick with. The second line of each of my scripts was a cd command to change directory. Sure, I could have eliminated this step by including a full path in the following lines or my moving my script to a different directory, but I wanted to place my scripts in the root of my home directory as that is the starting location when you open a new Terminal session.

In Unix, there are three basic file permissions, there is read (r), write (w), and execute (x). Default permissions for newly created files are rw-, meaning read and write only, but not executable. In order to change this so that my newly creates scripts were executable, I opened up Terminal and typed "chmod +x [script name]" (file extensions are not necessary when naming scripts, but make sure you include it if you gave your script one). Chmod stands for "change mode" and is used to change permissions on files and directories.

Once a script is executable, there are two ways to run them. Just opening the script from Finder will open the script with a new Terminal session and run it. Alternatively, the scripts can be run from an existing Terminal session. Since I was working with a console based Java program, I wanted to run them from Terminal. The Unix command to run an executable from the shell is "./[script name]".

Managing passwords with KeePass and KeePassX

When it comes to password protecting their digital lives, most people do a rather poor job. In my experience, the typical user will have a few passwords and some slight variations of them that they will use for just about all of their password needs. For a long time, I was like this too. This is a bad idea. In case you're not sure why, think about what would happen if one of your few passwords became compromised. How many accounts would that one password unlock? The correct answer should be one, but for most people, that answer is many.

A recent incident in which the job search website Monster.com was hacked illustrates how passwords can and do become compromised despite a user's efforts to keep their passwords safe Here is a link for the first incident, and here is the link about the most recent incident, and here is Monster's explanation of the incident.

Enter KeePass. KeePass is a free and open source encrypted password database. When you fire it up it prompts you to create a new database, which you can store wherever you like and name whatever you'd like. All KeePass databases have the .kdb file extension. Every time you open KeePass, it will auto-open the last opened database, a setting you can turn off if you want (but I love it). Each KeePass database is protected by a single master password that unlocks it. Now all you need to remember is one strong password for your KeePass database and you can store all the rest of your databases in there. The database is encrypted using AES, thus making you're password the weakest link in its security.

KeePass is a Windows only application, but there is a related project called KeePassX that has precompiled packages for Windows, OS X, and Linux. Both projects use the same .kdb files. KeePass is also available as a portable Windows application. This means that your password database is completely portable across just about any operating system you'll come across. You can even sync your database across multiple computers like Lifehacker suggests using a service like Dropbox or Syncplicity. Now there's no excuse for using either weak or redundant passwords.

I started using KeePass last year to keep track of my passwords. There are some services I use whose passwords I remember and there are some I have to look up every time. This is something I'm okay with because it means the passwords I use are strong ones. When I bought my Mac I started using KeePassX on it and the transition was completely seamless. Now I can move my password database back and forth between my Mac and my Windows computer and access my passwords just as easily in either operating system.

Wednesday, February 11, 2009

Keyboard and Mouse sharing with Synergy

Synergy is a neat tool used to share a keyboard and mouse over the network between multiple computers that each have their own display. I used this for a while a few years ago with two Windows XP machines but now I have it setup with my Windows XP desktop and my OS X laptop. Synergy is an open source project and has a GUI version for Windows with more basis versions available for Macs and Linux. There is another project called SynergyKM that provides a GUI for Macs. Here's how it works:

One computer is the designated server. This is the one that shares its keyboard and mouse with the others. I have my Windows machine setup as the server. On Windows, installation is pretty basic and then once Synergy is fired up, it opens a configuration window. From this window you can choose either to share another computer's keyboard and mouse or you can configure this computer as a server. The key thing to setup is where each display is located. You have to tell the server where each display is relative to the others you will be connected to. For example, in my setup, when I move the mouse to the left edge of the screen on my Windows computer, the mouse jumps over to the right edge of the screen on my Mac and vice versa. When I had initially set it up, I only told the server that my Mac was to the left of my Windows computer. Going from my Windows computer to my Mac worked, but then I couldn't get back to my Windows computer. Make sure you tell it where each display is relative to the one's next to it.

Synergy can be configured to start with Windows or upon login. there are also some other tweakable options governing how long the curser has to be at the edge of the screen before it jumps to the next computer. You'll have to play around with it to figure out what works the best for you. Once the server is running, Synergy will reside in the system tray.

As for setup on my Mac, SynergyKM installs as a preference pane in System Preferences. Since I'm sharing another computer's keyboard and mouse instead of sharing mine, setup really is as simple as specifying the IP address of the server. If you wanted to use your Mac as a server its actually a bit easier than the setup was on Windows because SynergyKM shows an image for each screen and you can drag them around into their proper positions. There is also an option to put a Synergy icon in the menubar for quick access to turn it on and off. You can also save multiple location profiles for if you have a different setup at home and at work.

Monday, February 9, 2009

RSS Reader

I've decided to try using an RSS reader again. I've used Google Reader and Sage in the past, but I never felt like it made viewing content any easier or more convenient than just going to the original website. I'd heard that NetNewsWire is a good desktop RSS reader, so I decided to give it a try. More and more I dislike desktop applications in favor of web based services for their ease of access (yes I am aware of the security implications, its a slippery slope, I know), but NetNewsWire syncs up with NewsGator for online viewing of feeds while away from my computer. NetNewsWire is a Mac only application, which is okay as I have a Mac laptop, but NewsGator also sports a Windows based application called FeedDemon. FeedDemon is also supposed to be excellent, although different.

So far I've only tried out NetNewsWire and thus far, I am quite pleased with it. It has a built in browser with which it can load full pages but I still prefer my Firefox to anything else. Just be aware, the web interface on NewsGator is not encrypted which leads me to believe that there isn't much privacy with this application and the web service running it. This isn't really an issue for me, I don't try to make a secret of the feeds I'm following. If this level or privacy is important to you, I'd recommend Google Reader for its encryption between you're browser and Google's server. My guess is that from the outsiders point of view, there isn't any way of knowing who's reader account gets which feeds so its probably a bit safer than NewsGator if you're really worried about it.

Google Sync for calendar and contacts on iPod Touch

Saw this article on Lifehacker this afternoon about how Google Sync offers push updates for calendars and contacts for a bunch of platforms including the iPhone and iPod Touch. Since I have an iPod Touch (which, by the way, I use for a PDA far more than I use for a music player) I decided to set it up. I've been using NuevaSync for a while now, but I figured the exact same service from Google is probably safer and removes a point of failure from the system. I switched over to Google's offering and it works like a charm. I had had a few issues with my calendar not updating properly in the past with NuevaSync, though I have no idea who's fault that really was and it hasn't happened in a while.

More on Unix terminal cat command

The other day I played around with the Unix cat command to write to a config file. Well today my curiosity got the better of me and I went to do a little more research into the uses and syntax of cat. The cat command is used to read from, write to, and concatenate text to a file. Typing "cat [filename]" will print the contents of the specified file. To create a file, type either "cat>[filename]" or "cat>>[filename]". Now you will be writing to the file. Press [control+c] to stop editing and exit the cat command. The difference between these two options is an extra ">". For just creating a file, there is no difference. However, for editing an existing file, "cat>[filename]"will overwrite the contents of the new file whereas "cat>>[filename]"will contatenate new text to the end of the file.

Saturday, February 7, 2009

Setting path environment variable in OS X Leopard

I do most of my programming using using an IDE, historically I've used Eclipse and recently I've been using NetBeans. IDEs are nice because they will compile code for you automatically each time you save. However, for a current homework assignment for my distributed technologies class, we need to do some command line work. Since Java comes prepackaged with Leopard, most of the command line tools already work. Alas, the wsimport command (web service import) does not work out of the box. Getting this command to work required some short research on my favorite search engine and turns out to be rather easy.

From your Unix Terminal, typing the command "locate wsimport" shows where the command is housed:
/System/Library/Frameworks/JavaVM.framework/Versions/1.6.0/Commands/wsimport
/System/Library/Frameworks/JavaVM.framework/Versions/1.6.0/Home/bin/wsimport
/System/Library/Frameworks/JavaVM.framework/Versions/1.6.0/Home/man/wsimport.1

The Unix cat command is used to read from, write two, or merge files. Custom environment variables are stored in a hidden file in the root of a user's Home directory called .profile. In Unix, the tilde character (~) is a shortcut meaning Home. Typing "cat ~/.profile" will show the contents of the .profile file, if your computer has one. My computer did not up until this point. Now type "cat>>~/.profile". Now type "PATH=$PATH:/System/Library/Frameworks/JavaVM.framework/Versions/1.6.0/Commands/". Be careful though because the cat command is still working. Press [control+c] to exit the cat command. Now if you type "cat ~/.profile" you should see the line you just typed:
PATH=$PATH:/System/Library/Frameworks/JavaVM.framework/Versions/1.6.0/Commands/

Close and reopen your Unix Terminal and type "wsimport". The command will run and tell you that you didn't enter enough information for it to do anything usefull and will display its usage information.

Friday, February 6, 2009

Geek Social Aptitude Test

I saw this the other day and loved it; it's the Geek Social Aptitude Test. My score came in nice and low, but how did you fare?

Thursday, February 5, 2009

Thoughts on iWork's Pages

When Apple released iWork '09 I picked up a copy and thought I'd give it a try. Last night I was writing a meeting agenda for one of my classes and I decided to use iWork's word processor, called Pages instead of my usual Microsoft Office Word 2008. When you open up Pages, you get a list of preset templates to choose from including things like resumes, letters, envelopes, reports, etc., or you can choose a blank document.

The layout of the application windows looks like a simplified version of Word. I started doing my homework and I had to hunt around for some of the formatting option I wanted to use, which is understandable given that it is a different application. The designers had their own ideas about where to put certain features and they cannot be faulted for that.

My real gripe with the application is that there is only one format you can save files in: .pages. With Word you get options like .doc, .docx, .txt, and .rtf to name a few. These are all standardized formats. Okay, .docx might not be standardized, but everything else there is and a lot of software can open .docx files even if they cannot resave into that format. Word may not be perfect but at least it give you plenty of options for saving your files. Pages gives you a single proprietary option. I do not want to save files in proprietary formats. I want my files to be readable on any computer I go to. If I don't want them to be opened I'll encrypt them. For this reason, I don't want to save anything in the .pages format.

Pages will export files to .doc format, but it will not save to .doc. Effectively, what this means is that if you want to maintain the file as a .doc and not a .pages, you will need to export it each time you want to save. I am a compulsive saver. My fingers automatically seek out the save keyboard shortcut each time I pause in my typing. If I export to a .doc then it just exports the content but doesn't save the current document. Now every time I hit my save keyboard shortcut the "save as" dialog pops up.

My solution to this: switch back to Word.

Wednesday, February 4, 2009

Cross Platform File Syncing with Syncplicity

I have been using a program called Dropbox to sync a folder between multiple computers and a server for a few months now because the software has been available for both Macs and Windows and I have both. Recently, a competitor called Syncplicity released a Mac client for their service so today I decided to take it for a test drive. A free account on Syncplicity is good for syncing up to two computers and comes with 2GB of online storage which can be expanded up to 5GB if you refer new users to the service. All connections across the net are encrypted with 128 bit SSL and their server which stores copies of your synced data is encrypted using AES, the industry standard for information security.

I installed the Mac client first, which is still in beta, and it is a very rough client. Finder crashed multiple times when trying to get it setup initially. The Windows client, on the other hand, which I installed on my XP computer, seems to be very polished and easy to use. Syncplicity will monitor multiple folders that you get to specify. There is also a web interface where you can monitor and the files linked to your account. There is no way to delete folders from the web interface or the Mac client. This process is a snap on a Windows client.

In terms of file syncing, once each client is configured, everything appears to be very smooth. Files added to or changed in a synced directory on one computer will show up on the other within a minute or two, which is really as fast as most people will need. If you are working with two computer side by side then file sharing is probably less hassle than this type of service. Also, in terms of real world usability, a limit of two computers on a free account may not sound like a lot, but how many of us really need to sync more computers than that? While yes, I do have several computers, most of them are all almost always on the same LAN so I can use file sharing to access the same files on multiple computers. Two computers is enough to have Syncplicity installed on a desktop and a laptop. Also, if you happen to need access to one of your synced files and you're on a different computer, you can download and upload your files through their web interface.

I am used to using Dropbox which is a very similar service. One thing though that I am always aware of when installing new software, especially software that will always be running in the background, is greedy the program is for system resources. On my Mac, Syncplicity is taking up about 35MB of RAM compared to 23MB for Dropbox, not really a big deal. On my XP computer, Dropbox uses just under 20MB and Syncplicity is using over 50MB! This is a more noticeable difference and I wonder if as the Mac client get developed further if it will use up more system resources like it Windows version does.

For this reason I will probably stick with Dropbox even though I have 5GB of storage on my Syncplicity account versus the 2GB I get with Dropbox. Dropbox also support more connection on free accounts and has a Linux client. Even though I am not using Linux right now, I may in the future and I would rather not have to switch software. For now though, I will probably run with both for a few days and see what I think.

Tuesday, February 3, 2009

Set up your own domain

So today I went ahead and setup this blog. I started playing around with the settings and saw that that blogger is setup for publishing on custom domains. As I did a bit more digging I saw that for a $10 domain name registration fee, I could get my own domain complete and attached Google Apps. Here's how it works. Here is a list of the standard and premium features of custom domain Google Apps. The standard free version is adequate for my needs so that is what I went with.

Click the link that says "I want to buy a domain name." Seriously all it costs is $10/year for domain name registration. Google Apps are free. Pick a domain name you like and move on to step 2. I chose to register mine through GoDaddy.com. The other option is to use eNom. Continue on through the purchase. When you finish, you will need to set up an administrator account that controls your domain with an email of name@yourdomain.com. (instead of .com you could just have easily have chosen .net, .org, .info or .biz)

You will automatically have Email, Calendar, Docs, and Sites enabled with your domain. You can log into these services at mail.yourdomain.com, calendar.yourdomain.com, docs.yourdomain.com, and sites.google.com/a/yourdomain.com. All of these URLs are customizable. They all seemed fine to me but I wanted Sites to be at sites.yourdomain.com so here is how to change that:
  1. From your Dashboard page, click the sites link toward the bottom.
  2. Next to where it says "Web address," click "Change URL"
  3. Now you can change it to [anything].yourdomain.com
  4. Click "Continue" when you're done
If you want your own website now, simply go to sites.yourdomain.com (assuming your changed the Sites address to that anyway) and start designing your own site. Google has done a pretty good job here of making a dead easy web page creator. Now, you probably will want your website to reside at www.yourdomain.com so here is how to make sure it is, or how to change it if you want it to be somewhere else:
  1. Click Site settings>Other stuff
  2. Scroll down to "Web Address Mapping" and click on "Map this site"
  3. Under where it says "Web Address" you can set the URL to be [anything].yourdomain.com
  4. Click "Add mapping" to finish
Have a Blogger account and want to make it accessible as part of your domain too? That is a little bit trickier but still not too bad:
  1. From your Dashboard, click "Domain settings"
  2. Click "Domain names"
  3. Click "Advanced DNS Settings"
    For these next few steps I will assume you have registered with GoDaddy.com, if not, there are detailed instructions for some of the other common sites here.
  4. The page you should see now will provide you with a sign-in name and password to use after you click the "Sign into DNS console" link
  5. Log into GoDaddy.com and on the following page click on yourdomain.com
  6. Near the middle of the page click the link "Total DNS Control and MX Records"
  7. In the section labeled "CNAMES (Aliases)," click the "Add New CNAME Record" button
  8. Enter the subdomain you want to use (if you want your blog to be at blog.yourdomain.com, enter "blog," if you want your blog to be at somethingelse.yourdomain.com, then enter "somethingelse"), then click "OK"
  9. Now log into Blogger and click "Settings"
  10. Click "Publishing"
  11. Next to "Switch to," click "Custom Domain"
  12. Enter in the name of your blog's new address (ex: blog.yourdomain.com)

Email Encryption with Thunderbird

Not too long ago I was inspired to set up public/private key encryption for my email. This is something that has been on my list to do for a while and it turned out to be much easier than I’d thought it would be.

Public/Private Key Encryption
The idea behind key pairs is that you create two keys that can encrypt data that can only be decrypted using the other key in the pair.
An example: Alice and Bob want to be able to communicate with each other but don't want Charlie to be able to read their communications. So they each set up public/private key pairs. Alice and Bob both post their public key on their personal websites and very carefully protect their private keys. When Alice wants to send a secret message to Bob, she will encrypt it using Bob's public key. If Charlie intercepts the message along the way to Bob, all he can see is gibberish. Bob, however, can decrypt the message using his own private key. When he wants to send a message back to Alice, he will encrypt it using Alice's public key so that it can only be decrypted by Alice using her private key.

Your Turn
The first thing you will need to do is install GnuPG. There are specific builds supported through different projects for different operating systems. If you're running Windows, you'll want to install Gpg4win. If you're running Mac OS X, you'll want to install MacGPG2.
Set up an email account using the fantastic cross-platform application Mozilla Thunderbird. Once you have that installed and an email account linked to it, download and install the Enigmail extension. To install an extension in Thunderbird, go to Tools>Add-ons. Click the "Install..." button and then navigate to where you saved the Enigmail file. You will need to restart Thunderbird for the extension to take effect.

You will now notice a new menu item called OpenPGP. Click OpenPGP>Key Management. Click Generate>New Key Pair. Pick the email account you want to use the key pair with. Choose a passphrase to use with your private key. You want to make sure you pick a nice long passphrase and keep it a secret. I recommend at least 15 or more characters and don't tell anyone. Now you can set the key to automatically expire after so long or not, that's up to you. Now click "Generate key." When prompted to confirm, click "Yes." It may take a little bit of time as the key pair is generated. The next thing you will be asked about is creating a revocation certificate. A revocation certificate is a special document that has been encrypted using the private key that basically says this key pair is no longer any good. It is critical that you keep this certificate hidden somewhere. If someone gets a hold of your revocation certificate they can invalidate your key pair! You will need to type your passphrase to create the revocation certificate.

Now for some configuration tweaks. Go to Tools>Account Settings... Click on the "OpenPGP Security" tab on the left for your account to use your key pair. Hit the checkbox at the top to enable your keypair for the account. If you want to, here you can specifiy to sign and/or encrypt messages by default. Clicking the "Advanced..." button brings another set of options. By default, Enigmail will store your passphrase for 5 minutes after entering it. Here you can adjust that as you like. I recommend chaning that 5 into a 0 (zero) to ensure that you must reenter your passphrase everytime for maximum security but that is up to you.