tag:blogger.com,1999:blog-66357011159531022422009-03-18T01:58:39.918-05:00ClockskewMacs and Stuffjdqnoreply@blogger.comBlogger12125tag:blogger.com,1999:blog-6635701115953102242.post-38168468894525315252007-08-23T13:32:00.000-05:002008-04-28T01:51:05.587-05:00New iPod Nano Size AnalysisOkay, so I was bored today...<br /><br />Yesterday an image made the rounds on all the Apple related sites showing a 'leaked' image of the new iPod nano. Today most of the larger sites who displayed the image received take-down notices from Apple legal. Consensus seems to be that the take-down notices confirm the image was real. Based on that, it's possible to approximate the size of the new nano by using an overlay of the current nano and its known dimensions.<br /><br />I've made the assumption that the click-wheel is the same size on both nanos. There is no reason to think otherwise, and in fact they match-up perfectly in width of ring, diameter of center button, font/symbol size, etc. <br /><br /><center><img src="http://clockskew.com/images/newnano.jpg" alt="New iPod nano size comparison" /><img src="http://clockskew.com/images/newnanomock.jpg" alt="New iPod nano size comparison mockup" /></center><br /><br />It's interesting to note that the distance from the click-wheel to the top of the nanos is exactly the same. Also, the bezel width from the top of the nano to the top of the screen is the same. Using the known dimension of the current iPod nano, I interpolated the size of the new nano to be approximately 3" x 2.3" (using the rulers in photoshop adjusted to the pixel/inch scale of the current iPod nano image). That means the length decreased by ~0.5" and the width increased by ~0.7". <br /><center><img src="http://clockskew.com/images/newnanocomp.jpg" alt="Comparison of new nano to iPod" /></center><br />A size of 3" x 2.3" is very peculiar. The 5.5G iPod has a width of 2.4". Why would Apple make the new nano about as wide as the iPod? The whole point of the nano is that it is significantly smaller than the iPod. With an iPod nano almost the same size of an iPod, indeed with almost exactly the same size screen, there needs to be something else as the distinguishing factor between the two models. That factor could be an iPhone-like touch-screen and size. <br /><br />Since I'm already taking so many logical leaps (like using a 'leaked' image to base all this on), <strong>I'll say the new iPod nano form factor strengthens the rumors that the next iPod will be touch-screen and will be available at the same time as the new nano.</strong> This also falls inline with the rumor of OS X on the new iPod. Guess we'll see.<br /><br />UPDATE: Yay me!<div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6635701115953102242-3816846889452531525?l=blog.clockskew.com'/></div>jdqnoreply@blogger.com5tag:blogger.com,1999:blog-6635701115953102242.post-35272233793151430042007-03-01T16:40:00.000-06:002008-04-28T01:51:04.105-05:00Motorola Phone Plugins for iSync UpdateJust a recap for all those just finding this page and not wanting to slog through all the comments. The following plugins are available at this time.<br /><br />Motorola RAZR V3m<br />Motorola RAZR V3xx<br />Motorola RAZR V6<br />Motorola SLVR L71/L7e/L7i<br /><br />All work fine for syncing contacts with the latest version of iSync. Calendar syncing only works on the V3m at this time. I am working on getting calendaring to work on the others. All plugins can be downloaded from the <a href="http://www.clockskew.com/blog/downloads">Downloads</a> page.<br /><br />If you have a problem getting the plugin to work, post on the <a href="http://www.clockskew.com/forum/">Help Forum</a> and someone will help you. <div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6635701115953102242-3527223379315143004?l=blog.clockskew.com'/></div>jdqnoreply@blogger.com5tag:blogger.com,1999:blog-6635701115953102242.post-59687435405759032912007-02-28T14:30:00.000-06:002008-04-28T01:51:03.756-05:00iSync and a Motorola SLVR L71 / L7e / L7iI got a request for an iSync plugin for a motorola SLVR L71 / L7e / L7i so here it is. As with the other plugins, calendar syncing is sketchy at best. Please drop by the <a href="http://www.clockskew.com/forum/">forum</a> and post your calendar syncing errors so I can fix all the calendaring issues.<br /><br />Enjoy!<br /><br /><a href="http://www.clockskew.com/blog/downloads/">SLVRL7-phoneplugin-Ver01.zip</a><div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6635701115953102242-5968743540575903291?l=blog.clockskew.com'/></div>jdqnoreply@blogger.com0tag:blogger.com,1999:blog-6635701115953102242.post-76590252009292694472007-02-25T22:12:00.000-06:002008-04-28T01:51:01.577-05:00Need an iCal Tester for the V3mI need someone who uses iCal to test the following plugin for iSync and the V3m. It works fine on my V3m (recurring events, etc.). Anyway, test it and post any bugs in the <a href="http://www.clockskew.com/forum/">forum</a>. Once it works fine, I'm add the changes to the other plugins. Thanks.<br /><br /><a href="http://www.clockskew.com/stuff/RAZRV3m-phoneplugin-Ver03-test.zip">RAZRV3m-phoneplugin-Ver03-test.zip</a><div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6635701115953102242-7659025200929269447?l=blog.clockskew.com'/></div>jdqnoreply@blogger.com5tag:blogger.com,1999:blog-6635701115953102242.post-38178641256484274542007-02-20T20:53:00.000-06:002008-04-28T01:51:00.461-05:00New HowTos in ForumI get a lot of questions asking how to do basic operations like transferring files (ringtones, pictures, movies, etc.) or using iSync. So, I put together a few HowTos showing how to do these tasks. You can find them in the <a href="http://clockskew.com/forum/viewforum.php?f=6">forum</a>.<br /><br /><br /><div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6635701115953102242-3817864125648427454?l=blog.clockskew.com'/></div>jdqnoreply@blogger.com1tag:blogger.com,1999:blog-6635701115953102242.post-3468805560671717412006-12-18T15:43:00.000-06:002008-04-28T01:50:32.711-05:00iSync and a Motorola RAZR V3xxSomeone asked me to put together an iSync plugin for the RAZR V3xx. Well, here it is. All I need are some testers.<br /><br /><a href="http://www.clockskew.com/blog/downloads/">iSync-2.3 RAZR V3xx phoneplugin Ver 4</a> [16KB]<br /><br />Put the PhonePlugins folder in either ~/Library or /Library. Enjoy!<br /><br />***** READ *****<br />If you are having difficulty, please post to the <a href="http://www.clockskew.com/forum/">Forum</a> (http://www.clockskew.com/forum/) instead. It is much easier to get a dialog going in there than in the blog comments.<div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6635701115953102242-346880556067171741?l=blog.clockskew.com'/></div>jdqnoreply@blogger.com55tag:blogger.com,1999:blog-6635701115953102242.post-27259549075142597052006-12-06T12:55:00.000-06:002008-04-28T01:50:15.770-05:00iSync and a Motorola RAZR (MAXX) V6Someone asked for a RAZR V6 iSync plugin, so here one is. I don't have a V6 in my hands, so I had to guess at some crucial details, but hopefully I guessed right.<br /><br /><a href="http://www.clockskew.com/blog/downloads/">iSync-2.3 RAZR V6 phoneplugin Ver 7</a> [32 KB]<br /><br />Anyway, copy PhonePlugins to ~/Library, test it out, and leave comments of how it fails. :) Also, the icon I made isn't the greatest, but it should do. Oh, if you have already paired the phone, redo the pairing after copying the plugin to ~/Library.<br /><br />***** READ *****<br />If you are having difficulty, please post to the <a href="http://www.clockskew.com/forum/">Forum</a> (http://www.clockskew.com/forum/) instead. It is much easier to get a dialog going in there than in the blog comments.<div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6635701115953102242-2725954907514259705?l=blog.clockskew.com'/></div>jdqnoreply@blogger.com36tag:blogger.com,1999:blog-6635701115953102242.post-83980155626685352152006-11-28T14:38:00.001-06:002008-04-28T01:50:15.173-05:00Finding the impossible-to-find<p>I've been trying to find a Wii this Christmas and it has been quite difficult. However, I stumbled upon <a href="http://www.outtastock.com">www.OuttaStock.com</a> and it has proved invaluable. I just snagged a Wii bundle using the <a href="http://www.outtastock.com/wii/">Nintendo Wii Finder</a>, so I figure I can post my secret now. ;) <br /></p><br /><div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6635701115953102242-8398015562668535215?l=blog.clockskew.com'/></div>jdqnoreply@blogger.com0tag:blogger.com,1999:blog-6635701115953102242.post-10011706511503593582006-11-15T16:08:00.001-06:002008-04-28T01:49:43.422-05:00Sprint RAZR V3m - Playing Video, Music, and Other NonsenseSome interesting notes on trying to play music on my phone.<br /><br />Even though everywhere seems to say the phone only plays .wma files, I can't get mine to play them. However, it plays .mp3 and .m4a files just dandy. This is great as I wasn't looking forward to converting my music to Microsoft .wma on my Macbook.<br /><br />Also, I could only receive files from my phone and not send to it until I updated the firmware (Settings -> Phone Info -> Update Phone SW). Now everything works great -- file transfer, iSync. <br /><br />Ringtones can be created by renaming an .mp3 file as a .qcp and saving it in the audio directory. It is picked up from there just fine. Use bluetooth file transfer for this.<br /><br />Something else that is neat is playing videos. I can take a video, say a movie trailer, and using Quicktime export it to MPEG4 (176x144) and upload it to the video folder. Then I can watch it fullscreen (though you have to hold the phone sideways because it is widescreen) using the video player. It's really too small of a screen to be useful, but it's still cool. Here is the trailer for the movie 300 and the Daily Show (Nov. 15) formatted for the RAZR. <br /><br /><a href="http://clockskew.com/stuff/300.zip">300 Movie Trailer</a> [2 MB]<br /><a href="http://clockskew.com/stuff/DailyShow.zip">Daily Show 11/15</a> [25 MB]<br /><br />Unzip and put in /MMC/DCIM/video on your phone. You can play them by going to Pictures and Videos -> My Videos -> External Memory.<br /><br />***** READ *****<br />If you are having difficulty, please post to the <a href="http://www.clockskew.com/forum/">Forum</a> (http://www.clockskew.com/forum/) instead. It is much easier to get a dialog going in there than in the blog comments.<div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6635701115953102242-1001170651150359358?l=blog.clockskew.com'/></div>jdqnoreply@blogger.com68tag:blogger.com,1999:blog-6635701115953102242.post-49232792970479013962006-11-08T02:35:00.018-06:002008-04-28T01:49:20.333-05:00iSync and a Motorola RAZR V3mMy brand-spanking new RAZR V3m is sadly <a href="http://www.apple.com/macosx/features/isync/devices.html">not supported</a> by iSync. So, I put together my own plugin and now contacts and calendar sync perfectly. My RAZR V3m is from Sprint, so I don't know if the Verizon version works. Anyway, grab the zip, copy the "phoneplugins" folder to either <i>~/Library</i> or <i>/Library</i> and try it out. <br /><br /><a href="http://www.clockskew.com/blog/downloads/">iSync-2.3 RAZR V3m phoneplugin</a> [33 KB]<br /><br />I don't know if it is a quirk with my setup or it's something all RAZR owners deal with, but after you sync, a "Voicemail" contact will be added to the contacts on your Mac. Don't delete it or all further syncs will fail until the entry is put back.<br /><br />Also, you can sync email addresses as well as phone numbers by clicking on the phone's icon in iSync, and going to More Options...<br /><br /><br />***** READ *****<br />If you are having difficulty, please post to the <a href="http://www.clockskew.com/forum/">Forum</a> (http://www.clockskew.com/forum/) instead. It is much easier to get a dialog going in there than in the blog comments.<div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6635701115953102242-4923279297047901396?l=blog.clockskew.com'/></div>jdqnoreply@blogger.com50tag:blogger.com,1999:blog-6635701115953102242.post-44157193726072775682006-09-25T21:36:00.018-05:002008-04-28T01:49:19.391-05:00Old posts removedAll my old quartz composer posts (how to enable hidden patches, how to write custom patches*, etc.), iChat, and other misc. info has been removed and backed-up. If you really want access to it, email me and I'll send you what you need. For now though, I don't really spend much time with Quartz Composer and the other things are out-dated.<br /><br />A few of the files though, are available here:<br /><br /><a href="http://clockskew.com/stuff/atom.qtz">atom.qtz</a> [26 KB]<br /><a href="http://clockskew.com/stuff/BinaryClock.qtz">BinaryClock.qtz</a> [24 KB]<br /><a href="http://clockskew.com/stuff/CPUFountain.qtz">CPUFountain.qtz</a> [4 KB]<br /><a href="http://clockskew.com/stuff/EarthWeather.qtz">EarthWeather.qtz</a> [683 KB]<br /><a href="http://clockskew.com/stuff/QCPong.qtz">QCPong.qtz</a> [17 KB]<br /><a href="http://clockskew.com/stuff/EnablePlugins.plugin.zip">EnablePlugins.plugin.zip</a> [5 KB]<br /><br />*Yes, you came to the right spot, I'm the one who originally figured out how to write a custom patch for QC. I had hoped that by now Apple would have an API for it, but alas, they don't. Oh well. I took down the custom patch tutorial posts because they were poorly written and only ended up with me getting swamped with emails for clarification. Sorry about that. If there is enough demand for them again, I'll dig them out of my backups and repost them.<div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6635701115953102242-4415719372607277568?l=blog.clockskew.com'/></div>jdqnoreply@blogger.com0tag:blogger.com,1999:blog-6635701115953102242.post-50240890559251860342005-08-01T00:50:00.020-05:002008-04-28T01:49:18.617-05:00Resurrected - How-to: Write a Custom Patch<strong><i>[Update: Because I get a million requests for this a month, I've dug it out of the backups and reposted it. However, it's almost 2 years old now so rest assured things have probably changed. For starters, you probably will need new header files. Just grab class-dump and run it on the QC executable. Also, I'm not sure these steps even work anymore, so programmer beware.]</i></strong><br /><br /><br />First, a Quartz Composition, referred to as QC from here on, has the following structure:<br /><br /><pre><br />MyPatch.plugin<br /> - Contents<br /> - MacOS<br /> - Resources<br /> - Info.plist<br /> - Version.plist<br /></pre><br /><br />The patches reside in the /System/Library/Frameworks/Quartz.framework/Frameworks/QuartzComposer.framework/Resources folder and have the .plugin extension.<br /><br /><i>MacOS</i> contains the compiled binary and <i>Resources</i> contains patch XML description files and .nibs.<br /><br />To create a custom patch, the binary must be compiled properly, resources populated, and a proper Info.plist and Version.plist must be created. All can be done from XCode. I am currently using XCode 2.1, but I am sure older versions will work the same.<br /><br />To begin, create a new Cocoa Bundle project. Since there is no template for a Quartz Composer plugin (obviously), we'll just modify the Cocoa Bundle to suit our needs. Before we start coding, some header files are needed to compile the patch properly. Add these to the project as source: <a href="http://www.clockskew.com/stuff/GFPlugInRegistrationProtocol.h">GFPlugInRegistrationProtocol.h</a>, <a href="http://www.clockskew.com/stuff/QCPatch.h">QCPatch.h</a>, <a href="http://www.clockskew.com/stuff/GFNode.h">GFNode.h</a>, <a href="http://www.clockskew.com/stuff/GFGraph.h">GFGraph.h</a>. Also, you'll need to add the Quartz.framework to the <i>Frameworks and Libraries</i> section of XCode. It can be found in /System/Library/Frameworks/. Lastly, change the target extension from bundle to plugin.<br /><br />Now besides the classes for each patch, one loader class must be created. Call it whatever you want, but I'll call mine PatchLoader. Create the PatchLoader.h and PatchLoader.m files. Make your equivalent of the PatchLoader.h file look like this:<br /><br /><pre><br />#import <Cocoa/Cocoa.h><br />#import "GFPlugInRegistrationProtocol.h"<br /><br />// List your patch class and any QC patches you use here.<br />@class GFNodeManager, MyPatch;<br /><br />@interface PatchLoader : NSObject <gfpluginregistration> {<br />}<br /><br />+ (void)registerNodesWithManger:(id)fp8;<br /><br />@end<br /></pre><br /><br />And your PatchLoader.m file look like this:<br /><br /><pre><br />#import "PatchLoader.h"<br /><br />@implementation PatchLoader<br /><br />+ (void)registerNodesWithManager:(id)fp8 <br />{<br /> [fp8 registerNodeWithClass: [MyPatch class]];<br />}<br /> <br />@end<br /></pre><br /> <br /> That's all you need for the loader. Now comes the juicy part -- the patch file implementation. I'll call mine <i>MyPatch</i> to match the references in the above code. Call yours whatever, just make sure the references in the PatchLoader class match. Make your skeleton patch look like this MyPatch.h:<br /> <br /><pre><br />#import <Cocoa/Cocoa.h><br />#import "QCPatch.h"<br /> <br />// These are possible input/output types. You don't need these if you <br />// don't have inputs/outputs, but it doesn't hurt to leave them.<br />//<br />// TODO: I need to post the headers to each of these so you can<br />// see the methods available.<br /> <br />@class QCIndexPort, QCNumberPort, QCStringPort, <br /> QCBooleanPort, QCVirtualPort, QCColorPort,<br /> QCImagePort;<br /> <br /> <br />@interface MyPatch : QCPatch { <br />}<br /> <br />+ (int)executionMode;<br />+ (BOOL)allowsSubpatches;<br />- (id)initWithIdentifier:(id)fp8;<br />- (id)setup:(id)fp8;<br />- (BOOL)execute:(id)fp8 time:(double)fp12 arguments:(id)fp20;<br /> <br />@end<br /></pre><br /> <br />and this MyPatch.m:<br /> <br /><pre><br />#import "MyPatch.h"<br /> <br />@implementation MyPatch<br /> <br />+ (int)executionMode<br />{<br /> // I have found the following execution modes:<br /> // 1 - Renderer, Environment - pink title bar<br /> // 2 - Source, Tool, Controller - blue title bar<br /> // 3 - Numeric, Modifier, Generator - green title bar<br /> return 2;<br />}<br /> <br />+ (BOOL)allowsSubpatches<br />{<br /> // If your patch is a parent patch, like 3D Transformation, <br /> // you will allow subpatches, otherwise FALSE.<br /> return FALSE;<br />}<br /> <br />- (id)initWithIdentifier:(id)fp8<br />{<br /> // Do your initialization of variables here <br /> <br /> return [super initWithIdentifier:fp8];<br />}<br /> <br />- (void)dealloc<br />{<br /> [super dealloc];<br />}<br /> <br />- (id)setup:(id)fp8<br />{<br /> // setup vars here<br /> return fp8;<br />}<br /> <br />- (BOOL)execute:(id)fp8 time:(double)fp12 arguments:(id)fp20<br />{ <br /> // This is where the execution of your patch happens. <br /> // Everything in this method gets executed once<br /> // per 'clock cycle', which is available in fp12 (time).<br /><br /> // fp8 is the QCOpenGLContext*. Don't forget to set <br /> // it before you start drawing. <br /> <br /> // Read/Write any ports in here too.<br /> <br /> return TRUE;<br />}<br /> <br />@end<br /></pre><br /> <br />We now need to create a MyPatch.xml file and put it in the <i>Resources/English.lproj</i> directory. You can do this by hand or have it created automatically by modifying the default Target in XCode. The format of the file will look like this:<br /> <br /><pre><br />Root [Dictionary]<br /> - inputAttributes [Dictionary]<br /> - nameOfInputVarUsed [Dictionary]<br /> - name [String]<br /> - description [String] <br /> - outputAttributes [Dictionary]<br /> - nameOfInputVarUsed [Dictionary]<br /> - name [String]<br /> - description [String] <br /> - nodeAttributes [Dictionary]<br /> - category [String]<br /> - copyright [String]<br /> - description [String]<br /> - name [String]<br /></pre><br /> <br />If you aren't sure what I mean above, just pop open one from an already created patch.<br /> <br />Now we're in the homestretch. Two files are left to create, Info.plist and Version.plist. Both these can be added to the XCode Target. In fact, Info.plist is already there, so you just need to add some fields to it. They should look like this. Info.plist:<br /> <br /><pre><br />Root [Dictionary]<br /> - CFBundleDeveleopmentRegion [String -> English]<br /> - CFBundleExecutable [String -> Whatever you called your executable]<br /> - CFBundleIdentifier [String -> com.whatever.WhateverYoursIsCalled]<br /> - CFBundleInfoDictionaryVersion [String -> 6.0]<br /> - CFBundleName [String -> Whatever yours is called]<br /> - CFBundlePackageType [String -> BNDL]<br /> - CFBundleShortVersionString [String -> number]<br /> - CFBundleVersion [String ->number]<br /> - GFPlugin [Boolean - Yes]<br /> - NSPrincipalClass [String -> You Loader Class]<br /></pre><br /> <br />Version.plist:<br /><pre><br />Root [Dictionary]<br /> - BuildVersion [String -> whatever]<br /> - CFBundleShortVersionString [String -> whatever]<br /> - CFBundleVersion [String -> whatever]<br /> - ProjectName [String -> whatever]<br /> - SourceVersion [String -> whatever]<br /></pre><br /> <br />Just add the missing fields to Info.plist and create a new Version.plist like above . Well, that about does it. What is needed is someone to try out the steps and tell me what I forgot. It's always hard to remember everything when you already know how to do something.<br /> <br />I'll post all my stuff as soon as I clean it up, including the patch I am currently working on (just for you Roger), Vortex.<div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6635701115953102242-5024089055925186034?l=blog.clockskew.com'/></div>jdqnoreply@blogger.com0