Page: 0 ... 5 ... 10 ... 15 ... 20 ... 25 ... 30 ... 35 ... 40 ... 45 48 49 50 51 52 53 54 55 56
Date: 23/5/2006
It's been a bit quiet lately because my whole family, including me, were sick last week. So I didn't do much programming or anything really.

This week I've fixed a number of newly reported issues and implemented some of the mail2 export back end. It now replicates a single folder of mail correctly. I just need to get it doing lots of folders, and put up some progress UI and implement Contact/Calendar replication etc and it'll be ready for going into a release.

Last night I was in somewhat of a weird mood so I dug up all the old computer parts I had and built a computer. I hadn't realised until then that I had at least one of everything, CPU, RAM, PSU, HD, Case, Video Card. But sure enough I do. So it all went in the box and I booted it and installed XP. It's my old dual Celeron 400 motherboard with my old G400 AGP card. I have 3 sticks of 256mb but I seem to only be able to get 384mb to show up at boot. It doesn't like all 3 sticks in at once. And one or 2 of the sticks is showing only half it's full size, probably because it's not fully compatible with the motherboard. While I was working on it I really didn't know what I was going to do with it once it was working. But now I realize this machine will probably run Zeta quite well. So I think I'll install that and build some of my apps just for fun.

My main dev box got an upgrade 2 weeks ago. I used to run an socket A Athlon 1.4ghz system with 512mb on an KT7-RAID board. The new system is a socket 939 Athlon 64 3000+ with 1GB of Geil dual channel RAM. It's still AGP but I can upgrade to a dual core chip down the track. My only problem is that the Xpertvision Nvidia 6200 video card is flakey as hell and I want to replace it. But I'm having a lot of trouble finding a 6600 based card with the right TV out options (I need composite [now] AND component [later]) by a brand that is somewhat trustworthy for less than $200 AUD. It's very hard trying to find out which brands of video cards are decent and which suck. But heres what I "feel" about them currently, ranked from most trusted down to least trusted:
  • BFG: high quality, hella expensive
  • XFX: high quality, more expensive
  • Leadtek: good quality, all right price
  • Gigabyte: middle of the road, average price
  • MSI: cheaper, but not great quality
  • Asus: cheaper, but not great quality
  • Sparkle: cheap + nasty
  • GALAXY: cheap + nasty
  • Albatron: cheap + nasty
  • InnoVISION: cheap + nasty
  • XpertVision: crap build quality + cheap + nasty
There might be other brands out there, but these are the ones generally stocked by local retailers. Getting something else would be more difficult and prone to problems with shipping / warrentee.

Is my gut feel on these brands right? Or am I barking mad?

Ideally I'd like to go Leadtek, but their TV out options don't work for me. Same with Gigabyte I think... undecided on whether I should try the Asus + MSI ranges. I simply cannot find the info I nead on XFX or BFG...
(2) Comments | Add Comment

Export To Scribe Folders
Date: 11/5/2006
For all of you wailing and gnashing your teeth over the delay of the "export to mail2" function then fret not, it is underway. Tonight I built all the UI and tested it. It's very similar to the Outlook Imp/Exp UI except it's tweaked slightly to reference a folder file rather than a profile. The settings persist between sessions so that once you have set up your export config, re-running it is simple as F7, Enter. And you would want that because the export replicates the data, so that you don't get dupelicates everywhere. I'm trying to aim this at people who want to take a lightweight email client with them on a USB key and then when they get home upload all the mail they received while away to their main install of Scribe. Amongst other things.

The external folders load nicely and I'm now ready to write the backend that does the real work. But I'm getting too tired to work on that tonight. Maybe... this weekend. Maybe.
(3) Comments | Add Comment

Can't Send Email?
Date: 9/5/2006
Recently I've been talking with a customer who has this weird problem with sending email. The connection establishs ok and the normal SMTP session progresses up till the point where InScribe sends the end of message marker (\r\n.\r\n). At which point the server stops responding and the socket connection eventually times out. I got a hex dump back from the user that confirmes this.

I wasn't holding my breath on a solution for this as it sounds too weird to be a general problem with the software. However that all changed this morning when the mother of my children had the same issue. And when she has an email problem "It Better Get Fixed Right Now(TM)" ;)

So I fire up the debugger and watch it do the whole send the email, send the end of email line and... hang... and time out... and return the blank error message. Nice.

I consulted the oracle, and it informed me on Path MTU which I found interested. So the next hour was filled with frigging with every TCP/IP and MTU setting I could get me hands on. At one point setting the MTU to 1470 let some of the mail go through, but not all 11 messages, just some of them. So with 6 email still to send I called my cable tech support to see if they knew anything about this sort of error. Oh course they were dumb as nails and wouldn't let me speak to a real engineer about the network and server setup. However they did make me setup Outlook and sure enough that worked. *grumble* stupid Microsoft product actually working *grumble*, but it made me think about what differences there could be between Outlook and InScribe.

In amongst all the other reading about MTU settings and email I ran across a little tid bit of information relating to sendmail (also used by my ISP Optus) it appears that in some network environments it matters which packet the end of mail ("\r\n.\r\n") line is in. i.e. if it's in it's own little packet things don't work. And of course I looked at the hex dump from InScribe and each line was it's own network "send". I would've thought that Windows implements Nagles algorithm and joins all those little packets up in the network stack. But just out of curiosity I quickly implemented a memory buffer for the outgoing email so that the entire message is assembled in memory and written to the socket in one system call. This of course works doesn't it. *grrrrr*

So I guess I'm re-engineering the encoding of email so it goes through a memory buffer. However that may introduce new complexities that I hadn't had to deal with before, like whats a good buffer size (4k!)? And should I vary it when it doesn't work (no)? And what if it doesn't like that on '98 (who cares)? The list goes on and on, but then again, thats why I have "test" releases so that a change like this gets 3-6 months of field testing before going into a major stable release.

Now you too know more than is healthy about TCP/IP. <nelson>haha</nelson>
(3) Comments | Add Comment

Date: 5/5/2006
In the process of working on a cross platform Mutex written with inline assembly I had to peer into the bowels of gcc, cygwin and mingw to work out how to build threaded win32 apps with free software tools. So a number of pleasant things have occured in doing so.

Firstly I can now build Lgi applications with both cygwin AND mingw. Prior to today I didn't even know the different between cygwin and mingw. However I'm now in the "know" and have separate makefiles for each. Sweet.

Secondly I discovered almost by accident how to craft makefiles that replicate the Visual C++ functionality to a 't'. Something that has eluded me for some 4 years now! Ever since I started development on Linux I've been trying to build a makefile system that works the same as the Visual C++ build system I am used to. And finally I've done it. The last thing I had to fix was the creation of output file directories. That particular feat while obvious for makefile gurus always was an annoying "hack" in my makefiles. I used to have a prereq on my final target rule that called the mkdir command:

target : makeoutputfolder $(deps) command...

makeoutputfolder :
    mkdir $(outfolder)

But this had the unfortunate side effect of relinking the target every time, even if no dependencies had changed. So enter the solution:

target : $(outfolder) $(deps) command...

$(outfolder) :
    mkdir $(outfolder)

I know it seems simple but, hey the documentation is er... rather obtuse. Other than that, I've given up on wildcard rules to build source and now I get LgiIde to generate all the deps and write out rules for every source file in the project. This is garrenteed to work and you can nail the right source file even when multiple different source files have the same name. Sometimes brute force is called for and when your as dumb as GNU make that is definately true. And before you have a go at me for not using %build tool Y%, I use make simply because it's on every system under the sun and it's nice to be able to unpack my source and just build it. It's a lowest common denomiator thing.

Anyway, Lgi now supports mingw and cygwin. For all your licensing needs.
(1) Comment | Add Comment

Opinion On Correct Behaviour
Date: 2/5/2006
One user asked in the forum about a particular behaviour that shows up in Scribe when you receive email from someone with a Contact record. Currently the behaviour is that if the incomming email has no name in the from field, the name from the matching Contact record is inserted, otherwise the name from the headers is used. In fact I had to force the code to do that with a flag, because originally it didn't do that, instead it overwrote the name part of the from address with the name from the Contact record.

So both systems would appear to have some surface benifits. Firstly:
  • a) Use the header name: you would see any change in the name the user supplies. If someone else uses the email address you'd see their name instead. (Believe it or not, but people share email addresses)
  • b) Use the contact's name: when sorting folder by the from address all email's from that contact sort into the same place because they are forced to have the same name.

Neither of these are more correct than the other, or at least I can't decide which is better. In fact I could live quite happily with either. But maybe you dear reader have an opinion or something I havn't considered, maybe a reason one way or the other that would sway the argument?

What I'm not willing to do is add another user visible option to let people frig with this. It's such a tiny part of the product I can't in good conscience add an option. There is nicely customizable and there is confusing. I would err on the side of nicely customizable and not add an option.

Your thoughts?
(5) Comments | Add Comment

Nine Frickin Months For This?
Date: 27/4/2006
Yes Oh Yes, Nine long bloody months, a bout of RSI, periods of despair and madness, and not but least; completely crap documentation.

It doesn't DO anything yet, but omg I'm so proud! *gloating parent*

Update: Getting more things working:

(2) Comments | Add Comment