A Thread on Building the What The Fly? App

Dear All,

After some discussion on the forum, I have decided to do a ‘build’ thread. In this thread, you will follow along, and participate, with the creation of an application to help Fly Tyers keep organized. As we go along, you will probably learn more than you wanted to know about Fly Tying. I understand that is part of building a good app. This may also totally fail. I am used to that. It is like acid off a ducks back.

These kinds of ‘build’ threads are very common in the world of moving atoms, but not so much here in the moving electrons world. This is probably due to the difficulty of presenting the development of a coding project in a linear fashion.

And that non-linearity of construction belies the idea that coding is a strictly logical process. It is far more like composing than constructing. So the challenge here trying to have a narrative thread to the composing process.


Galloups’s Sunken Ant, size 18. Tied by TPW

My coding background: I am a hobby developer. I have written apps in XOJO for molecular phylogenetic analysis using methods that I developed during my time as an academic. I’ve also used Perl, C++, and MatLab. That was 10 years ago and did not involve databases. Basically, I am not a total NOOB, but pretty close.

I will be developing the project on a Mac using the latest version of XOJO. The other tools (apps) I think I will use are DBKit, SQLite, SQLiteStudio, OmniGraffle, BBEdit, Perl, and perhaps some XOJO plugins.

Next, a couple of conventions I will use.

Questions to the community will be in bold.
As in:

Then I decided to quadruple the framistam using the biquadFold function.
Should I have used the triFoldQuanternary function?

//Code Inserts will be formatted as code, like
Var Foolish As New CircularReference
Foolish=CircularReference(CircularReference)

If Foolish then
Var AAAHHH As String="AAAAH, I'M FALLING"
AAAAHHH=AAAAHHH+" oh geez"
End If

Foolish=nil

Variables that are mentioned in the text will be italicized. As in, Eggs was decremented by two every time Earl came by for ‘coffee’.

Enough Housekeeping.

So, first is the mission:

•Create an Application that helps Fly Tyers spend more time at the fly tying bench and less time searching for old stuff, new stuff, or materials

Second is:

•Start creating and getting something that is sort of useful and kinda works.

The most basic part of this would be a database of flies and a basic database interface. This will be my first task.

As a first step, I will create create a very simple SQLite database, which I will call WTFdb.Sqlite3

SQLite3 database: WTFdbAlpha.sqlite3
Database table: t_Fly
Database Columns: PRIMARY KEY ID_Fly As Integer , FlyName As String, FlyPhoto As String

This database will be stored inside the folder for this project.

FlyPhoto is a string to store the file path to the FlyPhoto. Thus when I get a photo, I will get get the filepath, resolve that to a FolderItem, then load picture(f). All photos will be stored in a single location to be determined. For now, the photos will be stored in a folder inside the project folder.
Is this the best way to go, or should I store the photos as BLOB directly in the database.

Next I will create a basic UI and use a slightly modified version of DBKit to load data from the WTFdbAlpha.

Any comments, criticisms or wacky ideas are completely appreciated.


TPW Bedraggled Emerger Size 14

Next is the basic user interface.

PS. If anyone wants a few of the flies I will show, send me a pm. Limit 6.

5 Likes

I’ll have get out my vise and head to the flyshop for materials. Expect angry letters from my wife.

For images, as long as they’re not huge, I would put them in their own table:

PRIMARY KEY Image_ID as Integer, Fly_ID as Integer, Image as BLOB

That way, you can corrupt the image table without damaging the fly table.

The database file should really go in SpecialFolder.ApplicationData.

Just my 2 pence.

Two things right off the top:

Do not store things in the project folder (database and photos). Set up a folder in Application Support for your project.

I agree with not storing the photos in the database. I try to keep databases small; storing photos makes them big. Place the photos in Photos folder, which would be in the same place as the database. Since you know where all the photos are, you need only store the file name.

cool project, I will be following this with great interrest :slight_smile: