Blog
Page: 0 ... 5 ... 10 ... 15 ... 20 ... 25 ... 30 ... 35 ... 40 41 42 43 44 45 46 47 48 49 ... 50 ... 55 ... 60
SSL Implementation
Date: 14/9/2006
I'm implementing direct SSL support in Scribe and I have access to a SMTP+POP server that uses the "STARTTLS" style SSL scheme (GMail!), however I don't know of one that uses "DIRECT SSL" or, SSL connection from the start. This is a new option that I'll be supporting. So if you have a server that does that or know of a free host for me to use in testing, that would be sweet.
(0) Comments | Add Comment

SydneyBand.com.au Places Page
Date: 8/9/2006
I thought I'd talk a little about a webpage I've been working on for the last week or so. It's over at http://www.sydneyband.com.au/places.php if you want to check it out. Basically it's a standard list of links/resources but it has a few tricks. Firstly you can filter via tags but thats kinda well... done. However it also lets you click a "Map" link to see where the place is on google maps. Thats cool. Most lists of links don't do that. But if you liked that then click the "Map Display" link at the top and see ALL the links on the map. Nice. Want more? Well bung in a Sydney suburb or postcode into that field at the top and it'll sort the results according to distance! That took a great deal of software "magic" I assure you.

I put together a database of suburbs, postcodes and latatude/longitudes using various methods and mostly public resources. Using some lets say, screen scraping here and there, a judious amount of custom code hacked together and XML... lovely clean XML. Then I read up on the great circle distance formula and wrote the code initially in SQL. But that kinda tanked when I realised that SQL doesn't have the math function "MIN". Because the "MIN" keyword is used for something else, i.e. the minimum row in a GROUP BY clause. Nice. So I gave up on SQL and rewrote it in PHP and used PHP arrays to store and sort the results. Seems to work just as well.

I wish upon a star that Google Maps would let users search for suburbs and streets in Sydney. *sigh*
(1) Comment | Add Comment

Calling External DLL's From Script
Date: 2/9/2006
Today I got the Scripting Language in i.Mage to call into an external DLL. The test script was simple:
extern int MessageBoxA(HWND, LPCTSTR, LPCTSTR, UINT) in "User32.dll";

MessageBoxA(Parent, "Title", "Message", 0);
Which now runs as you'd expect. The "parent" variable is a predefined uint32 containing the handle of the script window. The other predefined variable at this point is a DOM pointer to the i.Mage application itself.

This will most likely appear in the next Scribe release in the filters, so that you can create very custom filters. By being able to define calls into external DLL's you could write some code in any language you want and call it from Scribe. Some of the tools hanging onto various menus in Scribe will most likely be rewritten in Script instead of C++ and thus Scribe will become extensible. e.g. the little utils hanging off the bottom of the Tools menu are begging to be re-written in Script.
If you liked that first snippit, then you'll love this. Check out this new working script:
extern int MessageBoxA(HWND, LPCTSTR, LPCTSTR, UINT) in "User32.dll";
extern DWORD GetTempPathA(DWORD, LPTSTR) in "Kernel32.dll";

s.length = 256;
GetTempPathA(s.length, s);
MessageBoxA(Parent, s, "Title", 0);
Variables can now have members, i.e. DOM style addressing. Assigning a value to the .length member of a variable turns it into a string of spaces of the requested length. This is useful for preallocating string buffer memory for calling C functions that expect that. Conversely getting the .length member of a string returns "strlen(c_str)".

I've kinda left room for expanding this out to use non-atomic types like structures and so on, but that isn't implemented yet. I have to implement code to parse the type definition first and then code to use allow the script to declare a variable of that type and use it. Which is a substantial feature to add.
(3) Comments | Add Comment

Scribe Account Options
Date: 26/8/2006
I've been pretty sick this week with some virus, and I'm still not over it completely but I'm well enough to be sitting around doing things. So I've been playing around with the account options dialogs in Scribe:



I'm going to get rid of the SSL plugin entirely, it seems to be giving people a lot of grief. So all that functionality will be built in directly to the next version. Obviously it'll only work with the SSL dll's installed as well, and I'm hoping to have a system for downloading them from without Scribe.

These dialogs have been converted to be font size sensitive using the table layout system I wrote about previously. (Based on the GTableLayout class from Lgi)
(0) Comments | Add Comment

Image Spam Filtering
Date: 8/8/2006
Until something better comes along I'm filtering spam email with images using this:



So if you want to send me an image, start with a "Hello, image on the way!" so that you get into my whitelist, THEN send the image. :)

The basic issue with "image spam" is that they bypass the bayesian filter by having good "hammy" text in the body as well as the spam payload message in an image. So textual methods are doomed to failure. I breifly thought about image comparision algorithms, and I believe I could write something to weed out all the dupelicate image spam, but it would be a losing battle and the spammers would just end up varying their message more than they do now. So thats it, a blanket ban on email with images from senders I do not know.
(7) Comments | Add Comment

Connecting To A Phone Over USB
Date: 5/8/2006
I got a new phone this week, and I'm looking into connecting to it over a USB cable from user space software on windows. There seems to be some way via the Win32 functions that start with "SetupDi" (e.g. SetupDiGetDeviceInterfaceDetail) and then once you have the phone's DevicePath openning it via CreateFile and possibly talking to it with DeviceIoControl. But I'm guessing in the dark at this point.

My phone supports SyncML so I'd like to attempt using that protocol over USB, but I can't work out how to get communications started.

Comments? Thoughts? Links to information?
(2) Comments | Add Comment