Mathieu Tozer's Dev Blog

Cocoa, the development of Words, and other software projects (including those dang assessment tasks).




New Version 0.07

0 comments

More meaningful startup messages when there are no languages
available, and libraries are now 'soft' fixed because of this new way
of adding languages. You can see the beginnings of the factories to
produce internal languages and dictionaries, but they are not
operational yet, so don't use them, and you can get a feel for where
I'm going with that.

You can also quiz yourself on a list of words by clicking the quiz me
button.

Words 0.07


Quzzing System

0 comments

Have added a rudimentary quizzing system which was surprisingly easy
to implement. Hopefully other learning features will be a simple
matter of grabbing what's in the word array and playing with them in
whichever way!

It's still rudimentary because actually it relies on the 'main' defs,
of which there is still no fully implemented UI to specify. Might do
that next.

No languages defined - means that the intro tab is shown in the main
view... which gives a brief description of usage, and also allows one
to define one's first language to learn.

I want Words to ship with a number of supported languages and
dictionaries, so users can get started right away.

But where to store this data? The likely place is in a separate core
data managed persistent store. But how do I create this database?
With words itself? After all, the persistentStoreCoordinator will
just look for the sql in the spot that I tell it to. If it's not
there, then it should scream, but thing is, if it's INSIDE the
application bundle itself then there is no reason why it shouldn't be
there.

So let's say we have a separate managedObjectContect to manage
'wordsSupportedFilesData' or something like that. Something other
than what I've forever been calling my 'managedObjectContext. It
would be bad programming but it would be fun to call it
'magicObjectContext' :-)

So, if I set up this new dashboard, then I can copy objects from this
one dashboard to the next without much trouble.

Well it took a little bit of staring at code, but now I have two data
stores. The new one is to store my internals...


Burn Out

0 comments

I think I'm a little burnt out...

There are times when you look at it in think, why! Why won't this
work? Will it ever work? And then you think - what if it doesn't? And
even if it does, is anyone going to use it anyway?

Maybe it's time to take a quick step out of implementation land and
look at what end goal I am looking at.

One major area is the definitions view, because I can manage all the
words I want in neat little smart groups, but if I can't learn the
meaning of new words, then words is useless, right?

The definitions view should have some kind of divider between entries
Should be able to indicate where the definitions came from.
Should have some kind of mechanism for choosing definitions. This
must be 'quick and sloppy'.

What about a highlight and click system? Highlight the text that you
want to be set as 'main' and then click a button or press a hot key
to set it. E and D or D C or something configurable.

Extensible type system? Can people actually be bothered with this?

It's an added extra that we might not even need to worry about.

What if the goal of words was more general, so that it was a defining
system for any kind of terms?

Then a dictionary would be simply a data source, somewhere to get
data from.
Google:define etc.


A big chunk of dev notes

0 comments

I have made 6 basic releases through sparkle now, and have gotten
some valuable feedback. Further, I have made some improvements to the
system.

I am sick of my crappy grouping system not working properly, and I
had a brain wave. Why not just bind the groupsArrayController to the
selection of the languageArrayController and ask language objects for
the aggregate lists? This seems to work nicely, and updating is all
working *for free*. I have to work on adding and removing objects.
I've got this working, but the array controller isn't refreshing
itself (you still have to click off the view and back again).

Just to clean off my desktop, here's some other dev notes from the
past week.

------

how about some highlighter tool that lets you select the text to be
used in quizzing? So I dump the text, and you just choose what needs
to be used by highlighting.

So the next step in usability for me is to have that freeform space
for defining words.
(which includes images)

So today's goal is to have that free form space available.

Could even use google define and wikipedia search for terms.

And I want the flow of the program to be more intuitive to 'flow'
from the search bar, as you would in a regular online dictionary.
This will help people ease into using it. So you enter a word in the
search bar, the most natural thing to do, and it tells you

"WORD not found in MANUAL GROUP or in LANGUAGE, looking up word in
ENGLISH dictionary

Add WORD to ENGLISH?

And all the user has to do is hit enter to add it to their list.

Find out how it works (dict.h) and import it into words.

Sweet! Now I can export dictionary objects. It was fairly
straightforward.

Funny how when doing something for the first time in Cocoa you kind
of hold your breath, and loose confidence when things go wrong, but
then when it all comes through you feel more confident about doing
the same thing again elsewhere, and you also realise how simple it
all really is!

With this newfound knowledge I should be able to import and export
dictionaries at will from Words to Words, so that users can download
dictionaries of type 'wordsdict' willy nilly from my website, or be
emailed them from friends, or whatever, and then import them into
their dictionary managers.

I just thought of a nicer interface for managing dictionaries. What
about a column for selecting the languge onb the left, with the
number of available dictionaries in brackets on the right.
English (4)
Japanese (3)

Selecting them shows the current view. Shouldn't be hard to do.

Anyway before doing that it's time for an SVN commit.

The next step I think to make it usable is to support some local
dictionaries, not just remote ones.
I should at this point Finalise the model attributes for dict
protocol dictionaries, because if I am going to start passing
dictionaries around, then I'm going to need them to work with later
versions of Words.
I will also need a way to perhaps modify a dictiionary's attributes.

It's funny the way I cross my fingers every time I commit something
to SVN, because I expect I've broken something in the process.

Drag and Drop system. Moving Words around the system fluidly,
wherever the user wants.
Take the selected words
Bundle them up in the drag operation
Drop them on something.

Which means that group objects and languages need to know how to
accept dropped bundles of words, and manage that appropriately.

I have implemented some basic drag and drop functionality for moving
words around the system.

What about if words actively supports some languages, but still lets
you use Words for languages what aren't actively supported? What
would the difference be?
Making sure that encodings work on certain dictionaries which are
provided.

Custom view for the definitions view. So you can send it
notifications to display certain things, and to behave in a certain way.

Wrap the table view in a custom view... maybe a tab view?, and
connect it up in the same way... then register the custom tab view to
change itself upon receiving a notification or an invocation of a
certain method or something.

How about 'edit type' for word type?? So that the user can specify if
they want. Otherwise, the available types are defined by the
supported language.

It's going to have to register for some3 notfication so that it can
run code when there is nothing or something in the wordArrayController.

When you search in the box, should you be searching for words in a
language, in all language, in the selected list, or what? What is the
scope of the search??


Words Very Beta 0.04

0 comments

Words_0.04.jpg
Here's where I'm at.


Stiiiil not happy with groups

0 comments

Dear oh Dear.

I'm having bindings woes.

It's probably because either me or my bindings aren't gluing together
and being in sync.

Perhaps there's a better architecture for this?

I'll give it a rest tonight.


Drag and Drop

0 comments

The next step I think to make it usable is to support some local
dictionaries, not just remote ones.
I should at this point Finalise the model attributes for dict
protocol dictionaries, because if I am going to start passing
dictionaries around, then I'm going to need them to work with later
versions of Words.
I will also need a way to perhaps modify a dictiionary's attributes.

It's funny the way I cross my fingers every time I commit something
to SVN, because I expect I've broken something in the process.

Drag and Drop system. Moving Words around the system fluidly,
wherever the user wants.
Take the selected words
Bundle them up in the drag operation
Drop them on something.

Which means that group objects and languages need to know how to
accept dropped bundles of words, and manage that appropriately.

I have implemented some basic drag and drop functionality for moving
words around the system.


+RSS | dev blog | Portfolio

About me

My status

Last posts

  • my del.icio.us
  • my flickr