Monday, March 31, 2003
Got the Find system finished... Had to rewrite that puppy three times before I was happy with it. Searching across multiple subscriptions and tracking where you are without going into a loop is not fun... Especially when you have to make it work backwards too. Ah well.
Also got the Refresh menu support put back in. Still some cleanup to do there, such as putting up a splash screen before the first image comes up (like iBert does), and handling cases where we can't connect. Also need to think about proxy support... Argh!
Overall, I'm pretty happy with the way its shaping up...
Also got the Refresh menu support put back in. Still some cleanup to do there, such as putting up a splash screen before the first image comes up (like iBert does), and handling cases where we can't connect. Also need to think about proxy support... Argh!
Overall, I'm pretty happy with the way its shaping up...
# posted 3/31/2003 06:34:32 AM |
Saturday, March 29, 2003
Its been fairly quiet for a few days... Well, I had a pretty bad cold I was fighting, and a major product launch at work. Putting out the last minute fires that happen with software launches is not fun when you're ill :-(
Anyway, it all went live, so today I could get back to iComic (thats what you wanted to hear, right?). I got the calendar panel reinstated, and implemented the entire Preferences window. I got it so you can switch between the iBert-style calendar pull-out window, and the current iComic floating panel, so that should make everyone happy. There are a few improvements in the calendar too but I won't bore you with those right now.
Other stuff... Added hotkey switching for going between comics, and got PageUp/PageDown working in the comic when it has scrollbars. I'm also part way through putting the comments window and Find screen in. Its looking good to have the beta sown up by mid week.
Anyway, it all went live, so today I could get back to iComic (thats what you wanted to hear, right?). I got the calendar panel reinstated, and implemented the entire Preferences window. I got it so you can switch between the iBert-style calendar pull-out window, and the current iComic floating panel, so that should make everyone happy. There are a few improvements in the calendar too but I won't bore you with those right now.
Other stuff... Added hotkey switching for going between comics, and got PageUp/PageDown working in the comic when it has scrollbars. I'm also part way through putting the comments window and Find screen in. Its looking good to have the beta sown up by mid week.
# posted 3/29/2003 06:33:05 AM |
Wednesday, March 26, 2003
The alpha (3.0a6) is now available from the iComic page. This is a minor update, the only real change being that you'll get a popup menu to see more comics if there isn't room to see the tabs (much like happens with the Bookmarks Bar in Safari, or the toolbar in most other Mac apps.
There are also several new plugins up on the Plugins page including PvP and TheNorm, as well as a fix to the image download problem that Doonesbury had in the Ucomic Favorites.
This is likely to be the last interim release before the beta... (which I need to get on and finish!)
There are also several new plugins up on the Plugins page including PvP and TheNorm, as well as a fix to the image download problem that Doonesbury had in the Ucomic Favorites.
This is likely to be the last interim release before the beta... (which I need to get on and finish!)
# posted 3/26/2003 06:32:32 AM |
Tuesday, March 25, 2003
The alpha (3.0a5) is now available from the iComic page!
- Adds the next/previous month buttons to the calendar
- The main window is now centered each time, and the calendar remembers its position
- The strips now print properly. It uses the image dimensions scales appropriately, and changes the orientation to match the image.
- Once the refresh scan has happened, it shows downloadable days in grey until the background loader has gotten to them.
# posted 3/25/2003 10:20:50 PM |
The alpha (3.0a4) is now available from the iComic page!
As stated earlier, it only supports one comic right now, but there is a sample plugin that downloads the Dilbert strip just as iBert did. The sample plugin comes with a readme-based tutorial that should help the more adventurous to build plugins of their own.
If you're considering writing a plugin, or would like to see one written, don't forget to stop by the iComic web forum. I'm especially interested to hear from folks that get plugins working, or that know how to rewrite my Perl script in half the lines of code ;-)
As stated earlier, it only supports one comic right now, but there is a sample plugin that downloads the Dilbert strip just as iBert did. The sample plugin comes with a readme-based tutorial that should help the more adventurous to build plugins of their own.
If you're considering writing a plugin, or would like to see one written, don't forget to stop by the iComic web forum. I'm especially interested to hear from folks that get plugins working, or that know how to rewrite my Perl script in half the lines of code ;-)
# posted 3/25/2003 06:28:42 AM |
Monday, March 24, 2003
OK... I think I'm almost there for the alpha - I'll give it one last run through tomorrow before posting it.
Before I put it out, I want to say that for right now I only have it intrinsically supporting one comic, which is Chris Cantrell's The Asylumantics. I have an external plugin that does Dilbert which I will post as a starting point for folks wanting to make more plugins. I also need to write up a tutorial, but I know some of you won't want to wait for me to get done with that, so I'll post the plugin before I start on the tutorial.
Thanks to everyone thats been by the iComic web forum. We're still collecting the list of comics you'd like to see supported. This is also the place to jump in if you want to start writing plugins... Hopefully through the forum, plugin developers can pool ideas and we can get some really fast, cool comic plugins going before iComic goes gold :-)
Before I put it out, I want to say that for right now I only have it intrinsically supporting one comic, which is Chris Cantrell's The Asylumantics. I have an external plugin that does Dilbert which I will post as a starting point for folks wanting to make more plugins. I also need to write up a tutorial, but I know some of you won't want to wait for me to get done with that, so I'll post the plugin before I start on the tutorial.
Thanks to everyone thats been by the iComic web forum. We're still collecting the list of comics you'd like to see supported. This is also the place to jump in if you want to start writing plugins... Hopefully through the forum, plugin developers can pool ideas and we can get some really fast, cool comic plugins going before iComic goes gold :-)
# posted 3/24/2003 06:27:39 AM |
Sunday, March 23, 2003
Made some progress, but mostly just cleaning up before moving on. Also thinking more about the alpha release, which I want to get posted by the end of the week. Don't expect a large number of comics though... With iComic I'm only planning to ship with plugins for comics I have permission to collect.
Still, part of the reason to get the alpha out is to allow folks to start putting plugins together for every comic under the sun, so hopefully by the time I launch there will be a number of plugins available.
To support this, I have put up the iComic page where plugins will be posted as they become available. Also, to support the iComic plugin community, and provide a place for comic fans to come together, there is now an iComic web forum.
Many thanks go out to Chris Cantrell, author of The Asylumantics for hosting the iComic forum.
Still, part of the reason to get the alpha out is to allow folks to start putting plugins together for every comic under the sun, so hopefully by the time I launch there will be a number of plugins available.
To support this, I have put up the iComic page where plugins will be posted as they become available. Also, to support the iComic plugin community, and provide a place for comic fans to come together, there is now an iComic web forum.
Many thanks go out to Chris Cantrell, author of The Asylumantics for hosting the iComic forum.
# posted 3/23/2003 06:23:36 AM |
Friday, March 21, 2003
Got the background thread based loading back in, so the comics come in properly now. I was having so much trouble getting this working... and after a day banging my head against it, it turned out to be a missing oneway keyword... one word... grrr!
I also spent a few hours in Photoshop putting iComic's icon together. Its not easy to come up with meaningful app icons that also look nice... Hopefully the one I've made won't annoy anyone too much... It came out looking like a tomato, or like one of those red noses that circus clowns wear -- I guess the way you see it depends on whether you're feeling hungry or not...
I also reworked the way plugins are structured. There are two types of plugins supported: builtin, and bundle based. In both cases the app goes to the "Plugins" folder inside the app/bundle, and pulls in an inventory file. This approach allows the app (or a plugin bundle) to contain more than one comic. Where that is nice is where some comic sites work very consistently, such as UComics... You could now write a perl library that all your plugins shared, which greatly reduces the amount of legwork you have to do.
I also fixed the issue with large (tall) comics, such as the Sunday version of Non Sequitur. You now get a scrollbar in tall comics (over 600px tall).
Next step is doing the Favorites panel.
I also spent a few hours in Photoshop putting iComic's icon together. Its not easy to come up with meaningful app icons that also look nice... Hopefully the one I've made won't annoy anyone too much... It came out looking like a tomato, or like one of those red noses that circus clowns wear -- I guess the way you see it depends on whether you're feeling hungry or not...
I also reworked the way plugins are structured. There are two types of plugins supported: builtin, and bundle based. In both cases the app goes to the "Plugins" folder inside the app/bundle, and pulls in an inventory file. This approach allows the app (or a plugin bundle) to contain more than one comic. Where that is nice is where some comic sites work very consistently, such as UComics... You could now write a perl library that all your plugins shared, which greatly reduces the amount of legwork you have to do.
I also fixed the issue with large (tall) comics, such as the Sunday version of Non Sequitur. You now get a scrollbar in tall comics (over 600px tall).
Next step is doing the Favorites panel.
# posted 3/21/2003 01:06:25 AM |
Wednesday, March 19, 2003
Added the calendar back in. Contrary to the calendar in iBert, the one in iComic is done as floating panel. This has a number of benefits:
Another feature under consideration is image stitching. Some comics don't have just one image - the comic is a montage of several images. It'd be nice to be able to do that... I just need to figure out how ;-)
- You can see it even when the Favorites is being shown.
- It has its own "VCR controls" for changing the date... and because it doesn't resize when changing between comics, you can navigate without having to keep moving your mouse (a common request!)
Another feature under consideration is image stitching. Some comics don't have just one image - the comic is a montage of several images. It'd be nice to be able to do that... I just need to figure out how ;-)
# posted 3/19/2003 01:01:36 AM |
Tuesday, March 18, 2003
This morning I put in the code to actually make the tabs do something when you click them. Also got it so it would change between subscriptions (comics).
To prove to myself that it was "doing the right thing", I implemented the plugin for FoxTrot (copied the Dilbert one and modified the perl script). You can see a screen capture showing it in all its glory :-)
Best of all, because the app only cares about the plugin, all the automatically worked right out of the box, including capturing the past 20 strips (the archive on the FoxTrot page) — the autoresizing, home button - all just worked.
I'll probably post the app in a day or two so the more enterprising folk out there can start writing plugins for it... Thats not to say its done — there is no calendar, no favorites, no preferences ... but it should be enough that you could start writing plugins at least.
To prove to myself that it was "doing the right thing", I implemented the plugin for FoxTrot (copied the Dilbert one and modified the perl script). You can see a screen capture showing it in all its glory :-)
Best of all, because the app only cares about the plugin, all the automatically worked right out of the box, including capturing the past 20 strips (the archive on the FoxTrot page) — the autoresizing, home button - all just worked.
I'll probably post the app in a day or two so the more enterprising folk out there can start writing plugins for it... Thats not to say its done — there is no calendar, no favorites, no preferences ... but it should be enough that you could start writing plugins at least.
# posted 3/18/2003 01:00:25 AM |
Monday, March 17, 2003
This evening I worked on the iComic tabs. I got them so I think they work well, both with the metal background, but also with the white background of the comic body.
I have a screen capture showing the way the tabs look right now... Hopefully from this it will be obvious what I meant by the tabs being "cut in", though in the end I went for a bevelled, more Aqua-esque look rather than the simple cut out of the metal background... If you hate it (or love it!) now would be good time to tell me :-)
For now I just duplicated the plugin files to make multiple entries to show up. I still don't have anything but Dilbert working...
I have a screen capture showing the way the tabs look right now... Hopefully from this it will be obvious what I meant by the tabs being "cut in", though in the end I went for a bevelled, more Aqua-esque look rather than the simple cut out of the metal background... If you hate it (or love it!) now would be good time to tell me :-)
For now I just duplicated the plugin files to make multiple entries to show up. I still don't have anything but Dilbert working...
# posted 3/17/2003 12:59:12 AM |
Sunday, March 16, 2003
I've continued layering in the functionality for iComic. This is what keeps track of the strips we have downloaded. It is this component that will get called when you hit Refresh (or when the app starts up). It talks to the plugin, gets the additional strip(s) and adds them to its list.
I'm still not totally done here. The biggest omission is adding in the pending queue that the background thread uses to load the images. Right now to test it, I'm just doing it all in the foreground thread. I'm lifting most of the code from iBert, but its also a great opportunity to clean up too. The goal is a total rewrite, after all.
Anyway, as of now I have Dilbert showing up again, but now its talking to the perl-based plugin. I'm also experimenting with some variations on the window sizing, such as disabling the animation and resizing from the top left (so the toolbar buttons don't move around).
I'm still not totally done here. The biggest omission is adding in the pending queue that the background thread uses to load the images. Right now to test it, I'm just doing it all in the foreground thread. I'm lifting most of the code from iBert, but its also a great opportunity to clean up too. The goal is a total rewrite, after all.
Anyway, as of now I have Dilbert showing up again, but now its talking to the perl-based plugin. I'm also experimenting with some variations on the window sizing, such as disabling the animation and resizing from the top left (so the toolbar buttons don't move around).
# posted 3/16/2003 12:58:07 AM |
Friday, March 14, 2003
Dug up my old "Advanced Programming in the UNIX Environment" book and put in the low level plugin system. This is the system which calls out to the perl scripts. The scripts themselves are wrapped in a bundle (basically an application shell), so they can have an icon as well as localized resources such as the plugin authors name, the plugin description and so on. I will also be putting in a mechanism for the plugin author to add web links much like those in iBert, but specific to the comic you're viewing.
I also started prototyping the iComic UI. Priority #1 is to be able to support multiple comics cleanly without killing the user friendliness that makes iBert so popular. To do this, I'm borrowing the tabbed browsing feature found in browsers like Camino and the upcoming beta of Safari.
I did a screen capture to show the current work in progress. The swirly icon with the little arrow is the new web links button. Do you like it? The blank area below the toolbar will look much like the Favorites bar in Safari, the difference being that in order to give a more "stateful" appearance, I'm going to "cut" a tab into the bar so the tab for the selected strip appears to be connected to the image window. Unless it looks bad, in which case I'll do something else :-o
Next step is to build the indexing system that will allow the app to track the strips we have for the subscribed comics. That will then form the basis for the data that drives the calendar.
I also started prototyping the iComic UI. Priority #1 is to be able to support multiple comics cleanly without killing the user friendliness that makes iBert so popular. To do this, I'm borrowing the tabbed browsing feature found in browsers like Camino and the upcoming beta of Safari.
I did a screen capture to show the current work in progress. The swirly icon with the little arrow is the new web links button. Do you like it? The blank area below the toolbar will look much like the Favorites bar in Safari, the difference being that in order to give a more "stateful" appearance, I'm going to "cut" a tab into the bar so the tab for the selected strip appears to be connected to the image window. Unless it looks bad, in which case I'll do something else :-o
Next step is to build the indexing system that will allow the app to track the strips we have for the subscribed comics. That will then form the basis for the data that drives the calendar.
# posted 3/14/2003 12:57:20 AM |
Wednesday, March 12, 2003
After fighting with AppleScript for two days, I finally got the Dilbert script working... And its too slow :-(
I'm using the
While I can see some of this may be a failing on my part, at the end of the day the performance just wasn't acceptable, so I took a different tack, and learned enough perl to be able to get the list of archive pages, and the callback script it then uses to load each strip in. Check out my first Dilbert archive perl script
I'm using the
do shell script command to call out to a curl UNIX command, and piping that into grep and sed to clean it up but I think the problem is that when AppleScript brings the result in, its just not too efficient.While I can see some of this may be a failing on my part, at the end of the day the performance just wasn't acceptable, so I took a different tack, and learned enough perl to be able to get the list of archive pages, and the callback script it then uses to load each strip in. Check out my first Dilbert archive perl script
# posted 3/12/2003 12:55:50 AM |
Tuesday, March 11, 2003
Started playing around with AppleScript. I was programming in HyperCard 1.2 back in my former Mac life, and I know AppleScript is derived from that, but it appears to have lost a major piece of its soul along the way — or perhaps its just me...
One thing I have discovered... AppleScript is quite annoying when you're starting out. Sure, the English-like syntax is kind of cool, but its semi-formal syntax - the fact you can say "get the 1st word of paragraph 1 of my document" makes the whole thing give me this odd sense of deja vú back to days of the old Infocom adventures...
One thing I have discovered... AppleScript is quite annoying when you're starting out. Sure, the English-like syntax is kind of cool, but its semi-formal syntax - the fact you can say "get the 1st word of paragraph 1 of my document" makes the whole thing give me this odd sense of deja vú back to days of the old Infocom adventures...
You are in a dimly lit room. There is a lamp and a book.
> turn on lamp
The lamp is not turned on by you.
> turn the lamp on
You writhe suggestively, but the lamp is not impressed by your weak attempts to turn it on.
> get the book
The book is about astro physics. You don't get it.
> open the book
As you go to open the book, a monstrous Grue jumps out of the darkness and kills you.
You have scored 0 out of 150.
# posted 3/11/2003 12:53:59 AM |
Sunday, March 09, 2003
After deliberating for a while, I decided I better make a start on prototyping the script support for iBert 3.0, so I made a new Cocoa project, and began working out how I'm going to do it. I had to give it a name, so for now the working title is "iComic", at least until someone comes up with a better idea...
The first decision was that I wanted to allow plugin authors a way to provide a description, links to the comic they are referencing (much like the Dilbert site links in iBert 2.x). Finally there would need to be a way to do the script block itself.
This quickly descended into a painful evening getting into the CFXML API. Yikes... That thing is using 5 year old XML techniques... I guess I should look around for something better, but thats not really what I'm supposed to be doing right now, so I fight through it. By the end of the evening I have an app that reads my XML plugin doc and fills in some text boxes in a form.
I'm feeling quite pleased with myself now. It doesn't crash, and ObjectAlloc tells me there's no XML stuff left behind after I released the objects. Still, I can't overcome the feeling that I've aged 10 years in the CFXML process :-|
The first decision was that I wanted to allow plugin authors a way to provide a description, links to the comic they are referencing (much like the Dilbert site links in iBert 2.x). Finally there would need to be a way to do the script block itself.
This quickly descended into a painful evening getting into the CFXML API. Yikes... That thing is using 5 year old XML techniques... I guess I should look around for something better, but thats not really what I'm supposed to be doing right now, so I fight through it. By the end of the evening I have an app that reads my XML plugin doc and fills in some text boxes in a form.
I'm feeling quite pleased with myself now. It doesn't crash, and ObjectAlloc tells me there's no XML stuff left behind after I released the objects. Still, I can't overcome the feeling that I've aged 10 years in the CFXML process :-|
# posted 3/09/2003 12:50:09 AM |



