February 28, 2003

My apologies to anybody who downloaded the Blog 7.1 build before my announcement on this blog yesterday. About an hour after my announcement, I learnt from a user that the archive table of content generation code had a bug in the build I had put up. I had originally worked on that code to fix the very first entry range not showing up in the archive table of contents and got it working fine but then had decided to optimize the code so that I could drop a few extra lines and maybe save a few CPU cycles … and didn’t test it after that :p Turns out that I forgot to use NOT where it was supposed to be used and the whole archive table of contents generation loop was being bypassed and you ended up with a blank archive TOC. I fixed that yesterday within an hour of learning of the problem and uploaded a new build which incidentally also contains the new ActionBar based menu system with the Windows XP look – let me know what you think about it as well as if it works for all of you under all flavours of Windows.

Once I got that quick fix behind me, I began looking into the whole auto-update thing. I was first thinking of using an existing component but out of all the components that I looked at, I liked only a few and my final choices were a freeware component and a shareware one. I liked the Pro version of the shareware one since it supported updating multiple files as opposed to the single file update approach taken by the freeware one and the non-Pro version of the shareware component. Since I am also thinking of splitting the Blog code into an executable and several DLLs (both to make the auto-updating easier and to make code management easier), neither of the components (except for the Pro version for which I’d have had to pay) was going to work for me. So I decided to write my own :p

I’ve been working on that code most of yesterday evening. I got the basic structure in place and the code to access a given URL, read an info file and then either redirect to a different location (in case the download needs to be moved …) or get the latest build info from the file and give the user the option to update. Since this requires quite a bit of UI prompting, my first idea was to build in the UI stuff into the component but then I realized that would: a) add to the final component size b) not allow the end-user to customize the UI the way s/he wants. So I’m doing the whole thing on an event based architecture. There are a ton of events for everything you can think of and then the user can handle the events to display information such as a list of changes as well as the files to be downloaded etc.

At the moment, the component still supports only one file to be downloaded but I intend to extend it to support multiple files once I get the basic code working. I also want to add support for both optional and mandatory downloads so that the user can select whether s/he wants to download the optional components or not. Of course, that too is in the future since I still haven’t even settled on the update info file format except for a fairly nebulous idea as to the general structure. This probably will take me a few days to get working correctly and once I get that done, I guess I can go back to Blog and look into either merging in BlogMan or splitting up the code into an executable and DLL before doing the merging in.

Tags:
Posted by Fahim at 6:38 am  |  12 Comments

February 27, 2003

Well, as Phil and Duane have already commented, Blog 7.1 is out :p Incidentally, Phil wrote me a detailed e-mail pointing out certain things that can be changed in Blog for the better (sorry about not responding yet Phil – just wanted to take the time and respond at length …) and while I was inclined to hold back 7.1 to add some of his suggestions, none of them were really bug fixes (except perhaps for one) and so I felt it would be better to integrate his suggestions into Blog 8.0. The one thing he pointed out that could qualify as a bug is the fact that Blog does not work around FTP failures gracefully – I did look into the code to see if that could be fixed quickly but turns out that is going to need some major overhauling of the publishing code to allow Blog to skip publishing a site if it encounters an FTP error on that site and to go to the next one. I sometimes get Blog to do that by clicking the Close button while in the middle of a publish (if it fails FTP or waits on FTP) but that’s not always reliable :p

Anyway, now that Blog 7.1 is out, I’ve been considering the next step for Blog and the direction it is to take. I’ve decided to put aside my fanatical observation of the executable file size and to add a few things which would probably increase the executable size greatly but make Blog functional and look good – of course, you may not agree with me :p I’ve already started on this road by replacing the current Blog menu with ActionBars so that the menu will have the Windows XP style and will look good. The reason that I didn’t use ActionBars before was because I couldn’t figure out how to do the dynamically created custom snippet menu and now that I’ve finally figured out how to loop through action bar items, I think it will work fine. In fact, I learnt a bit more about action bar handling through this change and was able to change even the custom snippet toolbar code to make it easier to read and to code :p

Other than the UI changes, I am also planning on adding an auto-update feature to Blog so that users can be automatically informed of new releases and download them immediately from inside Blog. There are two reasons for this particular feature – the obvious one being the ease of use for the user but the other one is the fact that I am thinking of releasing interim/preview releases for those who might be interested in bleeding edge stuff to test while on the road to 8.0 :-) Based on how long it took to release 7.1 and the fact that I’ve been growing increasingly busy, I have a feeling that 8.0 might be a good ways off, especially since it’s going to involve major UI, database and code overhauls. So I thought I’d do a quick release first with some of the minor UI modifications and the auto-update feature built-in and then put up preview releases as and when I get to a new plateau of stability and usability. That way, interested users can keep up with development and hopefully find bugs that I might have missed. What do you think? :-)

Tags:
Posted by Fahim at 6:41 am  |  No Comments

February 26, 2003

I’m considering releasing Blog 7.1 today – not sure if I’ll be able to since I just remembered a couple of old bugs which are supposed to be squashed but I’m not sure if I really tested :p So I’ll do the testing and then if it still works as it should, expect a release sometime today – unless I get really busy. Incidentally, while going through my e-mail collection of old bug reports and feature requests for Blog, I notice that there were several requests for smileys – I mean the ability to insert a customized smiley face instead of using text emoticons. This should be fairly simple with Blog without providing any additional functionality – especially now that I seem to have got custom snippets working without any problems <g> All you need to do is upload the smiley icons to your server and then create a set of smiley snippets on your installation of Blog which basically uses the IMG tag to specify the location for each particular smiley. Then you can add these extra snippet buttons to your toolbar (wait till 7.1 is released though since toolbar customizations seems to be the reason for the Blog slowdown) and simply click on the button when you need a particular smiley. You can even add that smiley icon to the button using the custom icon feature in the custom snippet definition dialog but the only thing to remember is that while the smiley you upload to the server has to be GIF, JPG or PNG, the image you use for your buttons will have to be an icon (ICO) file – so you will need two versions of the smiley. Hmm .. I might actually try this out myself :p

Tags:
Posted by Fahim at 6:26 am  |  4 Comments

February 25, 2003

Of humanity and such …

I’m still reading Gordon R. Dickson’s "Childe" cycle. The fifth book in the series "The Final Encyclopedia" has been the biggest yet. At a whopping 700 pages and a font size tinier than normal, it probably equals all the other four books that went before it since all of them were around 200+ pages :p However, this books does take the time to explore the character and to talk about humanity and its future at length perhaps because it was written at a different time – a time at which novels weren’t bound by page limitations which set them at around 200-300 pages .. Or maybe it was just because Gordon R. Dickson was a known writer by then. Whatever the case maybe, while some might find this book to be extremely long winded at times, I found it to be thought provoking.

The book postulates that humanity is a giant multi-celled organism made up of all the individual people that make up humanity. That humanity as an organism has a consciousness of its own and that this mega-creatures actions are defined by the combination of actions of all individuals. I am not sure that I do subscribe to this idea or to some of the others Dickson has in the book about the evolution of the race. But then again, I probably am not the kind of person who sees things philosophically – at least, not at that high a level of philosophies. I’d rather deal with things at a personal level or at least at a tangible level.

Something did come out of the book that made me think of something though – evolve my own philosophy if you want to call it that :p However, it was not the book itself but an analysis written about the book and it’s characters which made me come up with my idea. The analysis pointed out that the main character – Hal Mayne, who incidentally is male – acquires traits like compassion, intuition and empathy which are traditionally the domain of females and that Hal’s companions, who happen to be female, take up traditionally male roles … or something to that effect. This made me think about Dickson’s idea of "splinter cultures" differently. In Dickson’s story, the "splinter cultures" are basically people who embody one specific facet of full-spectrum man from Earth – the philosopher, the man of faith or the warrior. These people have left Earth to travel to different worlds where they built a life for themselves with like minded others.

To me it seems as if we have splinter cultures here on Earth itself – that of men and women. I’ve always maintained that men and women are just two halves that make up a whole but if you look at it another way, they are each missing a half to make them complete. This half as far as men goes is the ability to empathize, to be able to see something from another’s point of view, to have compassion. I can only speak for men since that’s the point of view I’m familiar with, I can’t say this is what women lack since I’d be going based on hearsay, stereotypes and other input which might not be objective – plus, any ladies reading this might get totally ticked off at me :p But I digress …

To me it seems that humanity can be improved upon if the two halves of humanity were able to acquire some of the positive traits of each other. This would lead to a more compassionate, more caring race that could perhaps at last leave behind all the bickering, all the schisms, all the other ills of humanity and work towards a world united as one race. That is my dream …

Looks as if the Blog 7.1 did the trick – or at least so it seems from what Dominion tells me :p He says things are working fine for him and so I hope that the mysterious slowdown bug is laid to rest at last because I’d hate for it to be carried on to Blog 8.0 since some people might not want to migrate to 8.0 if it turns out to be too bloated :p This is something Phil mentioned in a comment – that if I merged Blog and BlogMan, people can always decide not to upgrade but I worry about bugs since all bug fixes usually go into the newer version and I’d hate anybody determined to stick to 7.0 to be stuck with any bugs. Hopefully, the 7.1 release will take care of all bugs and we can start off 8.0 with a clean slate.

Incidentally, I’d be interested in your response to the new UI changes in 7.1 but I guess I’ll have to wait till 7.1 is release and everybody has had a chance to test it out for themselves. Personally, I like the new UI but that’s only because I use the bare minimum of Blog features :p I’m more interested in the comments of somebody who uses the Preview feature a lot and/or the built-in Blog comments. Since the Preview pane is in a tab by itself, you might find it a bit awkward and if so, I’d like to try to do something to make the user experience a better one.

Since I’d switched over to Delphi 7.0 at work yesterday (I uninstalled all the old Delphi 6.0 and 7.0 stuff and reinstalled Delphi 7.0 :p), I had messed up and put in the demo version of PlusMemo. So the users who got the pre-release version of Blog 7.1 get a PlusMemo nag screen. This will be rectified as soon as I can find my copy of the registered version and you should have a nag-free release when I do do the public release. I’m also playing with a few internal components to see if I can try to reduce the application file size since the switch to Delphi 7.0 meant a sudden jump in the final executable size. Granted, it’s not even 100kb (more like half that) but I still hate executable size increases and am trying to see if I can somehow cut down on that by using a different component to do the same job.

Tags:
Posted by Fahim at 6:15 am  |  4 Comments

February 24, 2003

I’ve been working with Blog 7.1 under Delphi 7.0 and it isn’t too bad – the compile time is still a bit too long to suit my tastes but other than that, I like Delphi 7.0 quite a bit. I’ve also been looking at it’s RAD web development stuff and it looks really interesting – I intend to do something with that soon. But in the mean time, I think Blog 7.1 is almost ready for release. I would have released it today except for the fact that I got a chance to actually test whether a particular bug that I *thought* would be fixed by this release, is really fixed. The bug? Blog slowing down at startup to several minutes (I really didn’t know it took that long till a Blog user told me so a few days ago) after a few weeks or months. I’d noticed no difference myself but had received complaints from several users.

I suspected that this might have something to do with the custom code snippet feature but was unable to test for sure since I didn’t have the problem myself. However, Dominion (the user who said that his Blog installation took over five minutes to start) is willing to do some testing for me and so I want to check if he still has the problem with the latest build of Blog. If he doesn’t, I can be sure that the bug is gone but if not, then I can try to isolate the problem before I do the next release. I believe that the bug has to do with custom snippet buttons on the toolbar and only if you have any custom buttons on the toolbar – I don’t. That might be why I don’t have the problem. I guess I could simply have added a few custom snippet buttons and then waited for a couple of weeks to see if Blog slows down but I didn’t even think that far till now :p

What I’ve noticed is this. The custom snippet buttons on the toolbar are dynamically created at start up since the custom snippet definitions themselves are loaded from a database table. The toolbar definition (such as what buttons are on the toolbar and where they are) is saved when Blog is closed but since the snippet buttons are dynamically created, the next time Blog is started, those button definitions are invalid and I have to recreate them dynamically. I simply go through all the button definitions on the toolbar and find empty definitions matching custom snippets and then recreate them. However, I’d noticed that the number of empty toolbar button definitions increased each time I ran Blog. I discovered later that this was because I was supposed to delete the buttons instead of free them (I thought freeing them automatically removed them …) and so, the code in Blog 7.1 deletes the empty buttons. However, since the older versions of Blog does not, I think it might be that over time that the number of empty button definitions grows enormously and Blog keeps on looping through it all till it finally creates the toolbar stuff and then starts up. However, this is just a guess – I’ll probably know for sure once Dominion tries out the new build on his machine.

Tags:
Posted by Fahim at 6:33 am  |  2 Comments

February 22, 2003

While I’ve contemplated the switch to Delphi 7.0 before and have decided not to due to the inordinately long compile times (as compared to Delphi 6.0) and the (slightly) bigger final executable size, I’ve had to change my stance suddenly :p Yesterday, I needed to import some type libraries into Delphi so that I could work with some ActiveX controls (this was Cache related incidentally) and got an Access Violation. I tried with several different ActiveX controls but was met with AV’s each time and then I tried in Delphi 7.0 and it worked just fine. I guess I could have uninstalled Delphi 6.0, reinstalled it, reapplied the service packs and patches and then checked to see if I could import ActiveX controls now but I decided to skip all that :p

I considered all the components that I currently used for my apps and realized that I had Delphi 7.0 releases for most of them. I also considered the fact that Delphi 7.0 has a lot of support for web development via web forms and that I could probably get around to doing some server-based apps (like a blogging tool :p) if I worked with it. By this time, I was ready to switch over :p I had been working with only Delphi 6.0 at home whereas I had both 6.0 and 7.0 at work. It was too late to do anything at work by that time since it was time to go home but I started on the task of installing Delphi 7.0 as soon as I got home. I had to do a little searching through a multitude of CD’s to find all the components (maybe I should write a simple CD cataloging program while I’m at it? :p) but now I think I’m set – or at least enough so that I can work with most of my apps though not all. Let’s see how it goes …

Tags:
Posted by Fahim at 7:09 am  |  No Comments

February 21, 2003

Of doves and hawks …

I first intended to make this entry a few days ago after having accidentally browsed over to the blog of somebody unknown to me. This person was so rabidly in favour of a war with Iraq and seemed to be going after anti-war protestors with such gusto, and the commentors on her site seemed to be of her own ilk and I just felt that I had to speak out about the phenomena. I mean about all these people sitting safely at home and throwing around labels like republican, democrat, liberal, right-wing, left-wing but in the end talking about killing hundreds of thousands of innocent people to justify their political leanings. OK, maybe I’m a bit harsh there but all this political haranguing is not going to help any of us if it comes to a war. But before I get into that, I would probably have linked to this person’s site originally if I’d written this entry when I intended to write it but since then I’ve been to her site again and she says that she’s tired of the hate mail and people linking to her without understanding what she’s about. Personally, I feel that if you write about what you care and you do so without malice, you shouldn’t worry about what other people think – it should be your opinion about yourself that matters to you first and foremost. Plus, she has such slogans as "First Iraq, Then France" on her site and so I don’t see how she can claim to be a non-biased objective person and that she needs to be understood before people vilify her :p Whatever the case maybe, I decided that if she didn’t like to be linked to, then it wasn’t right for me to link to her – whatever my objections to her comments (and even more than hers, those of her commenters …) may be. But I will comment on some of the comments on her site and please bear with me for saying something but not providing any links to verify that what I said is true …

There were several things which set me off at this blog that I’m talking about – the first and foremost was the above mentioned "First Iraq, then France" slogan. These people claim to be objective, open-minded individuals who don’t really want other people to die but see no other alternative except for war. If they were as open minded as they claim to be, I don’t think they’d want to grind anybody who opposes their point of view under their heels – which is what the comment about France amounts to … at least to me. Some might argue that it is funny and that might be why it was on this blog but I’d say that it is still insensitive and I don’t see much difference these people’s attitudes and that of the Nazis, for instance. I don’t hate people who have an opposed view – I just hope that I can show them my point of view and that maybe they will understand where I’m coming from. Whereas they (or at least according to the slogan) seem to think that anybody opposed to their point of view needs to be considered an enemy. Where does that come from? Can you really call yourself objective after such invective?

Then there were several people who commented on this blogger’s post vilifying anti-war protestors. One guy said that he doesn’t hate anybody – Muslims, Iraqis whatever – but that they (meaning the US) needed to bomb Iraq because all the Iraqis hated him and his little daughter and wanted to slit their throats! My friend Robin says that you should respond to such utterly insane comments by being even more over the top like saying "Yeah, and we will disembowel you and use your head as a football" or something like that … But I don’t know … I feel that on one hand you are stooping to their level and on another, you lose the chance to reach that person in case there is even a slim chance of still reaching them through all this misinformation/hatred they seem to have surrounded themselves with. I told this particular guy that most Iraqi’s probably couldn’t care less about him or his little daughter because they were just trying to get through their day to day lives, just like him or me or any of us. He says that he’s spoken to several Iraqi’s in person (or maybe online I forget which now …) but I don’t see how he could make a blanket statement like "they all want to kill my little daughter" if he really knew any Iraqi’s.

Incidentally, this guy claimed to be a marine and said that what us "civilians" don’t understand about bombing is that the army does not go in and indiscriminately bomb everything – that it was all about precision work. I asked him whether this was the same precision work which resulted in "malfunctioning" missiles killing civilians in Afghanistan but of course, there was no answer to that. But one thing that seemed to come out of these comments was that a lot of people seemed to think that the anti-war protests are actually either anti-Bush, or anti-Semitic (this one really floors me … but more on this later) or anti-American. And a lot of these people seem to have the belief that anybody who is anti-war thinks that Saddam is an angelic choir-boy! What rubbish! Of course, we … OK, I can’t speak for everybody but at least I, know that Saddam is not free of blame but then again, who is? Can the US government claim to be free of guilt – of having bloody hands in having dabbled in the matters of so many other countries just because they wanted to control things? of having trained Osama Bin Laden and then had him turned against them? of having provided Saddam weapons when he was fighting against Iran? I don’t think so! But most of the above mentioned "hawks" seem to either dismiss all of this as "it’s America’s duty to make the world safe and spread democracy" (has anybody asked who asked America to do all of this except for the US government and it’s rhetoric?) or as blatant anti-American propaganda. What I oppose in this war (or in any war for that matter) is the unnecessary killing (mostly of civilians and bystanders – that often quoted "collateral damage") of people for political/economical/ideological reasons.

Then there was the whole anti-Semitic thing. I don’t even know where that came from … though I can guess. While it could be that some people again imagined things where nothing was (or thought that pro-Iraqi/Arab *has to* be anti-Semitic), it is also possible that some of the Muslim anti-ware demonstrators carried anti-Semitic messages and that started the whole Jewish community going. People, this is not about Islam or Judaism! If it comes to that, Christians, Muslims and Jews all believe in the same God – or at least should! Don’t believe me? Most people don’t, they even argue loudly about this and say that this can never be but think … Jews, Christians and Muslims all believe in Moses as a prophet and unless Moses was a polytheist (which would shake the foundations of all three religions), his God has to be God of all three religions – yes, the specifics might be different but the basics are the same. So why do Muslims, Christians and Jews fight each other in the name of their religion and God? Think people, think! I’ve been hearing this rubbish from Muslims for a long time about how the Qur’an says that Christians and Jews are our enemies (utter rubbish!) and now I hear that some Jews are saying that according to the Torah, all Arabs must be killed! I can only say, that if all these people followed the spirit of their religion instead of scrabbling through the words, they might find peace both within themselves and out in the world …

Tags: , , ,
Posted by Fahim at 6:21 am  |  1 Comment

Yesterday, as I concluded my entry (or somewhere about then) a thought struck me – why shouldn’t I combine Blog and BlogMan under one interface? I think the reason this whole line of thought was set off was because I received an e-mail from a Blog user who suggested some extra fields like the Excerpt field in Movable Type since he utilizes them to display per-entry stuff like his current mood and music. I guess I simply could add an extra Excerpt entry box or extra info box without merging Blog and BlogMan but the whole excerpt thing made me realize that if I do do that, the UI for Blog and BlogMan will look even more similar. So why maintain two different programs which are both for blogging and which both have almost the same interface? On the other hand is of course the question of how much more additional overhead will the merger bring and will all users need that extra bloat?

I’ve been going back and forth with this question. It will be a lot of work to combine the two programs and to come up with a unified database structure to handle the data for both systems. Plus data conversion for existing users is going to be a real pain. But on the other hand, a unified Blog and BlogMan would mean that would be to go from a blogging utility supporting the Blogger API to Blog (and vice versa) so much simpler and easier. And at the same time, there are common features like image thumbnail creation that people want for both Blog and BlogMan – and it would make sense to put all of that into one program rather than two – well, maybe not make sense but it’s easier … and I’m lazy :p

I still am not sure if I really want to go that route or even if it is possible but I’m thinking about it. In the meantime, since I can’t do a merging of Blog and BlogMan except as a new version, I’ve been working on the 7.x bug fixes again :-) I still am messing around with the collapsible category entry panel since I am not totally happy with how it works – meaning that Blog does not remember if it was collapsed when Blog closes … it will again be open when you restart Blog. I’d like to fix that but the component that I’m using has certain limitations and it looks as if I will have to modify the component itself if I want it to work the way I want.

I did look into a bug reported some time back where the very first date range with an entry does not get listed in the archive table of contents though the archive file for that range is created. When I first tried to reproduce the problem, I couldn’t since everything seemed to work fine. I then did some further checking and realized that this happens only when there is only one entry for the very first date range – otherwise things work fine :p I finally traced the problem to a logical bug in looping through records and managed to fix it. I also changed the encryption method used for passwords so that we don’t get stray carriage returns embedded in the password to create havoc with the INI file storage – I just need to test the upgrade routine for that and if that works, we’re set. Unfortunately, the upgrade routine will not correctly update the passwords of people with embedded carriage returns and so they will have to re-enter their password(s) one last time after upgrading to Blog 7.1 – sorry :-( I should hopefully have the 7.1 release out pretty soon … unless I get caught up in something else again …

Tags:
Posted by Fahim at 6:02 am  |  4 Comments

February 20, 2003

I’ve downloaded and installed Cache. I like the fact that it comes with a lot of management and configuration tools which aren’t cryptic like some other DBMSes I can think of (though they have improved in recent years – I guess I shouldn’t hold grudges for what they were like in 1992 :p) and there is a whole bunch of documentation which isn’t as dry as dust but tries to be colourful and interesting. I like the fact that Cache integrates with IIS and provides what’s called CSP (Cache Server Pages) so that you can use Cache (and it’s scripting system) to build web pages which are data aware. I haven’t played with any of these features extensively to comment on any of them – I especially haven’t done any direct DBMS coding with Cache and maybe I should do that before I go opening my big mouth about it but I wanted to note down my first impressions here since I have no idea when I’d get around to doing something in-depth with it.

I did look around a bit (again not too much since I didn’t have the time …) to see how I could work with Cache with Delphi. Most resources I ran across seemed to talk of either using ADO or ODBC and that really isn’t the route I wanted to take. I was hoping that I could access Cache objects directly from inside Delphi and do some database manipulation. Maybe it’s possible – again, I haven’t looked deep enough (or hard enough) to comment on it one way or another. The first thought that came to me when I wanted to test Cache was that maybe I should try to do some sort of web-based blog using Cache as the backend and Delphi 7 and it’s web components as the frontend – guess I’m too hung up on blogging tools :p Of course, I now realize that that wouldn’t work but still a thought …

Tags:
Posted by Fahim at 6:29 am  |  1 Comment

Next Page »