Windows Phone 7 Developer Training
If you're looking to get up to speed on Silverlight for Windows Phone 7 -- so you could, say, ride the wave of App Store goodness and make some extra cash -- you might want to register yourself for some Microsoft developed, instructor-led online training!
Personally, I can hardly wait to get my own WP7 device. My iPhone is starting to look a little weak by comparison...
Installing Rhapsody DR2 on VMWare
Between the acquisition of NeXT by Apple in the late 90s, and the release of OS X, Apple tried and abandoned a path to merge the two company's technologies into a new, modern OS. Ultimately, a similar but different path was chosen, where much of the proprietary technology that made OpenStep expensive (specifically Adobe-licensed PostScript) were re-created, and better compatibility (introducing Carbon into the Classic OS to give developers an easier migration path than the hard and fast change to Yellowbox) with existing Mac applications was provided for.
Nonetheless, what amounts to an experiment: Rhapsody, essentially the NeXTStep/OpenStep OS with Mac interface elements bolted onto it (sometimes), was incredibly interesting. Yellowbox was to represent the new app platform (with built-in multi-architecture support) while the Bluebox, for compatibility with Classic Mac apps was to be added before release.
Shortly I will outline instructions here for getting Rhapsody DR2 (x86) up and running in VMWare. OK, it turns out this process is exactly the same as for installing NextStep. In case it wasn't obvious, these two OSes are very closely related.

Super Quick Timezone Change in Windows 7
With my new job, I find myself frequently (twice a week) switching between EST and PST. This can be confusing when planning meetings and other events on my calendar, because I have to mentally keep track of where each attendee is. Often I find myself switching my time zone back and forth using the "Change Date and Time Settings..." dialog in Windows 7.
Wouldn't it be nice if there were a faster way to do the switch? Well, it turns out there is! To do this, we're going to build a simple batch file for each Time Zone we spend time in. Here's an example -- repeat for each zone you want.
- Open Notepad and enter this code:
@echo off
cls
echo Switching to EST...
echo.
tzutil /s "Eastern Standard Time"
echo Done!
- Save the file in your C:\Windows directory as: est.cmd
- To invoke, hold the Windows key on your keyboard, and then press R -- this will invoke the "Run..." dialog
- Type: est
- Hit enter
Your clock will be instantly switched to Eastern Standard Time, and if you're using Outlook, your calendar will update too. Once you get used to the keystrokes, you can change time zones in less than two seconds.
Assorted, Scattered Objective-C Notes as compared to C#
A outlet is like a pre-known property that can be bound
(ie: drag destination object to origin object and assign to the outlet (property) nextKeyView)
myObject.methodToCall(parameters)
is like
[myObject methodToCall:parameters];
int i = myObject.assignValue;
is like
int i = [myObject assignValue];
form.Window(makeKeyAndOrderFront(target));
is like
[[form window].makeKeyAndOrderFront:target];
object myObject();
is like
id myObject;
string myString;
is like
NSString *mystring;
Defining an instance method:
private string myMethod();
is like
- (NSString *)myMethod;
Defining a class method:
public DateTime myMethod();
is like
+ (NSDate *)myMethod;
private float convertAmountbyRate(float amt, float rate)
is like
- (float)convertAmount:(float)amt byRate:(float)rate;
convert.convertAmountbyRate(1.0, 2.3);
is like
[convert convertAmount:1.0 byRate 2.3];
public interface myInterface : myClass {...}
is like
@interface myInterface : NSObject {...} @end
Snow Leopard
I haven't been this nervous upgrading an OS since going to 10.1. Snow Leopard cleans up a lot of the underlying architecture of the OS -- but sometimes that comes at the expense of older applications, or those not written to exacting standards.
I understand why they did Snow Leopard, and I dutifully shelled out my $35.99 CDN, but I wasn't surprised when a few of my apps didn't work after the upgrade:
- AutoMount Maker didn't work right away, but after I installed Rosetta (via an in-OS download) and rebooted it came back to life. Likely its a PowerPC compiled binary.
- Google Reader Notifier didn't work, apparently due to some uninitialized variables in the code. A patch has been posted in the comments of the author's website, and it works great.
- Windows Live Sync is the biggest casualty. It won't sign in once you go to 10.6. This is frustrating, since I'm quite dependent on it. Microsoft has acknowledged the problem, but there's no ETA on the fix. I may have to switch to DropBox.
I also have an older version of Photoshop (CS2) that I haven't tried yet, but expect it won't work. Additionally, if you (like me) keep your apps organized into folders, all the Apple apps' new versions will be put in the root of the Applications folder again. If you're Dock items link to the organized executable, you may find that they don't work. Simply over-write them with the new versions.
Its nice to have native Google Calendar syncing, but the way it handles calendars other than your main one (it calls them delegates and puts each calendar under its own header) is ugly and annoying.
Over-all, I'm sure this is an important release, and I know Apple did a lot of work with 3rd party developers to get them ready for this -- app breakage, at this point, is the fault of the application creators. But still, without much new eye candy, this was a pretty annoying upgrade, with not much apparent user benefit. Good thing it was so cheap.
Resolving missing dependencies when building a NeXTStep/OpenStep App
If you've played around with NextStep/OpenStep trying to build a sample app -- say, so you can find out how much OS X/the iPhone is like those sweet black machines of yesteryear -- you might have an error like this one, when attempting to build a sample app you've created: AppKit.h not found (or any one of the other billion header files that are missing)
This may mean an incomplete installation of the Developer tools. Here's what to do:
- From the Developer CD, open the NextCD folder and then Packages.
- From the Services menu, use Open Sesame to open the Package as Root
- Install the Package to its default file locations.

Now, in your project in PB, you may need to tell the compiler where to find those libraries.
- From the Tools menu, open the Inspector and look at the Build Attributes.
- Under Framework Search Order, Set... a new path to where those files just got installed: /NextLibrary/Frameworks
- Do the same for Header Search Order, but use /NextDeveloper/Headers

Now you should be able to Build in Project Builder! Note that PB doesn't have a "Build and Go" that I can find, so once you build, you need to use Workspace Manager to find your newly made .app and double click it to test it out.
UpdateLayout in WPF
Sometimes when you're working on a UI in WPF, the actions of one method won't actually happen before the next method begins running on them. This can cause weird results if your second method depends on the first method's changes being done rendering.
Use the UpdateLayout() method to make sure your changes are actually done before you begin operating against them. It will make life so much better.
Expression Blend (and other Expression Products) in a VM
Expression Blend doesn't work properly in a typical VMWare 6.* environment. Some people report lock-ups, I just get a garbled screen. Fortunately, the fix is easy: disable 3D graphics acceleration in the VM Settings...

Via this guy...
Automating an Apple TV with Cron
Copy and enable Cron from 10.4.
Schedule Cron jobs using crontab at the command line. Use Ctrl+D to exit crontab once all your jobs are created.
Examples:
Restart the AppleTV at 8:10am every morning (say, to re-establish network connections with computers that were off during the night):
10 8 * * * sudo /sbin/reboot
Shutdown the AppleTV at 1:00am every morning:
0 1 * * * sudo /sbin/shutdown -h now
You'll need to enable the frontrow account to use sudo without a password.