When it launched, millions of us grabbed free Gmail addresses, and associated Calendar, Docs, Voice, and other apps followed. But personal domains are cheap, and claiming an @yourname.com address to use with Google Apps is easier than ever. Here’s why you should. More »
Blog Archives
Why You Should Use Google Apps with a Personal Domain Instead of Your Gmail Account [Video]
HomeControl Launches Mac Apps, Controls iTunes from Any Browser [Video]
Mac only: Inspired by our previous post on remote Mac muting, Brett Terpstra created a remote server package and iOS-friendly webapp that allows for remotely controlling your Mac’s volume, iTunes functions, and even launch applications from anywhere. More »
How-To: Setup a SVN Server Under OS X 10.6

Last year I took a look at a number of Subversion clients for OS X, finally settling on Versions as my client of choice for my personal coding needs. At the time, I was running a Linux server on some old generic hardware from the days before I drank the Apple Koolaid. After deciding to upgrade my wife’s 17? iMac with the new i5 27? model, I realized I could ditch the old Linux hardware and get some great power savings (and hence reduced electricity bill) in the process. The first task I had was moving my SVN repository over from the Linux machine (Ubuntu 9.10) to the iMac running OS X 10.6…and this is how I did it.
All of the SVN application binaries, including the server, already come pre-installed with OS X 10.6, located in the /usr/bin/ directory, so we just have a few steps to get that running.
- Create a system user for SVN.
- Create a new repository to store your code in.
- Optionally create specific SVN users for submission tracking.
- Configure the server to run automatically at system startup.
Creating an SVN user
While you could easily run the SVN sever with the root user account, for better system security it’s always best to have a dedicated user to run a specific service such as SVN. This limits any possible vulnerabilities in the SVN software from harming the rest of your system; if an exploit is used to end up with a command line ability, the attacker can only damage files belonging to the SVN user.
- Open System Preferences and go the Accounts page.

- Add a new standard user named
svnwith a suitable password.

This user will be included in the OS X login screen when you start your computer. Since there is usually no reason for somebody to log onto the desktop with this user, it can be hidden from the login screen. You can do so by opening the Terminal application and running the following command:
sudo defaults write /Library/Preferences/com.apple.loginwindow HiddenUsersList -array-add svn
If you ever do want to login as the svn user to the desktop, you can click the new ‘Other’ option that appears in the login screen and manually enter the username. On the other hand, if you don’t want the ‘Other’ option at all you can also disable this by entering the following in a terminal window:
sudo defaults write /Library/Preferences/com.apple.loginwindow SHOWOTHERUSERS_MANAGED -bool FALSE
You can also delete all the default directories created under the /Users/svn/ directory if you prefer a neat and tidy file system.
Creating your SVN repository
We now need to create the specific root directory for our repository and create it using the svnadmin command by launching the OS X Terminal application and entering the following commands.
sudo -u svn mkdir /Users/svn/svnroot sudo -u svn svnadmin create /Users/svn/svnroot
You can now view the /Users/svn/svnroot directory and see that new files have been created to form the base of your new repository.

Creating SVN users (optional)
If you are working on your own code and you know without a doubt that nobody else will be accessing your repository, you can skip this step. However it doesn’t hurt to configure a dedicated user now even if it’s just for your sole use, so that code check-ins are properly attributed. To do this we first need to edit the svnserve.conf file and enable the passwd file for user authentication. An easy way from the terminal to edit a file is by using the nano text editor:
sudo -u svn nano /Users/svn/svnroot/conf/svnserve.conf
Remove the # from line 20 so it looks like this:
### Uncomment the line below to use the default password file. password-db = passwd
If using nano, press Control+X and save your changes. Next edit the passwd file:
sudo -u svn nano /Users/svn/svnroot/conf/passwd
Then add the desired usernames and passwords, in my case I’m adding the user ‘bed’ for myself:
### This file is an example password file for svnserve. ### Its format is similar to that of svnserve.conf. As shown in the ### example below it contains one section labelled [users]. ### The name and password for each user follow, one account per line. [users] bed = beds_secret_svn_password
Scheduling the server to start automatically
OS X uses the launchd subsystem for automatically starting background services. The easiest way to configure svnserve to run automatically via launchd is by using Lingon. You can grab the latest version from Sourceforge. For more details on using Lingon see this previous article I put together, but for this task we just need to add a new User Daemon:
- Run Lingon, click the New button and select User Daemons.

- Fill out the dialog as follows:
Name:org.subversion.svnserve
What:/usr/bin/svnserve --inetd --root=/Users/svn/svnroot/
We now need to click the “Expert” button at the bottom and add the following text under the <dict> section:
<key>Sockets</key>
<dict>
<key>Listeners</key>
<dict>
<key>SockFamily</key>
<string>IPv4</string>
<key>SockServiceName</key>
<string>svn</string>
<key>SockType</key>
<string>stream</string>
</dict>
</dict>
<key>inetdCompatibility</key>
<dict>
<key>Wait</key>
<false/>
</dict>
<key>Umask</key>
<integer>2</integer>
<key>UserName</key>
<string>svn</string>
<key>GroupName</key>
<string>staff</string>
So that it looks like this:

Click the save button again and then reboot your computer to give it a test by connecting to localhost or your IP address with your favorite SVN client, ie: bed@localhost. Your SVN server is now ready to be used! The SVN server will only be launched when you first try and use it, so it won’t be taking up any unnecessary resources.
Migrating an existing repository
If you’re like me, and want to migrate an existing repository from another system you can do so easily by skipping the svnadmin command in step two, and just copy the repository directory from the old system to the new system. I would advise to upgrade your existing repository first to ensure that it is compatible with the version of SVN that comes with OS X (SVN version 1.6.x). Also you’ll want to ensure that the copied file’s owner becomes the new SVN user created in step one.
Amahi Turns Old Systems into Full-Featured Media Servers [Downloads]
Wouldn’t it be neat if you could turn an old laptop or desktop into a media center that served and streamed movies, music, and files, and even backed up your other systems? With an Amahi installation, it’s not too hard.
Amahi is really a repository you add into an installation of the Fedora Linux system, but when you do, it gives that system a whole new look and purpose. From a web interface you can access from anywhere on your network, Amahi can organize and offer up access to movies, music (with streaming to iTunes and other players), photos, calendars, Outlook systems, and any old files you’re in need of. Amahi can also set up a VPN for your household network, giving you remote access to your files without too much more geeky configuration than the standard setup.
Amahi can run on pretty much any system that Fedora 10 can install on—that's about a 1.0 GHz processor and 256MB of RAM minimum. The developers are working on versions for Fedora 11 and Ubuntu, but for now, Fedora is just the base of home server that doesn't require an expensive license purchase or mastery of Linux to install. Free to download, works on any x86-based system.
Opera Unite Puts a Media Server in Your Browser [Downloads]
Windows/Mac/Linux: A test version of Opera’s formidable alternative browser introduces Unite, a plug-in that lets users share music, pictures, files, notes, and chat rooms straight from their desktop. Check out its services and features in a quick screenshot tour.
Before jumping into the big pictures, note that Opera 10 with Unite is a “Labs” release, meaning some features may not work as intended and might run a bit buggy. I created Unite services in an Opera window and accessed them with a Firefox browser, and all but the straight-up web serving, oddly enough, worked just fine.
Once you’ve signed in, or signed up, with an Opera account, you can hand out your sharing URL (in the form of computername.username.operaunite.com and, when you start up your Opera Unite services, your friends will see the same landing page as you. Streaming music and full-res pictures from your system can obviously be a bandwidth and system resource drag, but if you’re using Opera Unite mostly while you’re away from your system, that’s probably not an issue.
Opera Unite is a free download for Windows, Mac, and Linux systems; using and serving up files and media requires a free Opera account sign-up. Click the screenshots below for a gallery-style tour of Unite’s features, and be sure to hit the “800×600″ links for full-size shots.

The controls for Opera Unite mostly run out of a pop-in sidebar, allowing you to start, stop, and configure services you want running. Oddly enough, to set a password for each service, you have to visit it from the browser instead of set it in your configuration panel. New services can be installed with a few clicks from Opera’s site, but it appears this Unite test version comes loaded with everything that’s out there, for the moment.

The Fridge is a pretty neat, simple, and ingenious little service. Anyone who knows your sharing name can stop by and write a little note to tack to your fridge, though you can tweak the accessibility from the configuration options.

The straight-up web server. Doesn’t support PHP, mySQL, or any of the other modern web services (though those may arrive in the future), but could be helpful for selective web access to your-eyes-only documents, or hosting docs from crashed/overwhelmed servers.

Photo sharing is straight-up and simple. The server points to whatever folder they want shared, and the user sees thumbnails and bigger pictures when clicked, and can download the full-res version from there.

Music streaming is also fairly straightforward, but offers preview streams along with full downloads. If you’ve got a whole lot of music you want to offload to friends, you’d be better off running the more direct File Sharing service (not pictured, but pretty much how you’d imagine it).

The chat service works well and is really snappy in relay time, at least in our own browser-to-browser tests. Then again, there are a whole bunch of web-based services that let you create instant chat rooms (TinyChat and Chat.io come to mind) without having to make your browser the center of repetitive pings.
Roll Your Own Streaming Media Server with Subsonic [Downloads]
Windows/Mac/Linux: Is having your entire media collection on tap, ready to stream wherever you may be, too much to ask? Not if you’re using Subsonic.
Subsonic can be installed on everything from a Windows-based computer to a home server running FreeNAS. Once installed, you can tune into your media collection from anywhere you access the web or use your mobile phone. Subsonic is a complete web-based front end for your collection. You can search tracks, listen to saved podcasts, assign ratings, add comments, and create playlists. Subsonic supports on-the-fly resampling to keep the quality high, even when you're using a lower bandwidth connection—you can turn the feature on permanently if you've got a bandwidth cap you're trying to stay under. If you're a fan of Last.fm, Subsonic has support for the service and will scrobble and update your now-playing status. There's a demo account available if you’d like to take the interface for a spin before installing it. Subsonic is free, open-source, and available for Windows, Mac, *nix systems.

