AutoHotkey Community

It is currently May 27th, 2012, 10:07 am

All times are UTC [ DST ]




Post new topic Reply to topic  [ 14 posts ] 
Author Message
PostPosted: July 5th, 2006, 4:51 pm 
Offline

Joined: October 10th, 2005, 10:44 am
Posts: 299
Location: Germany
Hey guys,

Now that Germany dropped out of the World Cup, I finally have time for some serious stuff again. (Just kidding - I don't really care... :twisted: )

So I've decided to start working on my most ambitious (and useful) project yet: A lightweight, XML-based reminder tool.
As none of the existing calendar/to-do programs out there really conform to my needs, I'll just have to write my own... (FYI: I'm currently using Rainlendar.)
In fact, I've already created an XML schema which pretty much sums up what the program will have to do (here's a snapshot, though things like attributes and detailed annotations are still missing in that pic).

Basically, my concept boils down to the following:
  • lightweight so it can run in the background without eating system resources
  • four item categories:
    • events (e.g. meetings, birthdays etc.)
    • tasks (e.g. "code über-app")
    • notes (e.g. "movies to see: Snakes on a Plane, ...")
    • log (e.g. "2006-06-05: paid 1-year subscription fee for c't magazine")
  • automatically display reminder alarms (with quickly accessible snooze function to postpone the alarm by a few minutes/days/hours) and a list of upcoming events
More suggestions are welcome, as I wanna have a well-thought-through concept before starting to code...

Now, I've tried implementing this in AHK using Titan's XML functions, but that proved to be quite difficult for various reasons (no proper arrays, Titan's functions are not quite ready for this yet, etc.).
It's kinda bizarre, cuz in theory, this should be a piece of cake (read and write XML files, that's all there's to it) - but it isn't.
So I'm thinking about which language to use for this project - the requirements for this would be:
  • as simple as possible, while also being lightweight (duh!)
  • must be well-suited for running on startup (which excludes web-based solutions as well as Java)
  • must have very good XML support - including something like XML Query (e.g. to return the content of a specific sub-element of all elements with a certain attribute)
  • remote neuro interface for ubiquitous accessibility (optional); it'd be nice to be able to immediately record things that pop into your mind, no matter where you are...
    If that's not possible, I'll have to hire a second coder to create a simple web interface (should be rather easy thanks to XML - especially displaying items, modifying might be a little more complex), so I'd just have to implement a sync routine (up- and download XML file to/from some webspace) into the desktop app.
    And maybe some third coder might even wanna write a simple app for cell phones or PDAs (again, possible thanks to XML), which would be almost as good as the remote neuro interface.
  • I don't really need fancy GUI stuff, so it might even be command-line based (=> something like Perl?)
Visual Basic (VB6? VB.NET?) might be a good choice for this project, I guess - especially since I already know that language a little (or rather well even, as there's not a lot to know really)!? And AFAIK it also has advanced XML functions (well, VB.NET at least).

Oh, and if someone can come up with a nice, telling name for this program, that'd be great (current working title is Reminder Tool, which is really dull).

RSVP ;)


Last edited by Ace_NoOne on July 19th, 2006, 2:12 pm, edited 5 times in total.

Report this post
Top
 Profile  
Reply with quote  
 Post subject:
PostPosted: July 5th, 2006, 5:15 pm 
Offline

Joined: December 27th, 2005, 1:46 pm
Posts: 6837
Location: France (near Paris)
VB (6 or .NET) and lightweight seem to be an oxymoron...

_________________
Image vPhiLho := RegExReplace("Philippe Lhoste", "^(\w{3})\w*\s+\b(\w{3})\w*$", "$1$2")


Report this post
Top
 Profile  
Reply with quote  
 Post subject:
PostPosted: July 6th, 2006, 9:04 am 
Offline

Joined: October 10th, 2005, 10:44 am
Posts: 299
Location: Germany
Gee - why am I not surprised that this has come up... ;)

Still, it might be the least worst choice in my case!?


Report this post
Top
 Profile  
Reply with quote  
 Post subject:
PostPosted: July 6th, 2006, 11:31 am 
Offline

Joined: December 27th, 2005, 1:46 pm
Posts: 6837
Location: France (near Paris)
Out of curiosity, why did you choose XML as data format?
Proof of concept? To be able to reuse (transform) the data elsewhere? Because it is cool? ;-) Because it has good support?

You might want to try Euphoria. I never used this language, but it seems nice, runs on Windows (and Linux), has some XML support, and produce reasonably sized exes (downloaded a randomly chosen compiled sample (photuki.zip) and the exe is around 230KB).
Of course, there are other languages, like lot of Basic variants, some of them being payware.

_________________
Image vPhiLho := RegExReplace("Philippe Lhoste", "^(\w{3})\w*\s+\b(\w{3})\w*$", "$1$2")


Report this post
Top
 Profile  
Reply with quote  
 Post subject:
PostPosted: July 6th, 2006, 12:03 pm 
Offline

Joined: October 10th, 2005, 10:44 am
Posts: 299
Location: Germany
PhiLho wrote:
Out of curiosity, why did you choose XML as data format?
Proof of concept?[1] To be able to reuse (transform) the data elsewhere?[2] Because it is cool?[3] Because it has good support?[4]
  1. Yeah, kinda. Also to get some experience in actually working with XML files, other than just drawing up the schemas/structure...
  2. Yes, exactly; see the updated original posting for details (web interface, mobile access, neuro interface).
  3. You bet; I'm a total XML addict (see this thread)!
  4. It does? In what regard? I haven't really seen a lot of implementations that make working with XML easy - but that's probably due to my ignorance/inexperience...
PhiLho wrote:
You might want to try Euphoria. I never used this language, but it seems nice, runs on Windows (and Linux), has some XML support, and produce reasonably sized exes (downloaded a randomly chosen compiled sample (photuki.zip) and the exe is around 230KB).
Cross-platform, lightweight and XML-enabled - sounds perfect! I'll definitely look into that. (Though their website kinda looks like some MySpace kiddie's homepage... :P )
Thanks!
UPDATGE: Just dpwnloaded it - seems liket there's no way to compile an EXE to make yoru program run without having the interpreter installed!? And, as with learning any new language, it sure is intimidating to start with...


Report this post
Top
 Profile  
Reply with quote  
 Post subject:
PostPosted: July 6th, 2006, 2:26 pm 
Offline

Joined: December 27th, 2005, 1:46 pm
Posts: 6837
Location: France (near Paris)
As I wrote, I haven't really tried it.
It seems that to get an exe, you need to use the Euphoria to C Translator, then compile the generated C with some free compiler.
This is quite convoluted, but why not.
Oh, it seems actually that with the free version, you can only make scripts. You have to register to create standalone exes, be them interpreted (Binder, like with ahk2exe) or fully compiled (Translator).
Mmm, that's less cool, if you really want to make an exe (for free), it might be a dead end.

Otherwise, there is Rebol which is cool, but it is semi-commercial and I am not sure you can compile scripts. Plus the language is a bit strange...

I see also Free Basic ("libxml and libxslt: defacto standard XML and XSL libraries", "Create OBJ's, LIB's, DLL's, and console or GUI EXE's", open source), and some other Basic dialects...

_________________
Image vPhiLho := RegExReplace("Philippe Lhoste", "^(\w{3})\w*\s+\b(\w{3})\w*$", "$1$2")


Report this post
Top
 Profile  
Reply with quote  
 Post subject:
PostPosted: July 6th, 2006, 5:23 pm 
Offline

Joined: January 1st, 2005, 11:54 am
Posts: 75
Quote:
automatically display reminder alarms (with quickly accessible snooze function to postpone the alarm by a few minutes/days/hours) and a list of upcoming events
More suggestions are welcome, as I wanna have a well-thought-through concept before starting to code...

You asked for it :) :

Normal calendars don't work for me- i just click their info-boxes away when I'm working with something else when they come up and forget about them. I need to be remembered a few more times (for example to call people who are available just a few hours once a week or so...).

To resolve this, I use some sort of quick and dirty ahk-script. This script shows a splash-image (in the upper left corner of the screen where it doesn't disturb too much) with the reminder text for 10 seconds and repeats this every ten minutes until the time for the task is out.

My ahk-solution is all too complicated for every day use. A better tool with some sort of repeated alarm would be most welcome.


Boskoop


Report this post
Top
 Profile  
Reply with quote  
 Post subject:
PostPosted: July 6th, 2006, 5:35 pm 
Offline

Joined: December 27th, 2005, 1:46 pm
Posts: 6837
Location: France (near Paris)
Boskoop wrote:
This script shows a splash-image (in the upper left corner of the screen where it doesn't disturb too much)
You might be interested by Desk Projection (Google for it, the home page seems not to work right now), a little funny application that is able to display a transparent image over your desktop, at the place you want, and still be able to click through it.
It seems perfect as a reminder: it can remain as long as you don't dismiss it, it is unobtrusive yet very present.

_________________
Image vPhiLho := RegExReplace("Philippe Lhoste", "^(\w{3})\w*\s+\b(\w{3})\w*$", "$1$2")


Report this post
Top
 Profile  
Reply with quote  
 Post subject:
PostPosted: July 7th, 2006, 4:18 pm 
Offline

Joined: October 10th, 2005, 10:44 am
Posts: 299
Location: Germany
Good point there, Boskoop; I guess we all suffer from the inflationary use of pop-up alarms that end up being ignored.
So I'll definitely keep that in mind - though I'll have to start with the basics first...

As for the choice of language; I guess I'll try some steps in VB.NET (thanks to Visual Studio Express Edition) and decide afterwards.
But thanks, again, for the info, PhiLho - I'll look into those suggestions either way!


Report this post
Top
 Profile  
Reply with quote  
 Post subject:
PostPosted: July 11th, 2006, 9:26 am 
Offline

Joined: December 27th, 2005, 1:46 pm
Posts: 6837
Location: France (near Paris)
Oh, for completeness... Last day, when asking about XML, I wanted to mention some alternatives to it, but at the time, I forgot their names.
I just found out them:
- YAML, very complex.
- JSON (concurrent of Ajax [Asynchonous JavaScript And XML], using XMLHttpRequest), simplier than YAML (more or less a subset of the former, with syntaxic differences though).
- OGDL which seems simplier that the first two.
- Lua which is a full language, but historically was created to create complex hierarchical configuration files. The advantage is that the parser already exists! :-)
- PL which doesn't seems to be used by somebody else than the author...

_________________
Image vPhiLho := RegExReplace("Philippe Lhoste", "^(\w{3})\w*\s+\b(\w{3})\w*$", "$1$2")


Report this post
Top
 Profile  
Reply with quote  
 Post subject:
PostPosted: July 21st, 2006, 2:19 pm 
Offline

Joined: October 10th, 2005, 10:44 am
Posts: 299
Location: Germany
Thanks Phil, that's really helpful!

I've looked into some of those options (especially Lua), but couldn't yet find something that satisfies my needs (again, might be due to my ignorance).

The main problem is the XML Query requirement; I'd really need an advanced function that would allow me to say something like "give me the titles of all events whose start date is between now and 7 days in the future" - or, translated to pseudo-SQL:
Code:
SELECT title
FROM root.items.events
WHERE event.attribute["active"] = TRUE AND
   event.dates.startDate BETWEEN '20060720' AND '20060726'


btw: Might a stand-alone JavaScript app be a possible solution? Not even sure whether that's possible, but I'd heard somewhere that there are powerful XML libraries for JS!? Will have to look into that...


Report this post
Top
 Profile  
Reply with quote  
 Post subject:
PostPosted: July 21st, 2006, 4:09 pm 
Offline

Joined: December 27th, 2005, 1:46 pm
Posts: 6837
Location: France (near Paris)
Ace_NoOne wrote:
btw: Might a stand-alone JavaScript app be a possible solution? Not even sure whether that's possible, but I'd heard somewhere that there are powerful XML libraries for JS!? Will have to look into that...
XPath in JavaScript
XML for <script>
XML for <script>: XPath contribution

XQuery
XQuery too

Just some hints for a quick Google search... Food for thoughts!

_________________
Image vPhiLho := RegExReplace("Philippe Lhoste", "^(\w{3})\w*\s+\b(\w{3})\w*$", "$1$2")


Report this post
Top
 Profile  
Reply with quote  
 Post subject:
PostPosted: July 23rd, 2006, 8:32 am 
Offline

Joined: October 10th, 2005, 10:44 am
Posts: 299
Location: Germany
Yeah, XML for <script> looks quite good indeed!

However, since it's JavaScript, it'd still be browser-dependent (at least I couldn't find a way to turn JS code into an EXE) and thus not very suitable for running on start-up.
Plus the XML files couldn't be manipulated (well, XML for <script> uses cookies to circumvent this issue, but proper file manipulation would be indispensable for this project)...

UPDATE:
Both of these issues could be solved by using HTAs... !? (Sure, that would not make the app fully cross-platform, but at least the reading part could be very easily made into a website - writing/modifying the XML file would have to be done in some other way then.)
And as for XML for <script>, I've just been told that was "a piece of shit [...] all modern browsers come with excellent XML parsers and object models [...] for [database-like queries] you need a simple xpath expression, supported by all browsers" - interesting indeed!


Report this post
Top
 Profile  
Reply with quote  
 Post subject:
PostPosted: February 25th, 2008, 3:43 pm 
Offline

Joined: February 13th, 2008, 7:03 am
Posts: 15
Location: Denmark
http://www.rapideuphoria.com/

I love that banner on their site

"Simpler then basic"

"More powerfull then C++"


Report this post
Top
 Profile  
Reply with quote  
Display posts from previous:  Sort by  
Post new topic Reply to topic  [ 14 posts ] 

All times are UTC [ DST ]


Who is online

Users browsing this forum: Apollo and 13 guests


You can post new topics in this forum
You can reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot post attachments in this forum

Search for:
Powered by phpBB® Forum Software © phpBB Group