Blog
Page: 0 ... 5 ... 10 ... 15 ... 20 ... 25 ... 30 ... 35 38 39 40 41 42 43 44 45 46 ... 50 ... 55 ... 60 ... 65
i.Ftp/Mac
Date: 11/1/2007
I just got i.Ftp running on Mac OS X to connect to an FTP site for the first time. So it's been a long and painful journey but I can taste how close I am to an alpha release.

What was a nice surprise, is that threading just worked, first time. I ended up just using the existing pthreads implementation from the Linux port and it compiled and worked without any edits whatsoever. Well at least it runs in the simple case. The timers are based on threading so they now work as well. The socket code was a straight port from the Linux/BSD implementation and that worked first go as well. Freaky.

So now all thats left to do for a basic release is.... duh da daaa! Menus. Icky icky menus. Oh well better get cracking. I'm still on track to release something this month.

(1) Comment | Add Comment

Lgi Mac Port
Date: 4/1/2007
I took great delight in implementing LgiGetOs and LgiGetOsName this morning. Given the 2 variables for version and revision are ints I went with ver = "10" and revision = "48" to represent Mac OS X 10.4.8, it seems that the OS is limiting itself somewhat in the way it returns the version numbers. If it ever goes beyond 10.4.9 then I'll be in trouble. I wonder what Apple would do given that the version number is reserving just 4 bits for the 2nd and 3rd number. I guess they'll use 0x104a for 10.4.10. Maybe I should just add a third parameter, or make it an array.

I also implemented key up events. There is no direct corralation between key down's and key up's because the system converts the raw key down's into unicode via various input methods, and that is what I give to the application. The key up is just a massaged virtual keycode. But seems to work really well, except that I can't tab between controls. I must've broken the default handler for that. I'll probably just implement my own handler so I can get an initial release out the door.

So now all thats left to acheive an i.Ftp beta is menus, threading, timers and the socket layer. How hard can that be? ;)
(0) Comments | Add Comment

Five(ish) Things
Date: 1/1/2007
In the spirit of new year introspectiveness I present fiveish things.
  1. Recording music with/for friends.
  2. a) Drawing, although I still dable, b) Drifting a RWD car.
  3. a) Perfect pitch for writing and playing music more fluently and getting myself fit and healthy, because without energy and stamina I'll never get anywhere great. b) I would love to imbibe some of the mental state that Nuno was/is in when he plays and writes. I've probably been playing the same amount of time that he had when he recorded his seminal works, and yet I'm not even close to being able to pull off those sorts of songs. (Apparently he lives less than 100km away from me right now!?! Who knows it could actually happen)
  4. a) Creative, Geeky, Independant. b) Generous, Prolific.
  5. If someone summed up your entire life in one paragraph do you think you'd be happy with what it would say?
(0) Comments | Add Comment

Mac Porting
Date: 31/12/2006
Things that I got working this week:
  • Mouse input, mapping of mouse co-ordinates, all click meta-data
  • PostEvent and the associated OnEvent handler
  • Get/Set Focus and OnFocus events
  • Modal dialogs
  • Loading images
  • Some pixel conversion issues (e.g. Intel porting)
Things that need to be fixed for a alpha release:
  • Keyboard input
  • Menus
  • Sockets


I will be posting something in Janurary come what may. i.Ftp is actually responding and working like an actual application. A Scribe release will follow shortly after.

Update: Text input is working. Still need to get some of the other keys sorted out via the raw keyboard events.
(0) Comments | Add Comment

Why We Reinvent The Wheel
Date: 22/12/2006
The issue of creating a new scripting language for Scribe has been on my mind lately, and as Ben simply points out in his comment here: "didn't you think about using an already existing scripting language to do the job?", it's clearly on the mind of my users and readers as well. And I thought I'd talk about how I got to become one of those geeky language types that talk about lexing and parse trees and so on.

The decision to roll my own language was in part a natural progression from i.Mage's scripting that just got a bit out of control. I started with an ultra simple syntax that I could parse in 3 lines of code: <command> <argument>[ <argument>] <crlf>. Pretty simple eh? Well then I thought about that and wanted to add some variables so I could do some simple expressions in the command's arugments. At this point spending weeks trying to intergrate a fully fledged scripting language seemed stupid, I only wanted some basic expressions. How long could it take? So a few hours later I had a basic expression evaluator and bing I was done. So I seemed to have staved off a good amount of work and still had the feature I wanted. Still I did think about it, considered the trade off and it was simpler to do it myself.

Now sometime later I decided that a loop command might be useful. So I add the "for" command which looped over a set of commands. This proved to be a little harder but not overly difficult, another few hours passed and I had loops in my language. Still I was convinced it was much easier than intergrating someone elses code. I had already suffered with the ICI scripting language for a Scribe plugin, and it was been painful to intergrate. It just didn't want to map to the internal object addressing method I wanted. So in fact I had tried to intergrate a script language with my code before and KNEW how much work was involved.

Sometime later again someone bugged me about writing some complicated filter in Scribe and I thought to myself "that ICI stuff was a pain, maybe I should look at bringing i.Mage's scripting language over into Scribe". So I did, it was trivial, with some changes here and there both apps could reuse the compiler/executor. In the meantime I had refined the syntax a lot to make it very Javascript like in an effort to stave off having to talk people into learning a new script syntax. It seemed like a good way to justify the language.

Still over the months it's existed I guess I've now spent about the same amount of time I would've had to spend to intergrate a external language. However I still have very tight binding to native C++ code, and some features that wouldn't map well to external languages, and I can change the language to suit my needs at any point. Because I understand it from a core level.

For instance I love being able to define a method that exists in a different DLL and call it through script. VB did this from very early on and it's brilliant. It means that you can glue different bits of your code in different langauges together very easily. This clearly rubbed off on me because I added it to my language fairly early on. I seriously looked into Python at one point and I wasn't happy with the work required to call external C libraries. I even thought about hacking Python's interpreter to do my bidding. But it was clearly a scary proposition.

I'm not sure I did the right thing in writing my own. But I'm certainly happy with the results, and the code base will be very valuable in a lot of the software I'm writing. The expression evaluator will most likely end up in i.Hex and so on. And I feel that compilers aren't so scary anymore. So there is a lot of first hand knowledge that I've gained from the process.
(2) Comments | Add Comment

Scripting Documentation
Date: 21/12/2006
I've started documenting the scripting language in the latest build of Scribe. It's probably not much more than you can glean from all the blog posts about it, but now it's all in one place instead of scattered throughout my blog. Also I've at least made a list of all the built in functions that you can call and their parameters, which is a nice start.

I'm sure the requests for more functionality will come thick and fast once people start writing scripts. So I await your questions and requests.
(0) Comments | Add Comment