Category Archives for Apple
There’s an absence of information on how to get a Subversion server running on Mac OS X, and what information there is on the web gives the impression that it’s difficult. It’s not.
I used to run an application called Mac SVN Server – MAS, a standalone app with Apache and a Subversion server all built in, by Uli Kusterer. You just run it and you have an instant web based svn server. But it’s all packaged up, meaning it’s not that easy to upgrade to new versions of svn, and is pretty heavy weight considering it’s an entire Apache 2 web server.
Instead, contrary to what most web sites seem to say, you can just run svnserve, the Subversion custom server component with Mac OS X. Here’s how I did it:
- Download the Subversion package from Martin Ott’s .mac page and install it on the Mac running 10.5 (Leopard) or later, that you’re going to use as your Subversion server. This includes the svn client and the server. It’s a standard Mac package installer, so just run it and you’re done. All the binaries will end up in /usr/local/bin.
- Create a new user called “svnuser”.
- Create a directory for your repository. Use mkdir /Users/svnuser/svn, or if you need to, use sudo mkdir /Users/svnuser/svn.
- Create your repository. Use sudo svnadmin create /Users/svnuser/svn. Check the directory to make sure it has correct ownership for svnuser, and if not do a sudo chown -R /Users/svnuser/svn to set it correctly.
- If you have a repository from another Subversion server then you can simply copy it over the top of the new directory, and it will work fine, so long as the repository version is supported. For Subversion 1.5, it will also support a 1.4 repository. I copied my old 1.4 repository from MAS, and it’s worked perfectly. You may need to do another chown to make sure the ownership is correct.
The server is now installed. To run it, simply log in as svnuser and run the server with svnserve -d -r /Users/svnuser/svn. You can now access it from any client (1.4 is built into Mac OS X 10.5 so no need to install the client anywhere) by doing a standard svn check out: svn co svn://ipaddress-of-svnmac/repositorypath
But instead of running it manually, we can run it automatically when the server Mac starts up by using launchd. You can read up on Getting Started with launchd, but basically it’s the new startup process in Mac OS X 10.4 (Tiger). So, to start svnserve automatically, create the file /Library/LaunchDaemons/org.tigris.subversion.svnserve.plist, and put the following in it:
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> <plist version="1.0"> <dict> <key>Disabled</key> <false/> <key>Label</key> <string>org.tigris.subversion.svnserve</string> <key>UserName</key> <string>svnuser</string> <key>ProgramArguments</key> <array> <string>/usr/local/bin/svnserve</string> <string>--inetd</string> <string>--root=/Users/svnuser/svn</string> </array> <key>ServiceDescription</key> <string>Subversion Standalone Server</string> <key>Sockets</key> <dict> <key>Listeners</key> <array> <dict> <key>SockFamily</key> <string>IPv4</string> <key>SockServiceName</key> <string>svn</string> <key>SockType</key> <string>stream</string> </dict> <dict> <key>SockFamily</key> <string>IPv6</string> <key>SockServiceName</key> <string>svn</string> <key>SockType</key> <string>stream</string> </dict> </array> </dict> <key>inetdCompatibility</key> <dict> <key>Wait</key> <false/> </dict> </dict> </plist>
This automatically starts the server when it boots. It also switches it from a standalone daemon to running under inetd, but it makes no real difference. There are a lot of different versions of this plist out there, but this is the only one I got to work. Unfortunately I can’t remember the site I borrowed it from. Email me if it’s you.
Note that the UserName property defines the user to runs svnserve as, but launchd only allows this property when it is running as root. There are two launchds on the system, one running as root (process 1), and one running as each user. The one running as root loads its plists from /Library/LaunchDaemons.
Updated from comments over time.
I was doing some performance tuning the other day, for some fairly complex PHP code, and so finally had a chance to try out xdebug‘s profiling support. It’s pretty cool, but unfortunately tool support for it is fairly limited.
xdebug spits out profiling data in a subset of the Callgrind Format, which is part of the Valgrind project. While the data is textual and human readable, the structure itself is a flat unrolled execution stack that’s not entirely sequential for parsing, and so you need some kind of tool to interpret the data.
A number of shell tools will do the job, but won’t be overly useful for really drilling into the data. The KDE based KCachegrind will read and display the data and everything else besides, but I haven’t run KDE for about 8 years now, so it’s not much use to me. Likewise the small but powerful WinCacheGrind does the job, but it’s Windows, which for me means using my Windows box which is away from my main development set up. It also has a number of annoying little bugs, and while the source is available on sourceforge, it’s not really being updated.
So, I spent a few days writing a Mac OS X profiling tool, MacCallGrind.
It’s a bit rough and ready at the moment, and there’s a number of problems with it, but it reads the xdebug output and displays it with at least a few useful metrics. There’s more to come, because I need it for some other upcoming work, but I won’t be getting back to that for a few weeks, so I figured it’s best to just get it out there for other people use, even though it doesn’t do very much.
Let me know what you think and what you’d like me to add.
Remember, I know it’s only minimal, but what do you expect for two days’ work?!
Don’t get me wrong, it’s an awesome tool for sharing digital media, and it’s free, so you can’t really complain about it. But it’s ugly. Like really really ugly. Ugly in the way it looks, and more importantly ugly in the way that it works. Ugly to the point of making you only want to use it when you absolutely have to. So ugly that it makes me want to actually pay them for a good looking and nice to use version, instead of having to use the free damn ugly and user unfriendly version.
The main problem for them is that it’s written in Java, most likely for source sharing with the Windows version. But code sharing isn’t an excuse for a shoddy user interface. Shoddy interfaces are usually due to shoddy development practices or a lack of user interface engineering experience.
Let’s start with the first thing that appears when you open the application, a little window prompting you to sign in. The text all over this window seems to be just randomly placed and aligned, with some text right aligned with the window edge and others centre aligned, spacing between each seemingly randomly selected. The “Not a member of SpinXpress2 yet?” text for example is right aligned between the “Forgot your password?” text and a button, which are bother centred, with all three having different font sizes and different vertical spacing. It just looks dumb and amateurish.
The “LOG IN” button, what should be the most significant button in the window, is butt up against the right edge. And buried under the gaudy orange and green logo and tacky “GET SHARE PUBLISH” text, in the top left of the window, is a very small unlabelled button, that you miss if you’re not looking for it. It’s actually a second login button. The “LOG IN” text that appears on the right is some kind of link to this other button.
And why “LOG IN” in capitals? If it’s a text prompt, why not “Log in” or “Log In”. Speaking of “LOG IN”, nobody uses “LOG IN”. Ever. It’s either “LOGIN”, or most sites these days use the more user recognisable “Sign In”. There’s a “SIGN UP HERE” pseudo-button underneath it, so it doesn’t make any sense.
Now I’ve run the application previously, so my email address is already in the Email field, but it’s disabled. Why? Why can’t I enter a different email here to log in as someone else? And if there’s a reason, then why doesn’t it tell me? Or failing that, why put it in an edit box, make it static text!
But my favourite part of this window is the almost a quarter of the height of it that is just blank at the bottom. It makes you think you’re missing something.
So instead of logging in, I decide to check the preferences to see what else I can do. Surprise! Not only isn’t there a preferences dialog, but there isn’t even a menu bar, so you can’t even quit the damn thing! Later I figured out that the red traffic light on the window title bar actually quits as well as closing the window. Very un-Apple guidelines.
And strangely, behind this window is a floating graphic with a thermometer in it. It has no window controls, so you can’t close it, resize it, hide it or move it. Once you’ve signed in, sorry, logged in, the thermometer continues for a few seconds until the main window opens. Why? It only takes a few seconds. Just change the cursor or something. A better idea might be to open the main SpinXpress window, and login from there and show a thermometer from there. You can only ever login as your original email address, so why not just take me straight to my workspace?
So now we come to the main window. The first time in, a large window text pane will appear on every single page you look at, asking if you came here from Ourmedia, and explaining what SpinXpress is all about. Problem is, it takes up most of the window, and hides what’s underneath it, including most of the FAQ. A menu bar has now appeared as well, but all you get is a really badly thought out File menu.
This window is slightly better layed out, but it looks like it’s using WebKit or similar to layout each of the right hand content panes, which is probably why it looks so ugly. Text regularly gets painted over by graphics, doesn’t fit in the pane correctly, and looks like a badly designed web page.
The left hand pane (or it a web frame?) at times changes the background to almost the same colour as the item text, a shade of blue, which means you can hardly read it. Why they thought a menu needed to be blue in the first place is completely beyond me, let alone the background being the same colour! And considering the right hand pane looks like a web page, these left pane items look like hyperlinks, so they’re a little disconcerting when you click on them, no knowing what to expect them to do. It would be nice if the font was slightly smaller though, so you can actually see the text without the tips of the descenders being clipped by the item underneath it.
I then clicked on Share Media, Groups, New Group in this list, and it prompted me to set up a new group. But it wouldn’t let me cancel it, either with clicking on another menu item, using the standard cancel keys, or via the menu bar. At this point you are locked into creating a group, regardless whether you want to or not. You can however at this point hit OA-Q to quit.
I could go on for hours detailing all the problems with the user interface, many of which are simple no brainers. So it begs the question, is anyone testing or running any kind of quality assurance on this thing before it goes out the door? Certainly not for the Mac version. And this is the scary part. What developers don’t understand about user interfaces, usually corresponds with what else they don’t know about the platform they’re developing for. Mac developers know that the Mac UI is an integral part of Mac software development, as much a part as say accessing the file system, interfacing with the help system, managing NIBs and other resources correctly, writing to the Foundation and AppKit frameworks etc. Mac developers know about the user interface guidelines.
But then so do Windows developers and even Java developers. The Java Look and Feel Design Guidelines came out in 2001, and in the edition I have here, page 62 talks about Layout and Visual Alignment, none of which seems to have been adhered to in the Mac version of SpinXpress.
But does it work? Yes, it seems to work very well. But then I haven’t tested dropping the network from underneath it, force quitting during a transfer, or entering crap into various dialogs etc. So yes, it seems to work quit well, but who knows… And anyway, it’s free so I’m not complaining. 🙂 Yet.
There are probably a dozen different things that can go wrong with Apple’s Compressor and Qmaster, and the web is filled with solutions for most of them. Except mine that is. So today I ripped apart Qmaster to find out once and for all what the problem is.
For reference sake, Qmaster is Apple’s queuing and distributed processing technology. Compressor, Apple’s multipurpose AV transcoder which comes with Final Cut and DVD Studio, uses Qmaster to queue and distribute audio and video transcoding tasks across multiple Macs in a network. Sounds pretty advanced doesn’t it? I mean a home business or hobbyist is probably not going to want to run a server farm dispatching service, when all they want to do is to convert their new video to MPEG2 (for DVD) or some iPod format. Problem is, that’s the default install for both Final Cut Pro and Final Cut Studio.
The problem with Qmaster, is when you export a video sequence from Final Cut to Compressor. Compressor asks which format you’d like to transcode to, and then tries to call Qmaster to make it all happen. Typically you then get an error dialog which says “Unable to connect to background process”, at which point Compressor cancels the job, and Final Cut returns you to editing mode.
Some solutions to this problem suggest exporting from Final Cut to an intermediary format, and then using Compressor stand alone to transcode, but this doesn’t bypass the problem. The problem isn’t with Final Cut or Compressor, it is with Qmaster.
Qmaster is required by Compressor, not Final Cut. One of the things that takes a while when debugging Qmaster, is running Final Cut everytime, creating a sequence, exporting to Compressor, setting the transcoding format, and then finally clicking submit. There’s an easier way to see if the problem has been fixed.
Launch Compressor on its on, don’t bother with Final Cut. Go to Compressor’s Preferences, and change Default Destination to Desktop, change Cluster Options to Never copy source to Cluster, and set the Default Setting to Web Download (QuickTime 7 compatible) –> H.264 100Kbps, then click Apply. Exit from Compressor, and drag a small .jpg picture to your desktop. Now you’re ready to go.
To test if the “Unable to connect to background process” problem has been fixed, launch Compressor on its own, select Import file… from the File menu, click on the .jpg on the desktop, and click Open. This will return you to the Compressor Batch window, where you can simply click on Submit. If you don’t see the error dialog, then you’re done, and please leave a comment here to say what worked for you.
If you still have a problem, use the above test after each thing you test from the following huge list of possible solutions.
For the rest of this post, I was originally using Final Cut Studio 5.1.1, but have since gone back to 5.0 with the 5.0.4 update.
Qmaster the dark art
Qmaster starts up when your Mac starts up. In fact there’s a startup shell script in /Library/StartupItems/Qmaster on your boot volume, called Qmaster, which at Mac boot time grabs the file /Library/Application Support/Apple Qmaster/qmasterconfig, which contains the pathname of the Qmaster daemon (/usr/sbin/qmasterd), and some basic configuration variables. It thens launches the daemon.
At this point, the Qmaster daemon should be running. Once the boot has finished, you can launch Terminal and enter top to see the process list, which should include a number of related Qmaster processes, including one or more instances of qmasterd. An easier way to check if Qmaster is running, is to use finder to launch /Applications/Utilities/Activity Monitor, select All Processes from the select menu, and then enter qmaster into the search field. You should at least get one instance of qmasterd.
If Qmaster is not running, then there’s a few things you can try to get it running.
Qmaster is not running
- Apple recommends the first thing you do is reinstall everything, but sometimes this can make things worse if you don’t delete everything, as you can end up with mixed versions of base install and subsequent versions downloaded through Software Update. If you’re going to reinstall, then reinstall everything the way Apple recommends, but I would only use this as a last resort.
- Often a reinstall may have excluded Qmaster. To check, go to Terminal and type:
ls -l /Library/Application Support/Apple Qmaster/
Note that there are space characters between “Application” and “Support”, and “Apple” and “Qmaster”, and the slash “” character is used to escape them. You could instead wrap the entire path in double quotes if you wish. Now, if you don’t see a list of Qmaster related files, such as qmasterconfig or QmasterApplications.plist, then you haven’t installed Qmaster, and you’ll need to go back to your base install disks, and reinstall.
- It could be possible that a reinstall didn’t actually add Qmaster to the startup items folder. To check this, use finder to open /Library/StartupItems, and make sure the Qmaster folder exists, and contains the startup script. You should also check the security permissions. See below.
- Sometimes the security permissions for Qmaster’s startup script get munged. To fix this, go to Terminal, and type the following:
- cd /Library/StartupItems/Qmaster
- rm -f .disabled
- sudo chmod 755 Qmaster
- sudo chown root:wheel Qmaster
- sudo chmod 644 StartupParameters.plist
- sudo chown root:wheel StartupParameters.plist
This also removes a possible .disabled file, which can also disable Qmaster from starting. You may also need to run /System/Library/CoreServices/SecurityFixer to fix permissions, however I’ve seen very little feedback that this helps at all. You will need to reboot your Mac to actually start Qmaster, and test if it is now working.
- Another problem with starting Qmaster, is sometimes the software it requires is not available, such as AECore services and the Qmaster.framework. Go back to the install disks and make sure you’ve installed everything correctly. Alternatively, you can use Pacifist (a third party standalone package installer) to only install the Qmaster package. Different versions of Final Cut will package things differently, so you need to be careful which packages you need to install. If in doubt, use Pacifist to install the lot.
- Qmaster requires three main system services to operate, Disks, Resolver (DNS) and Network. These are listed in /Library/StartupItems/StartupParameters.plist. I doubt the startup items would be called without these, but perhaps third party software is causing these not to start before Qmaster is started. If this is the case, either start up Qmaster manually (see below), or find the offending software and remove it or get a newer version.
If Qmaster still won’t start, then try starting it manually. Go to Terminal and type:
sudo /Library/StartupItems/Qmaster/Qmaster start
You’ll get a message like Starting Qmaster services, which just means that the script has tried to run. It may take up to a minute to start, but eventually it should appear in top or the Activity Monitor. If this works for you, then you’ll need to restart it again whenever you reboot.
If it still won’t start, then there’s probably some software which is missing, and I’d recommend reinstalling everything. Although there is an error log for Qmaster at /Library/Logs/Qmaster/qmasterd.log, if any of the lines within it start with Error:, then again it is probably some software which is missing.
One additional thing to try, is removing all network connections. If you’re not using a server rendering farm, just the one computer you edit on, then Qmaster won’t require network access. While there are several theories as to why this fix works, I’ve yet to find a consistent and reputable one, but it generally goes like this: when Qmaster starts up, it looks for network connections on one or more known ports, and if it can’t find them, it fails to start up. This doesn’t make much sense technically, and the solution to the problem is just as convoluted, but it seems to work for some people. It goes like this: if you shut down all network services, then Qmaster won’t go looking for ports, and it will startup without failing.
There are three ways you can do this, that I found on the web. Two you can try, and a third you should not.
- Go to the System Preferences, Network pane, select Network Port Configurations from the Show: select menu, and uncheck all the Port Configurations, then click on Apply Now. This will disable all your network services, and you can then in theory try to restart Qmaster. You can either reboot and see if it starts automatically, or use the manual method of starting it with sudo from Terminal as described above. Again, check with top or Activity Monitor to see if it starts.
- Instead of killing all your network connections, go to System Preferences, Network pane, and create a new Location: setting from the Location: select menu. Call it “Qmaster” or “Compressor” or “[no network]”, whatever makes sense to you, and then again uncheck all the Port Configurations in Network Port Configurations. You now have your standard Location: for normal networking, and your new special Qmaster settings for when you need Qmaster. Of course whenever you have the Qmaster one active, you have no network capability, so no Internet access.
- Some web forums have suggested that you remove /etc/hostconfig. DO NOT DO THIS! This file is required by your Mac when you start up, and removing it will cause your Mac to permanently boot into the system shell. It should fix the Qmaster problem, because it disables all networking, but it also disables pretty much everything else as well, and with no GUI, you’re going to find it hard to use Compressor anyway. Some have also suggested copying this file to the desktop, renaming it to hostconfig.old and then copying it back to /etc, which does nothing. Some people have reported success in playing with hostconfig, however my thought is that they did something else at the same time which fixed it, or it was a permission problem which was fixed by touching hostconfig. My recommendation is to not try it, although if you’re interested you can find numerous descriptions of it in Google.
Qmaster is running
At this point, you should be confident that Qmaster is actually running, so the problem may well be mixed versions of Compressor and Qmaster. If you think this is the case, then follow Apple’s reinstall method above, and make sure your versions are in sync.
If this is not the problem, then it could be that the Qmaster configuration is wrong. This is the problem that I was having. I’ve never changed the Qmaster preferences, but for some reason, something changed them, maybe an install of another Apple product, maybe a crashed or cancelled Compressor session, who knows.
Final Cut Studio apparently includes a System Preferences pane for Qmaster. I saw it once, but when I clicked on it, it crashed, so I’ve never actually seen it. Subsequent installs of Final Cut Studio haven’t installed it again. Final Cut Pro doesn’t include this, so you won’t see it. These preferences are used to configure the network which Qmaster will use for distributed rendering. If you’re only using your own Mac, or your preferences are corrupted, then this configuration may be wrong, causing Qmaster to fail when trying to distribute jobs.
Luckily, there is a shell version of Qmaster preferences, which comes with all versions. To see your current configuration, go to Terminal and type:
… to get to the right directory. Then type:
… to see your current configuration.
You should see settings for one or more clusters, plus two services, Compressor Processing and Rendering. While qmasterprefs is documented in both the Qmaster and Compressor manuals, the service parameters are not, and neither are most of the cluster parameters. I’m assuming this is because users typically go through the GUI, which most people may not actually have installed.
First thing is to make a copy of the current settings, so you can restore them, so do a qmasterprefs -list, copy the output into a text editor, and save it to disk for later.
Now, we need to make sure we have a single machine defined. My machine name is g5, so I have a cluster started on g5 as follows:
-cluster on servername "g5" quickcluster on unmanagedservices on unmanagedmulticapturethreshold 0 networkinterface allinterfaces
If your machine name is wrong, then change it with:
qmasterprefs -cluster on servername "yourmachinename"
Your machine name will be listed at the beginning of the prompt in Terminal. e.g. my prompt looks like this:
g5 is my machine name, /usr/sbin is the directory I’m currently in, and richardbf is my user name.
You may also need to enable quick clustering using:
qmaster -cluster on quickcluster on
Next, you need to make sure Qmaster is enabled for Compressor and Rendering services. To do this, type:
qmasterprefs -service "Compressor Processing" on instances 1
… to enable Compressor, and then:
qmasterprefs -service "Rendering" on instances 1
… to enable rendering. Note that my initial prefs had these two turned off, and an instances of -1 for Rendering. As these are not documented, I don’t know the exact settings they should be, but these work for me.
The networkinterface allinterfaces may also need to be set for your cluster, in case that has been changed as well.
Here’s the configuration that works for me:
[g5:/usr/sbin] richardbf% qmasterprefs -list
-cluster on servername "g5" quickcluster on unmanagedservices on unmanagedmulticapturethreshold 0 networkinterface allinterfaces
-service "Compressor Processing" on instances 1 autorestart off unmanaged on
-service "Rendering" on instances 1 autorestart off unmanaged on
You can also type qmasterprefs -help for help on which commands you can use.
Once you’ve made your changes, double check that they’d been accepted, by reissuing:
Now restart Qmaster by typing:
… then go back and try Compressor to see if the error dialog still appears.
One thing to note, Compressor automatically detects your single cluster, and populates the Cluster: select menu in the Batch window, with your machine name. That’s the select menu next to the Submit button. When Compressor starts, this will be set to None, then as it connects to Qmaster, it should quickly change to your machine name. If not, then you should select it manually yourself. If your machine name isn’t in the list, then go back and make sure you set your -cluster options correctly.
Either way, you should also reboot your Mac and try Compressor again, just to be sure. If it works before the reboot but not after, then you may have a security permissions problem, or perhaps the installation is still flakey, in which case I’d suggest reinstalling everything as mentioned above.
If it doesn’t work before a reboot, but does after, or to be honest who cares so long as it works after, then you’ve fixed the problem.
I cannot believe that this is still a problem. Surely Apple would know of all the problems people are having, both in their support forums and elsewhere on the web, and would redesign the installation and configuration of both Qmaster and Compressor.
Subsequent versions of Final Cut Studio and Compressor do include newer versions of Qmaster, however in my experience, an upgrade makes it very easy to end up back in a whole world of “Unable to connect to background process” pain. My recommendation is, if you’ve got a running fairly up to date version of Final Cut and Compressor working, then don’t upgrade unless you absolutely need features or fixes in the newer version, and even then, only upgrade to minor versions, not a major one.
Version 2.11 of Compressor includes a new built in setting for transcoding videos for the iPod, and gives you options such as using either H.264 or MPEG4 as the encoding format. This is a great setting to have, but in my case I’ve had to forego it in the name of Qmaster woes. Instead, I have to use the Convert to iPod setting in iTunes to convert videos to iPod format. Unfortunately this always uses MPEG4 and not H.264, but at least it works.
If you have any additional comments or solutions, then please let me know. My system is now working, but it took a lot of effort to try everything, and then come up with my own, seemingly new solution.
So a few days ago I finally bit the bullet and bought an iPod 5G, the video one. I’ve been resisting for ages, because I was hanging out for the 6G, but there’s a lot of things happening in the next few weeks that I can’t really wait any longer. So if a new one comes out next week, you can have a good laugh at my expense. But knowing my luck, they’ll go on sale the week I’m in San Francisco for Vloggercon 2006, and they’ll be really cheap, being the U.S. and all.
When I’d finally made the decision, I called the AppleCentre in Chatswood to check the price, which was exactly the same as the Apple Store, and they don’t offer the free engraving like Apple do. So the conversation with the AppleCentre guy goes:
R: How much is the latest iPod, the 5G 60GB?
R: If I came in, would you be open to negotiation on the price?
ACG: [laughing] Not unless you’re buying 30 of them.
R: [laughing] Yeah, sure! [hangs up]
Suffice to say, they didn’t get the business. So easy to shit on your customers isn’t it?
Anyway, I ended up ordering from the Apple Store (resisting the urge to get it engraved with “white guys are cunts“). Problem is, although I usually work from home, next week I’m working on site at a customer, and they can’t guarantee (yes I called Apple to check) the day on which it will be delivered, which means I’ll probably miss it and have to go collect it from somewhere nowhere near me. So I had a thought, that many online retailers pride themselves in delivering as fast as possible. Well, I don’t mind it coming a few days later, so long as I can pick the exact day. Online food retailers like Shopfast are the only stores I can think of that allow you to pick a day and time of delivery. What I’d like on the Apple store is a radio button for either a) fastest possible delivery, or b) delivery a little later but on the date/time of my choice. Can’t be that difficult can it? Especially for Apple, one of the masters in “just in time” manufacturing.
Last Sunday was an amusing day. With daylight saving set to end next weekend, a week later than usual, due to the Commonwealth Games, all Windows boxes decided to get in a week early, just in case. I was fairly confused when I got up and found that I’d gained an extra hour, until I jumped on my Mac, and found that it had not been so generous. That’s right, in a year when supposedly Windows is a pretty good O/S, Microsoft shows yet again, that they’re no match for Apple and OS X.
I’ve finally changed my domain name from my ISP URL to a real URL. Please change any URL you have pointing to my old site (www.zipworld.com.au/~kashum), to my new www.kashum.com site.
Or for reference:
RSS (2.0) feed: http://www.kashum.com/rss2.xml
I’ll leave the old domain around for two weeks, so please change them as soon as possible in your reader or whatever client you’re using.
Changing URLs is annoying for you and me, and I realise its easier to just delete me than change me, but please stick with it, I promise I’ll be good (or bad, whatever you’d usually expect).
Special thanks to Nathan, who kindly donated the domain a few months back. I’ve only just had time to do make it all happen.